What tools do you use for static code analysis?关于循环复杂性的问题使我对静态代码分析有了更多的思考。 分析代码的复杂性和一致性有时会很有用,我想开始做更多的事情。 您建议(每种语言)使用哪些工具进行此类分析? 维基百科提供了大量工具,但是人们以前尝试过哪些工具? 编辑:正如David指出的那样,当涉及基于C / UNIX的工具时,这并不是一个尚未完全解决的问题。 我一直在为我的Objective-C iPhone项目(iOS应用程序)建立一个Hudson持续集成(CI)生成系统,并编译了各种各样的工具,这些工具可用于在生成过程中分析我的项目:
对于C和Objective-C,您还可以使用LLVM / Clang静态分析器。 它是开源的并且正在积极开发中。 对于.Net,我们使用NDepend。它是一个很棒的工具,可以集成到构建中(我们使用CCNet)。 http://www.ndepend.com/ HTH。 对于C ++,我使用CppCheck。看来工作正常。 显然,答案取决于编程语言。 UNO非常适合C程序。 @Thomas Owens:我想你是说夹板。 如果您正在寻找基于C / UNIX的工具,还请参见选择静态代码分析工具的问题。 Checkstyle,Findbugs和PMD在Java中都可以很好地工作。我目前对NetBeans中运行的PMD感到非常满意。它具有一个相当简单的GUI,用于管理您要运行的规则。在一个文件,整个包或整个项目上运行检查器也非常容易。 我在Eclipse中经常使用PMD插件。它非常好,而且可配置。如果您正在寻找更多的样式执行器,则CheckStyle也很好。 我的管理员真的很便宜,所以我只能使用真正便宜的工具:
1)CCCC(C / C ++代码计数器):与行数有关的各种结果(与注释行,圈复杂度,信息流等相对) 我们使用Palm的Coverity Prevent进行C和C ++代码分析,并且在发现代码中的一些隐藏错误方面做得非常好。它还发现了很多不太可能遇到的问题,但是很容易在工具生成的代码数据库中将其标记为"无法解决"或"不是问题"。它很昂贵,但是公司偶尔会在开源项目上运行,并向维护者提供报告。如果您想了解更多有关我们的经验,他们会在他们的网站上提供有关我们使用该产品的白皮书。 我们对C代码使用Programming Research的QAC。工作正常。 最近,我们一直在谈论签出一些更高级的静态/动态代码分析器,例如Coverity's Prevent或GrammaTech的分析工具。 他们声称不仅可以进行静态分析,还可以发现运行时错误等。一个主要卖点是应该减少误报。 Lint是我在上一个职位上使用过的唯一工具。情况还不错,它建议的大多数内容都是不错的收获,有些没有什么意义。只要您没有适当的流程来确保没有皮棉错误或警告,那么捕获一些其他隐藏的错误很有用。 我已经在多种语言中使用了相当多的开源和商业静态分析工具,并且我发现总体讨论符合称为技术债务的概念(本文将对此进行详细介绍)。 不过,为了快速解答,以下是我最喜欢的每种语言:
我唯一使用过这些工具之一的就是Split(C编程语言)。我认为这是有帮助的,但我绝不是超级用户,我认为我几乎不了解它可以做什么。 |