Checkstyle和Findbugs仅用于Jenkins(和/或Hudson)上的已更改文件

Ric*_*wig 5 hudson findbugs checkstyle jenkins

我们使用了大量遗留代码,并考虑为新代码引入一些指标.是否可以让Findbugs和Checkstyle仅运行已更改的文件而不是完整的项目?

确保只检查质量最低的文件是很好的,但代码库本身(尚未)触及并评估不会使人们因成千上万的问题而混淆.

Sea*_*oyd 3

理论上来说,这是可能的。您将使用 shell 脚本在给定的开始日期之后解析 SVN(或任何 SCM)更改日志,从这些更改集中识别 .java 文件并从中构建两个模式:

  • Findbugs Maven 插件需要参数的逗号分隔的类(或包)名称列表onlyAnalyze,因此您必须将文件名转换为完全限定的类名(当您处理内部类时,这会变得很棘手)
  • Maven Checkstyle Plugin更糟糕,它需要一个packageNamesLocation参数的配置文件。不幸的是,只允许包,而不允许单个文件。因此,您必须将文件名转换为包。

在上面的示例中,我假设您使用的是 Maven。我很确定 ant 可以完成类似的事情,但我不知道。

我自己可能会使用 Groovy 脚本而不是 shell 脚本来实现上述结果。