你使用哪个静态代码分析器(如果有的话)?我一直在使用PyLint for Python,我对它非常满意,现在我需要类似的C代码.
你有多少输出你必须抑制正常的日常使用?
维基百科维护了各种语言(包括C)的静态代码分析工具列表.
就个人而言,我已经使用了PC-Lint
和Splint
.最佳选择取决于您编写的应用程序类型.但是,无论您使用哪种工具,在您正确调整工具和代码之前,信噪比都会很低.
PC-Lint
是我用过的最强大的Lint工具.如果将其添加到现有项目中,则信噪比可能较低.但是,一旦正确配置了工具和代码,就可以将其用作标准构建过程的一部分.我使用它的最后一个主要项目,我们设置它以便PC-Lint
警告会破坏构建.PC-Lint的许可证价格为389美元,但这是值得的.
Splint
是一个很好的开源工具.我在几个项目中使用过它,但发现在使用具有非ANSI C扩展的编译器时(例如在嵌入式系统项目中)可能很难配置.
Valgrind
也值得考虑作为动态分析工具.
您特别要求提供反馈SourceMonitor
.此工具为您的代码提供了有趣的指标,但应该用作良好Lint工具的补充,因为它不提供这种分析.
如其主页所述,SourceMonitor
将:
...找出你有多少代码,并确定模块的相对复杂性.例如,您可以使用SourceMonitor来识别最可能包含缺陷的代码,从而保证正式审核.
我在最近的一个项目中使用它,发现它易于使用(即使是嵌入式系统代码).复杂性度量标准是开发代码的极好资源,这些代码不易出错且易于维护.
SourceMonitor
如果要自动化度量标准收集,则提供其输出的良好图形以及格式良好的XML.唯一的缺点是该工具只能在Windows上运行.
我们使用PC-Lint并对它非常满意.
似乎有一些关于消息抑制和调整的阵营:
抑制一切,然后只解压缩你感兴趣的东西
解除一切,然后压制你不感兴趣的警告
保持一切都不受压迫
我们倾向于介于第二和第三类之间.这确实意味着每个lint在核心库(大量旧代码)上运行时出现了一个荒谬的100MiB +文本转储(每行一个错误).
一个diff
类似于定制的工具可以监视更改并通过电子邮件发送给提交者的作者,这样可以保留大多数人必须查看的数量.我们通过一些基本的数据挖掘收集有关错误的有趣统计数据.
你可以在这里得到真正的打磨,将错误超链接回更详细的描述,提供修复现有警告的"要点"等等......