您使用什么工具进行静态代码分析?

时间:2008-08-21 18:58:51

标签: code-analysis

This question上的

Cyclomatic Complexity让我更多地考虑static code analysis。分析代码复杂性和一致性偶尔会有用,我想开始做更多。您建议使用哪种工具(按语言)进行此类分析? Wikipedia有大量工具,但以前有人尝过哪些工具?

编辑:正如大卫所指出的那样,C/UNIX based tools涉及的问题不是一个完全没有问题的问题。

14 个答案:

答案 0 :(得分:23)

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

答案 1 :(得分:6)

对于C和Objective-C,您还可以使用LLVM / Clang Static Analyzer

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

答案 2 :(得分:5)

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

http://www.ndepend.com/

HTH。

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

如果您正在寻找基于C / UNIX的工具,请参阅问题Choosing a static code analysis tool

答案 7 :(得分:2)

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

@Thomas Owens:我认为你的意思是Splint。

答案 8 :(得分:1)

Lint是我以前唯一使用的位置。它并不坏,它建议的大多数东西都是好的捕获,有些没有多大意义。只要您没有适当的流程来确保没有lint错误或警告,那么捕获一些隐藏的错误也很有用

答案 9 :(得分:1)

我们使用Programming Research的{​​{3}}作为我们的C代码。工作正常。

最近,我们一直在讨论检查一些更先进的静态/动态代码分析器,如Coverity的QAC或分析工具Prevent

他们声称不仅要进行静态分析,还要发现运行时错误等。一个主要卖点是误报率较低。

答案 10 :(得分:1)

我们在Palm上使用Coverity Prevent进行C和C ++代码分析,并且在我们的代码中发现了一些隐藏的错误。它还发现很多不太可能出现问题,但很容易在工具生成的代码数据库中将其标记为“无法修复”或“无问题”。它很昂贵,但该公司偶尔会在开源项目上运行,并向维护人员提供报告。如果您想了解更多有关我们体验的信息,他们的网站上会有a whitepaper about our use of the product

答案 11 :(得分:1)

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

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

答案 12 :(得分:0)

我曾经使用其中一种工具的唯一一次是Split(C编程语言)。我认为它很有帮助,但我绝不是一个超级用户,而且我认为我几乎没有触及它可以做什么的表面。

答案 13 :(得分:0)

我在很多语言中使用了很多开源和商业静态分析工具,我发现整体讨论都属于技术债务(which this article goes into detail about)概念的保护范围。

然而,对于快速回答,这是我最喜欢的每种语言: