web-dev-qa-db-fra.com

Style de contrôle, impossible de créer le module racine

J'essaie de configurer Checkstyle dans le projet. J'ai ajouté:

    apply plugin: 'checkstyle'
    checkstyle {
        // assign the latest checkstyle version explicitly
        // default version is very old, likes 5.9
        toolVersion = '8.6'
        // checkstyle.xml copy from:
        // https://raw.githubusercontent.com/checkstyle/checkstyle/checkstyle-8.6/src/main/resources/google_checks.xml
        // the version should be as same as plugin version
        configFile = rootProject.file('config/checkstyle/checkstyle.xml')
    }
    task Checkstyle(type: Checkstyle) {
        source 'src/main/Java'
        include '**/*.Java'
        exclude '**/gen/**'
        exclude '**/R.Java'
        exclude '**/BuildConfig.Java'

        // empty classpath
        classpath = rootProject.files()
    }

dans mon fichier de classement racine dans allprojects.

Mais quand je lance ./gradlew checkstyle

Je reçois:

* What went wrong:
Execution failed for task ':app:Checkstyle'.
> Unable to create Root Module: config {/Users/user/Development/project/config/checkstyle/checkstyle.xml}, classpath {null}.

Même le fichier avec les règles se trouve dans le répertoire spécifié.

7
Dawid Hyży

Le problème était qu'il ne pouvait pas trouver le fichier de règles. Alors j'ai changé:

configFile = rootProject.file('config/checkstyle/checkstyle.xml')

à:

configFile = file("${rootDir}/config/checkstyle/ckeckstyle.xml")

et maintenant il le ramasse correctement.

0
Dawid Hyży

J'ai eu cette erreur lorsque config/checkstyle/checkstyle.xml contenait une référence à un fichier inexistant. Dans mon cas, via:

<module name="SuppressionFilter">
    <property name="file" value="config/checkstyle/checkstyle-suppressions.xml"/> <!-- Oops: No such file! -->
</module>

La création du fichier config/checkstyle/checkstyle-suppressions.xml a résolu le problème.

Si cela aide, son contenu (avec le même en-tête que checkstyle.xml) est le suivant:

<suppressions>
    <suppress files="/generated/" checks="\w+"/>
    <suppress files="/test/" checks="\w+"/>
</suppressions>
1
Bohemian

J'ai eu un problème très similaire, et j'ai essentiellement utilisé la réponse de @ Bohemian. checkStyle n'a pas pu trouver de fichier, donc je l'ai nourri de force comme il le voulait. Dans mon cas, la cause principale était que le plug-in Gradle pour NetBeans ne propage pas correctement toutes les variables "d'environnement". Une référence à ${basedir}/config/checkstyle/import-control.xml a donc échoué. Lorsque checkStyle est en cours d'exécution dans NetBeans, ${basedir} est défini sur $USER_HOME au lieu de la racine du projet. Pour contourner le problème, j'ai copié les fichiers requis dans mon répertoire personnel, ce qui permet à checkStyle de fonctionner correctement.
Moche, mais mieux que rien.

0
Charlweed

Cette erreur se produit chaque fois que le fichier de configuration ne peut pas être lu. Êtes-vous sûr d'avoir un fichier /Users/user/Development/project/config/checkstyle/checkstyle.xml?

0
Hamdi Douss

J'avais aussi un problème similaire et le même message d'exception. Les étapes suivantes ont résolu mon problème: 

Version de l'outil mise à jour à 8.16. Avant, j'avais 8.1 J'utilisais 'configDir' au lieu de la propriété 'configFile'. 

configDir = file("$rootProject.projectDir/etc/checkstyle")

Avant c'était: 

configFile = file("$rootProject.projectDir/etc/checkstyle/checkstyle.xml")

De plus, j'avais une propriété 'reportDir' qui a également été modifiée pour pointer le répertoire à la place du fichier. 

reportsDir = file("$project.buildDir/reports/checkstyle")

Avant c'était: 

reportsDir = file("$project.buildDir/reports/checkstyle/checkstyle.xml")

J'utilise JDK 11 et cela a fonctionné avec. 

0
Waqar Detho

Cela m'est arrivé quand j'ai mis à jour Android Gradle Plugin à 3.3.0

S'il vous plaît exécuter ceci:

./gradlew checkstyle --stacktrace

Vous devrez probablement vérifier votre fichier checkstyle.xml config.

Je devais déplacer ces deux balises:

 <module name="SuppressionCommentFilter"/>

        <!--Enable usage SUPPRESS CHECKSTYLE comment-->
        <module name="SuppressWithNearbyCommentFilter">
            <property name="commentFormat" value="CHECKSTYLE IGNORE"/>
            <property name="checkFormat" value=".*"/>
            <property name="influenceFormat" value="0"/>
        </module>

à l'intérieur 

<module name="TreeWalker"> 

étiquette

Aussi j'avais besoin de supprimer:

<module name="SuppressionCommentFilter"/>
0
Mladen Rakonjac