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é.
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.
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>
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.
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
?
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.
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"/>