2017-07-12 26 views
2

IDEAでCheckstyleプラグインを使用しています。私は別のモジュールに異なるcheckstyle構成を設定したいと思います。私はgradleをビルドツールバージョン4として使用しており、モジュールの対応する.imlファイルを変更するタスクを作成したい。 どのようにすればよいでしょうか?IDEAのGradleからチェックスタイル設定を設定する方法

しかし、私はちょうど私がイベントがコンソールに印刷ステップ2を参照してくださいカント冒頭で立ち往生しています

apply plugin: 'idea' 


task setCheckStylePluginSettings { 
    group = "Idea" 
    description = "Copies CheckStyle plugin settings to Idea workspace." 

    println "Step 1." 
    idea.module.iml { 
    withXml {xmlProvider -> 
     // Get root node. 
     println "Step 2." 
     def project = xmlProvider.asNode() 
     } 
    } 
} 

hereを見ているIMLファイルを変更することで私の非常に最初の試み。

+2

https://youtrack.jetbrains.com/issue/IDEA-127013#comment=27-1726264、さらにコメントを参照してください。 – CrazyCoder

+0

[この質問](https://stackoverflow.com/q/44944614/1005481)もご覧ください。 –

+0

@ ThomasJensenありがとう、提案されたソリューションは実際に動作することができます、私はファイルを更新する時間があるときにそれを与えることを試み、結果について通知します。 – Guillotine1789

答えて

0

したがって、問題は解決されます。私はThomas Yansenが提案した解決策をこのquestionに試しました。

しかし、私はそれを行う方法に関する詳細な情報を提供します。あなたはモジュール内にIDタグを定義する必要が異なるsourcesetsに異なるのCheckstyleモジュールを与えるために

。以下に示す:

<module name="ConstantName"> 
    <property name="id" value="ConstantNameMain"/> 
    <property name="severity" value="error"/> 
    <property name="applyToPrivate" value="false"/> 
    <property name="format" value="^[A-Z][A-Za-z0-9]*(_[A-Za-z0-9]+)*$"/> 
    </module> 
    <module name="ConstantName"> 
    <property name="id" value="ConstantNameTest"/> 
    <property name="severity" value="error"/> 
    <property name="applyToPrivate" value="false"/> 
    <property name="format" value="^[A-Z][A-Za-z0-9]*(_[A-Z0-9]+)*$"/> 
    </module> 

その後、我々はあなたのcheckstyle.xmlと同じフォルダに配置することができるsuppression.xmlためフィルターSuppressionFilterモジュールを定義します。一つ重要なことは、チェッカーモジュールとしてフィルターSuppressionFilterモジュールを配置することです。

<module name="Checker"> 
    <property name="severity" value="warning"/> 
    <module name="SuppressionFilter"> 
     <property name="file" value="./suppressions.xml"/> 
    </module> 
    <module name="TreeWalker"> 
    . 
    . 
    . 
    </module> 
</module> 

その後、私たちは以下のようにsuppression.xmlファイルを定義します>最後にAaaaaand

<suppressions> 
    <!-- >Test sources suppressions</!--> 
    <suppress files="[\\/]src[\\/]test[\\/].*" id="ConstantNameMain" /> 

    <!-- >Main sources suppressions</!--> 
    <suppress files="[\\/]src[\\/]main[\\/].*" id="ConstantNameTest" /> 
</suppressions> 

、あなたのCheckstyle-IDEAプラグインを設定、設定からリアルタイムスキャンを有効エディタ>検査>のCheckstyleあなたは終わりました。

1

のIntelliJでA「モジュール」は、あなたがチェックオプション「ソースセットごとに別々のモジュールを作成します」とのプロジェクトをインポートしたと仮定すると、Gradleの中のsourceSetに1対1のマッピングです。デフォルトでは

、のCheckstyleプラグインは、ビルドに追加された各ソースセットのためのタスクを追加します。したがって、javaプラグインを適用すると、既にcheckstyleMaincheckstyleTestというタスクがあるはずです。これらのタスクは効果的にあなたが探しているものです。そのようにそれらを設定し、あなたのbuild.gradleで、それらをカスタマイズする今

、:

checkstyleMain { 
    configFile = file("${rootDir}/checkstyle/main.xml") 
} 

checkstyleTest { 
    configFile = file("${rootDir}/checkstyle/test.xml") 
} 

これは、あなたが${rootDir}/checkstyle/で、プロジェクト内の別のCheckstyle構成ファイルを持っていることを前提としています。

+0

はい私はソースセットのためにdirfferentモジュールを作成しました。しかし、私は解決策が** IDEA Checkstyle **プラグインを構成するとは思わない、これはちょうどgradleタスクを構成するだろう、間違っている?私はIDEAプラグインが** .Il ** **ファイルをチェックしていると思っています。私はIDEAのcheckstyleプラグインを使って、モジュールごとに正しい構成で違反を積極的にチェックすることをお勧めします。ありがとう。 – Guillotine1789

+0

いいえ、エディタで使用されるプラグインは設定されません。何が示唆しているのは、エラーが発生しやすく、複数の環境(IntelliJ、CIやビルド環境などを使用していない開発者)では再現性がないということです。 IntelliJ checkstyleプラグインの設定形式や動作方法に関するパブリックなドキュメントはありませんので、さまざまなバージョンのIntelliJ(彼らがやったと確信しています)のために更新/変更することは自由です。 – nickb

+0

変更される可能性があります。チェックスタイルの設定を追加したときにIDEAが.imlファイルを変更する方法を確認しました。私の目的は、開発中にcheckstyleの効果を積極的に見る開発者側のためだけです。 CIなどでは、まだgradleタスクからトリガーされます。正直言って、これはEclipseの方が簡単でした。とにかく助けてくれてありがとう。 – Guillotine1789

関連する問題