问题描述
我们使用许多旧代码,我们考虑为新代码引入一些指标.是否可以让Findbugs和Checkstyle仅在更改的文件而不是完整的项目上运行?
We work with a lot of legacy code and we think about introducing some metrics for new code. Is it possible to let Findbugs and Checkstyle run on changed files only instead of a complete project?
最好确保仅检入质量最低的文件,但尚未(尚未)触碰和评估代码库本身,以免使成千上万的问题引起人们的困惑.
It would be nice to assure that only file with a minimum of quality is checked in, but the code base itself is not (yet) touched and evaluated not to confuse people by thousands of issues.
推荐答案
从理论上讲,这是有可能的.在给定开始日期之后,您将使用Shell脚本来解析SVN(或任何SCM)更改日志,从这些更改集中识别.java文件,并从中建立两种模式:
In theory, it would be possible. You would use a shell script to parse the SVN (or whatever SCM) change logs after a given start date, identify the .java files from these change sets and build two patterns from these:
- Findbugs Maven插件要求使用逗号分隔的类列表(或包)的参数名称
onlyAnalyze
你将有将文件名转换为完全限定的类名(这将得到处理内部类时比较棘手) - Maven Checkstyle插件更糟,它期望其
packageNamesLocation
参数的配置文件.不幸的是,只允许使用包,而不允许单个文件.所以您将不得不将文件名转换为包.
- The Findbugs Maven Plugin expects a comma-separated list of class (orpackage) names for the parameter
onlyAnalyze
, so you'll haveto translate file names to fully qualified class names (this will gettricky when you're dealing with inner classes) - The Maven Checkstyle Plugin is even worse, it expects aconfiguration file for its
packageNamesLocation
parameter.Unfortunately, only packages are allowed, not individual files. Soyou'll have to translate file names to packages.
在以上示例中,我假设您正在使用maven.我很确定蚂蚁可以完成类似的事情,但我不知道.
In the above examples I assume that you are using maven. I am pretty sure that similar things can be done with ant, but I wouldn't know.
我本人可能会使用Groovy脚本而不是Shell脚本来实现上述结果.
I myself would probably use a Groovy script instead of a shell script to achieve the above results.
这篇关于Checkstyle和Findbugs仅在Jenkins(和/或Hudson)上查找更改的文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!