我需要在第一次构建时对整个项目运行这些静态分析工具,然后在每个增量构建中仅对修改的文件集运行。并将修改文件的结果合并到完整结果中,以便我知道工具验证计数。
是否有ant任务可用于上述要求?
我需要在第一次构建时对整个项目运行这些静态分析工具,然后在每个增量构建中仅对修改的文件集运行。并将修改文件的结果合并到完整结果中,以便我知道工具验证计数。
是否有ant任务可用于上述要求?
我不确定是否有一个简单的选项可以解决你的问题。 工具无法动态识别只修改过的文件,而不是针对配置中给出的完整路径(例如:源路径/二进制路径)执行工具。由于您想保留以前的结果,这有点复杂。
首先,您需要找出在增量构建执行时是否有一种获取修改文件列表的方法。如果可能的话,那么您可以修改ant目标,将仅修改的文件复制到临时位置,并将其指向工具。
然后与之前的报告合并, 首先,在上述ant目标执行之前,您必须备份现有报告。然后编写一个xsl,用新报告中包含的信息替换现有报告中的信息。通过使用ant执行xsl创建一个单独的报告。因此,报告将包含您需要的结果。
如果您的CI系统可以创建它认为已更改的文件列表(我假设它可以,因为它用于编译),那么您应该至少能够部分地实现结果。
对于CheckStyle和PMD,它们的ant任务采用文件集,这些文件集给出应运行分析的文件。只提供更改的文件。
至少根据文档,FindBugs无法做到这一点。这是有道理的,因为有许多FindBugs检测器读取除了被检查的文件之外的其他文件来完成它们的工作。因此,FindBugs分析可能会因可用于分析的其他文件而针对同一文件产生不同的结果。
最终您将无法获得汇总报告。相反,工具生成的报告仅包括有关实际检查的文件的信息。这可能足以决定是否使构建失败。
[如果您想在更大的范围内进行此操作,跟踪规则合规性、技术债务等方面的发展,我建议使用免费的SonarQube工具。SonarQube还可以与您的CI系统集成。不过它不会进行增量运行。更新:自SonarQube 4.0版本以来,增量分析是可能的。请参见这里中的“增量分析”。]