Невозможно создать корневой модуль: config {... config / strict_checkstyle.xml}, classpath {null} - PullRequest
0 голосов
/ 05 марта 2019

У нас есть скрипт Gradle, который запускает Checkstyle:

apply plugin: 'checkstyle'

checkstyle {
    configFile rootProject.file('config/strict_checkstyle.xml')
    ignoreFailures false
    showViolations true
    toolVersion = rootProject.ext.checkstyleVersion
}

task Checkstyle(type: Checkstyle) {
    configFile rootProject.file('config/strict_checkstyle.xml')
    source 'src'
    ignoreFailures false
    showViolations true
    include '**/*.java'
    classpath = files()
}

// adds checkstyle task to existing check task
afterEvaluate {
    if (project.tasks.getByName("check")) {
        check.dependsOn('checkstyle')
    }
}

с этим strict_checkstyle.xml файлом:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">

<module name="Checker">

    <module name="FileLength"/>
    <module name="FileTabCharacter"/>

    <module name="TreeWalker">

        <module name="SuppressionXpathFilter">
            <property name="file" value="config/app_checkstyle_suppressions.xml"/>
            <property name="optional" value="false"/>
        </module>

        <module name="SuppressionXpathFilter">
            <property name="file" value="config/api_checkstyle_suppressions.xml"/>
            <property name="optional" value="false"/>
        </module>


        <!-- Checks for imports -->
        <!-- See http://checkstyle.sf.net/config_import.html -->
        <module name="AvoidStarImport"/>
        <module name="IllegalImport"/>
        <module name="RedundantImport"/>
        <module name="UnusedImports"/>

        ...

Как вы можете видеть, мы настроили базовую линию подавления для наших двухмодули Gradle app и api.Это работает на нашей машине CI и на всех наших машинах разработки, кроме одной.Он получает эту ошибку:

What went wrong:
Execution failed for task ':module:Checkstyle'.
> Unable to create Root Module: config {/Users/user/our_application/config/strict_checkstyle.xml}, classpath {null}.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Работа с --stacktrace показывает проблему:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':component:Checkstyle'.
...
Caused by: : Unable to create Root Module: config {/Users/user/our_application/config/strict_checkstyle.xml}, classpath {null}.
...
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - Unable to find: config/app_checkstyle_suppressions.xml
...
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Unable to find: config/app_checkstyle_suppressions.xml
...
Caused by: java.io.FileNotFoundException: /Users/user/.gradle/daemon/5.1.1/config/app_checkstyle_suppressions.xml (No such file or directory)

Либо Checkstyle, либо Gradle ищет в пользовательском sytem gradleкаталог, а не ж / в каталоге нашего собственного приложения.Поэтому разработчик обновил файл checkstyle.xml, указав полный путь:

   <module name="SuppressionXpathFilter">
            <property name="file" value="/Users/user/our_application/config/app_checkstyle_suppressions.xml"/>
            <property name="optional" value="false"/>
        </module>

Тогда все работает нормально.Так почему Checkstyle / Gradle не распознает, что config/app_checkstyle_suppressions.xml является правильным относительным путем?Почему это происходит только на одной машине разработчика?

...