将静态分析工具相互集成?

时间:2008-09-17 04:17:18

标签: java code-analysis static-analysis

人们如何整合各种静态分析工具,如PMD,Checkstyle和FindBugs,以便它们以统一的方式一起使用?特别是,我有兴趣生成一个统一的报告,其中包含来自所有工具的警告。此外,我希望能够通过合理一致的警告抑制来标记我的代码。

这里我的问题并不是要解决工具“重叠”,比如PMD和Checkstyle正在寻找相同的东西。那是另一个问题。

请参阅我的 thoughts on the matter in an answera related question部分内容。

5 个答案:

答案 0 :(得分:2)

今天我偶然发现了JcReport,我认为这正是你要找的。至少,它以组合的方式处理报告;抑制仍然是特定于工具的。该工具声称支持自动将PMD,CPD,FindBugs,CheckStyle和Cobertura的输出集成到单个HTML报告中。

我还没有尝试过,但很快就打算这么做。

答案 1 :(得分:2)

另一种选择是收集。 http://jbrugge.com/glean/

从他们的网站:Glean是一个Ant脚本框架,用于生成团队源代码的反馈。 Glean的目标是尽可能减少对构建周期的反馈。这些脚本驱动了许多开源工具并收集生成的HTML,以便您部署到项目网站或其他一些常见的团队区域。在每日构建周期结束时添加它,这是一种快速的方法,可以在一个地方保持大量反馈源的最新状态。

答案 2 :(得分:1)

我不清楚你的书中有什么资格作为单一的统一报告,但这就是我的工作。

我使用Maven2进行构建,使用它可以配置一系列报告插件(包括PMD,CPD,checkstyle,coberturba等)。 Maven还将为您的项目自动生成一个网站(网站插件),其中包含易于浏览的网页格式的所有报告。

答案 3 :(得分:0)

如果您使用Maven构建项目,并且已将这些工具“插入”到Maven构建中,那么为构建生成的Maven报告将包含这些静态分析工具的输出。

答案 4 :(得分:0)

感谢您的回复!

这里的目标是配置这些工具,使它们以相似的方式相互作用。这不仅仅是简单地转储他们自动生成的任何报告,或者使用他们开箱即用的任何警告抑制提示。

例如,我将PMD,Checkstyle和FindBugs配置为以下列格式报告所有警告:

/absolute-path/filename:line-number:column-number: warning(tool-name): message

所以警告可能如下所示:

/project/src/com/example/Foo.java:425:9: warning(Checkstyle): Missing a Javadoc comment.

此外,我的源代码中的所有警告抑制都标有包含字符串“SuppressWarnings”的符号,无论静态分析工具是否被抑制。有时这个符号是一个注释,有时它在注释中,但它总是有这个名称。

我会更详细地解释这些想法here