我试图将checkstyle与Android项目集成 - 我的build.gradle位于下方。我基本上会看到警告,这些警告标识了缺少构建文档的代码。使用此配置,我看到一个名为checkstyle的gradle任务,我可以手动执行,但在重建项目时没有调用它(即使我右键单击任务并说重建执行')
我必须遗漏一些东西,因为似乎其他人遇到了完全相反的问题,并试图阻止它在构建上运行。我究竟做错了什么?
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
apply plugin: 'checkstyle'
task checkstyle(type: Checkstyle) {
configFile file("${project.rootDir}/config/checkstyle/checkstyle.xml")
source 'src'
include '**/*.java'
exclude '**/gen/**'
reports {
xml.enabled = true
}
classpath = files()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}

答案 0 :(得分:5)
看来我找到了自己问题的答案 - here
首先在根级别创建任务
allprojects {
repositories {
jcenter()
}
task checkstyle(type: Checkstyle) {
showViolations = true
configFile file("../settings/checkstyle.xml")
source 'src/main/java'
include '**/*.java'
exclude '**/gen/**'
exclude '**/R.java'
exclude '**/BuildConfig.java'
// empty classpath
classpath = files()
}
}
然后在模块级别添加依赖项。这些只是附加在项目的现有build.gradle文件的末尾。
apply plugin: 'checkstyle'
preBuild.dependsOn('checkstyle')
assemble.dependsOn('lint')
check.dependsOn('checkstyle')
答案 1 :(得分:3)
几个月前我不得不这样做......经过大量的研究和寻找。
apply plugin: 'checkstyle'
task checkstyle(type: Checkstyle) {
// Cleaning the old log because of the creation of the new ones (not sure if totaly needed)
delete fileTree(dir: "${project.rootDir}/app/build/reports")
source 'src'
include '**/*.java'
exclude '**/gen/**'
// empty classpath
classpath = files()
//Failing the build
ignoreFailures = false
}
checkstyle {
toolVersion = '6.18'
}
project.afterEvaluate {
preBuild.dependsOn 'checkstyle'
}
这个很重要的部分很重要。 preBuild是每次构建时执行的第一个任务,但是在gradle运行之前它是不可见的,所以你需要.afterEvaluate。使用这种checkstyle是第一个运行的东西。在上面的代码中,您可以将ignorefailures设置为true,如果检查的严重性设置为Error,则它将使构建失败,如果只有warrnings则不会。
BTW这需要在模块gradle文件中,例如build.gradle(Module:app)