我希望有机会将commit / changeset中的* .java文件列表传递给预提交钩子,该钩子将检查这些java文件的代码样式。
我尝试使用maven-checkstyle-plugin,但看起来无法将任意文件列表传递给它。此外,运行mvn site
构建报告,这些报告不应该像人类可读的实体一样使用,因此在python脚本中使用此报告并不是一件容易的事情(基本上是mercurial钩子)。
所以问题是:如何在命令行中检查任意* .java文件列表(就像我们用pep8检查任意python文件列表,或者用jshint / jslint检查javascript文件)?
通过样式检查我的意思不仅是打印报告到stdout而且以某种方式返回最终结果 - 文件是否已经通过了指南。
答案 0 :(得分:8)
如果我理解正确,你想检查项目中的所有Java资源,只检查一些特定的文件吗?
# this checks all *.java sources
mvn checkstyle:checkstyle -Dcheckstyle.includes=**\/*.java
# this checks only sources matched by Foo*.java
mvn checkstyle:checkstyle -Dcheckstyle.includes=**\/Foo*.java
# this checks only sources matched by Foo*.java and the source Bar.java
mvn checkstyle:checkstyle -Dcheckstyle.includes=**\/Foo*.java,**\/Bar.java
在所有情况下,结果都是
# for your further automatic processing
target/checkstyle-result.xml
# for humans to read
target/site/checkstyle.html
欢呼声
答案 1 :(得分:0)
SubOptimal提出的解决方案可以与Suppression Filter结合使用:它允许使用正则表达式来排除检查文件的名称,甚至指定一些行范围。