web-dev-qa-db-ja.com

Checkstyle、ルートモジュールを作成できません

プロジェクトでCheckstyleを構成しようとしています。私は追加しました:

    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()
    }

allprojectsのルートgradleファイルに。

しかし、./gradlew checkstyle

私は得る:

* 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}.

ルールを含むファイルでさえ、指定されたディレクトリにあります。

16
Dawid Hyży

問題は、ルールファイルが見つからなかったことです。だから私は変更しました:

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

に:

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

そして今、それは正しくそれを拾います。

1
Dawid Hyży

これは、Android Gradleプラグインを3.3.0に更新したときに起こりました。

これを実行してください:

./gradlew checkstyle --stacktrace

おそらく、checkstyle.xml configファイルを確認する必要があります。

これらの2つのタグを移動する必要がありました。

 <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>

内部

<module name="TreeWalker"> 

タグ

また、削除する必要がありました:

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

config/checkstyle/checkstyle.xmlには、存在しないファイルへの参照が含まれていました。私の場合、経由:

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

ファイルの作成config/checkstyle/checkstyle-suppressions.xml問題を修正しました。

役立つ場合は、その内容(checkstyle.xml):

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

私も同様の問題と同じ例外メッセージを抱えていました。次の手順で問題を解決しました。

ツールのバージョンを8.16に更新しました。 8.1より前は、「configFile」プロパティの代わりに「configDir」を使用していました。

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

以前:

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

さらに、ファイルではなくディレクトリを指すように変更された 'reportDir'プロパティがありました。

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

以前:

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

私はJDK 11を使用していますが、それで動作しました。

2
Waqar Detho

私は非常によく似た問題を抱えていたので、基本的に@Bohemianの回答を使用しました。 checkStyleはファイルを見つけることができなかったので、必要に応じて強制的にフィードしました。私の場合、根本的な原因は、NetBeansのgradleプラグインがすべての「環境」変数を正しく伝播しないため、${basedir}/config/checkstyle/import-control.xml失敗しました。 checkStyleがNetBeansで実行されている場合、${basedir} に設定されています $USER_HOME、プロジェクトのルートの代わりに。回避策として、必要なファイルをホームディレクトリにコピーしました。これにより、checkStyleが正しく実行されます。
Uいですが、何もないよりはましです。

0
Charlweed

このエラーは、構成ファイルを読み取れなかったときに発生します。 /Users/user/Development/project/config/checkstyle/checkstyle.xmlファイルがありますか?

0
Hamdi Douss

この問題は、checkstyle構成で廃止されたAPIを使用していることが原因の場合もあります。このリンクを参照してください here および here

0
Edwin Nyawoli