关于java:将静态分析工具相互集成吗?

关于java:将静态分析工具相互集成吗?

Integrating static analysis tools with each other?

人们如何集成各种静态分析工具(例如PMD,Checkstyle和FindBugs),以便以统一的方式一起使用它们? 特别是,我希望生成一个包含所有工具的警告的统一报告。 另外,我希望能够以合理一致的外观警告禁止标记我的代码。

我的问题并不是要解决"重叠"工具,例如PMD和Checkstyle在寻找相同的东西。 那是另一个问题。

请回答有关问题,以了解我对此事的一些想法。


另一个选择是glean。 http://jbrugge.com/glean/

在他们的网站上:Glean是一个Ant脚本框架,用于生成有关团队源代码的反馈。 Glean的目标是使您尽可能减少痛苦地向构建周期添加反馈。脚本驱动了许多开源工具,并收集了生成的HTML,供您部署到项目网站或其他一些常见的团队区域。在每日构建周期结束时添加它,这是一种将多个反馈源保持在一个位置的最新方法。


我今天偶然发现了JcReport,它确实可以满足您的需求。至少,它以组合方式处理报告;抑制仍然是特定于工具的。该工具声称支持自动将PMD,CPD,FindBugs,CheckStyle和Cobertura的输出集成到单个HTML报告中。

我还没有尝试过,但绝对打算尽快。


我不清楚您的书中哪些内容可以视为统一报告,但这是我的工作。

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


感谢您的回复!

此处的目标是配置这些工具,以使它们彼此之间以某种相似的方式运行。这不仅仅是简单地转储他们自动生成的任何报告,或者使用现成的警告抑制提示。

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

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

因此,警告可能如下所示:

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

另外,无论使用哪种静态分析工具,我的源代码中的所有警告抑制均都用包括字符串" SuppressWarnings"的符号标记。有时,该符号是注释,有时是在注释中,但始终具有该名称。

我在这里更详细地解释这些想法。


如果使用Maven构建项目,并且将这些工具"插入"到Maven构建中,则为该构建生成的Maven报告将包括这些静态分析工具的输出。


推荐阅读