31

这个关于Cyclomatic Complexity的问题让我对静态代码分析有了更多的思考。分析代码复杂性和一致性有时很有用,我想开始做更多。您推荐哪些工具(每种语言)进行此类分析? 维基百科有很多工具,但人们以前尝试过哪些工具?

编辑:正如 David 所指出的,对于基于 C/UNIX 的工具,这不是一个完全没有被问到的问题。

4

13 回答 13

23

我一直在为我的 Objective-C iPhone 项目(iOS 应用程序)建立一个 Hudson 持续集成 (CI) 构建系统,并编制了一系列可用于在构建期间分析我的项目的工具:

于 2011-05-13T21:40:54.050 回答
6

对于 C 和 Objective-C,您还可以使用LLVM / Clang 静态分析器

它是开源的并且正在积极开发中。

于 2008-08-23T01:19:17.643 回答
5

对于 .Net,我们使用 NDepend。这是一个很棒的工具,可以集成到构建中(我们使用 CCNet)。

http://www.ndepend.com/

HTH。

于 2008-08-21T19:03:18.163 回答
3

对于 C++,我使用 CppCheck。它似乎工作正常。

于 2010-04-26T20:06:23.340 回答
2

Checkstyle、Findbugs 和 PMD 在 Java 中都能很好地工作。我目前对在 NetBeans 中运行 PMD 非常满意。它有一个相当简单的 GUI,用于管理您想要运行的规则。在一个文件、整个包或整个项目上运行检查器也非常容易。

于 2008-08-21T19:04:00.783 回答
2

显然,答案取决于编程语言。UNO适用于 C 程序。

@Thomas Owens:我认为您的意思是夹板。

于 2008-08-21T19:14:40.913 回答
2

我经常使用 Eclipse 的 PMD 插件。它非常好,而且非常可配置。CheckStyle 也很好,如果你正在寻找更多的风格执行者。

于 2008-08-21T19:01:26.047 回答
1

Lint是我在以前的职位上使用过的唯一一种。还不错,它建议的大部分内容都是很好的捕获物,有些没有多大意义。只要您没有适当的流程来确保没有 lint 错误或警告,那么捕获一些其他隐藏的错误可能会很有用

于 2008-08-21T19:03:44.793 回答
1

我们在 Palm 使用Coverity Prevent进行 C 和 C++ 代码分析,它在发现我们代码中的一些隐藏错误方面做得很好。它还发现了很多不太可能被命中的问题,但很容易在工具生成的代码数据库中将它们标记为“不会修复”或“不是问题”。它很昂贵,但该公司偶尔会在开源项目上运行并向维护人员提供报告。如果您想了解更多关于我们的经验,他们会在他们的网站上有一份关于我们使用该产品的白皮书。

于 2008-09-30T08:08:00.337 回答
1

我们将 Programming Research 的QAC用于我们的 C 代码。工作正常。

最近我们一直在讨论检查一些更高级的静态/动态代码分析器,例如 Coverity 的Prevent或GrammaTech的分析工具。

他们声称不仅可以进行静态分析,还可以发现运行时错误等。一个主要卖点应该是更少的误报。

于 2008-08-23T01:11:19.583 回答
1

我的管理员真的很便宜,所以我只能使用非常便宜的工具:

1) CCCC (C/C++ 代码计数器):与行数相关的各种结果(与注释行数、圈复杂度、信息流......) 2) Semian:我试过的最快的代码重复查找器。3) LOC Metrix:不是很有用,但可以帮助说明问题。

于 2010-04-26T20:55:40.170 回答
0

我唯一一次使用过这些工具之一是Split(C 编程语言)。我认为它很有帮助,但我绝不是一个超级用户,我想我几乎没有触及它可以做什么的表面。

于 2008-08-21T19:00:04.070 回答
0

我已经在多种语言中使用了相当多的开源和商业静态分析工具,并且我发现整体讨论适合被称为技术债务的概念(本文详细介绍)。

然而,为了快速回答,这里是我最喜欢的每种语言:

于 2011-05-06T06:50:07.807 回答