【问题标题】:How can I disable checkstyle rules for tests in gradle?如何禁用 gradle 中测试的 checkstyle 规则?
【发布时间】:2025-12-17 23:35:02
【问题描述】:

使用 maven 我禁用了 checkstyle 进行测试,如何在 gradle 中禁用 checkstyleTest 任务?

我已经分别尝试过这些变体

checkstyle {
  toolVersion = '6.10.1'
  exclude '**/*Test.java'
}
checkstyleTest {
   sourceSets = []
}

一切都以错误告终

【问题讨论】:

    标签: gradle checkstyle


    【解决方案1】:

    显然,您可以将checkstyleTest 上的未记录(可能记录不足?可能是继承或其他)enabled 属性设置为false。 /p>

    checkstyle {
      toolVersion = '6.10.1'
      checkstyleTest.enabled = false
    }
    

    【讨论】:

    • 只是一个小提示:checkstyleTest.enabled = false 可以位于 checkstyle 块之外,因为它引用了名为 checkstyleTest 的任务。 enabled 属性继承自 Task
    【解决方案2】:

    最简洁的方法是告诉 Gradle 只执行您需要的 Checkstyle 任务,如下所示:

    checkstyle {
        toolVersion = '6.10.1'
        sourceSets = [project.sourceSets.main]
    }
    

    只是禁用不需要的任务也可以,但我认为以上更清洁。

    在上面的例子中,checkstyleTest 任务将保留在任务列表中,即使它没有被执行。我更喜欢干净的任务列表,因此您可以通过

    删除未使用的任务
    project.tasks.remove(project.tasks['checkstyleTest']);
    

    【讨论】:

    • Task with path 'checkstyleTest' not found in root project '[...]' 如果我在build.gradle 的底部添加.remove()。应该去哪里?
    【解决方案3】:
    task checkstyle(type: Checkstyle) {
        configFile file("${project.rootDir}/app/checkstyle.xml")
        source 'src'
        include '**/*.java'
        exclude '**/androidTest/**'
    
        classpath = files()
    }
    

    【讨论】:

    • 请在此处添加更多详细信息
    【解决方案4】:

    在 staticAnalysis 块中将 checkstyleEnabled 设置为 false

    staticAnalysis {
        checkstyleEnabled = false
    }
    

    【讨论】:

      【解决方案5】:

      正如我在另一篇帖子link中所说的那样

      试试这个

      tasks.withType(Checkstyle) {
          ignoreFailures true
          exclude '**/**'
      }
      

      【讨论】:

        【解决方案6】:

        您可以将 sourceSets 设置为空数组(或 [] )以跳过任务。 https://docs.gradle.org/current/dsl/org.gradle.api.plugins.quality.CheckstyleExtension.html#org.gradle.api.plugins.quality.CheckstyleExtension:sourceSets

        您也可以使用“-x checkstyleTest”通过命令行排除任务。

        【讨论】:

        • 我应该把sourceSets放在我的文件中的哪个位置?似乎很多时候当我尝试添加这样的东西时它不起作用,因为它不在正确的位置,而且我还不完全理解文档所指的代码区域。
        • 看看当我添加sourceSets = []时,它最终没有运行checkstyle period,而不仅仅是没有运行它进行测试