【问题标题】:Code metrics and warnings for C++ [closed]C++ 的代码指标和警告 [关闭]
【发布时间】:2010-11-01 15:40:19
【问题描述】:

我有一个用 C++ 编写的全新代码库。我已经开始看到项目中出现了一些不好的做法(具有 1000 多行代码的类文件、具有大量参数的函数……)。

我想立即停止使用一些自动化工具,这些工具可以连接到构建并检查不良编码实践。您对此类工具有什么建议?我对度量很感兴趣,但对一种风格的 lint 更感兴趣,它会突出显示具有 37 个参数的函数。

【问题讨论】:

标签: c++ code-metrics


【解决方案1】:

很抱歉,我无法在样式方面为您提供帮助,但这是一个支持 C++ 并且是 free: SourceMonitor 的出色度量工具。

特别是,您将获得良好的信息,例如 Cyclomatic Complexity(我发现不良编程实践比参数数量更有价值),以及代码行数、cmets 百分比、最长函数等。

试一试——它也非常快。

【讨论】:

  • 使用此工具时,请尝试Modified Complexity。我引用了 SourceMonitor 帮助:Modified Complexity metric 选项改变了为添加到项目中的新检查点定义复杂性度量的方式。启用此选项后,SourceMonitor 通过将每个 switch 语句的复杂度加一来计算复杂度度量。 switch 语句中的 case 语句会针对其他指标进行解析,但 case 语句本身不会增加复杂性(就像未启用此选项时那样).
【解决方案2】:

与其他人一样,我不确定有什么工具可以判断风格。但是CCCC 会产生大量指标,可以帮助您找到问题所在。圈复杂度等指标将为您提供问题点所在的定量证据。缺点是您必须将这些指标与您自己采用或创建的样式指南结合起来。

【讨论】:

  • 请注意,现在 CCCC 已经过时了。他们网站上的最新活动是从 2002 年开始的,仅支持 Microsoft Visual Studio 2003 框架。我在运行它时也遇到了麻烦,因为它对用户不太友好。我强烈推荐 SourceMonitor:campwoodsw.com/sourcemonitor.html,正如 Torial 所建议的那样。
  • @ForceMagic:我相信在不运行 Windows 时 CCCC 仍然是一个可行的选择,因为 SourceMonitor 似乎确实需要 Windows。还有一个 Jenkins 插件可以将其连接到构建中并可视化回归。
【解决方案3】:

Metrix++ 匹配这个用例,并且有几个你可能感兴趣的指标。在这里查看:http://metrixplusplus.sourceforge.net/

【讨论】:

  • 当你推荐自己的产品时,通常认为它是一种很好的形式。
  • 谢谢。会知道这一点并下次做。答案仍然与问题相符。
【解决方案4】:

确保始终使用 -Wall 编译器选项进行编译,并确保在警告持续存在时不签入任何代码。

找到一个可以遵循的标准风格,比如this one

【讨论】:

  • -Wall 不会自动警告 OP 提到的问题(长函数,高圈复杂度)。
  • 您的 this one 链接已损坏,这使得整个句子毫无用处。也许您引用的是Google C++ Style Guide
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多