检查样式,PMD,增量构建中的FindBugs

时间:2012-11-03 05:01:35

标签: findbugs checkstyle pmd incremental-build

我打算逐步在项目上运行检查样式。现在我的CI服务器正在进行增量构建,即仅对已修改的文件和依赖项运行单元测试。但对于检查风格,PMD,Findbugs我们在整个项目上运行而不是仅在修改过的文件上运行。

我需要在整个项目中运行这些静态分析工具以进行第一次构建,然后在每次增量构建运行仅针对修改过的文件集运行。并合并修改文件的结果以完成结果,这样我就可以知道工具验证是否重要。

是否有针对上述要求的蚂蚁任务?

2 个答案:

答案 0 :(得分:0)

我不确定是否有直接的选项可以解决您的问题。 工具无法动态识别仅修改的文件,而不是针对配置中给出的完整路径执行工具(例如:源路径/二进制路径)。由于您希望保留以前的结果,因此这有点复杂。

首先,您需要确定是否有一种方法可以在增量构建执行时获取已修改文件的列表。如果可以,则可以修改ant目标以仅将修改后的文件复制到temp中。位置并指向工具。

然后与之前的报告合并, 首先,您必须在执行上述ant-target之前备份现有报告。然后编写一个xsl,用新报告中包含的信息替换现有报告中的信息。通过执行xsl using ant创建单独的报告。因此该报告将包含您需要的结果。

答案 1 :(得分:0)

如果您的CI系统可以创建它认为已更改的文件列表(我认为它可以,因为它使用了这样的列表进行编译),那么您应该能够至少部分地实现结果。

对于CheckStyle和PMD,他们的ant任务采用文件集,这些文件集提供应运行分析的文件。只给他们改变的文件。

FindBugs,至少according to the documentation,不能这样做。这是有道理的,因为有许多FindBugs探测器读取除了为了完成工作而检查的文件以外的文件。因此,FindBugs分析可以为同一文件生成不同的结果,具体取决于可用于分析的其他文件。

最终您将无法获得合并报告。相反,来自工具的报告将仅包含有关实际检查的文件的信息。这可能足以决定是否使构建失败。

[如果您想要更大规模地执行此操作,跟踪规则合规性,技术债务等的发展,我建议使用免费的SonarQube工具。 SonarQube还与您的CI系统集成。但是,它不会进行增量运行。 更新:自SonarQube 4.0版以来,可以进行增量分析。请参阅“增量分析”下的here。]