3

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

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

是否有任何蚂蚁任务可用于上述要求?

4

2 回答 2

0

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

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

FindBugs,至少根据文档,不能这样做。这是有道理的,因为有许多 FindBugs 检测器会读取除已检查文件之外的文件以完成工作。因此,根据可用于分析的其他文件,FindBugs 分析可能会为同一文件产生不同的结果。

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

[如果你想更大规模地做这件事,跟踪规则合规性、技术债务等的发展,我推荐免费的SonarQube工具。SonarQube 还与您的 CI 系统集成。但是,它不会进行增量运行。更新:从 SonarQube 4.0 版开始,可以进行增量分析。请参阅此处的“增量分析”。]

于 2014-01-28T20:49:01.440 回答
0

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

首先,您需要了解是否有办法在增量构建执行时获取修改文件的列表。如果可能,那么您可以修改 ant 目标以仅将修改后的文件复制到临时文件中。位置并将其指向工具。

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

于 2012-12-24T04:07:43.520 回答