1概要

Checkstyleは、構成可能な一連の規則に対してコードをチェックするオープンソースツールです。

このチュートリアルでは、Mavenを介してIDEプラグインを使用して、http://checkstyle.sourceforge.net/[Checkstyle]をJavaプロジェクトに統合する方法について説明します。

以下のセクションで説明されているプラ​​グインは互いに依存しているわけではなく、私たちのビルドまたはIDEに個別に統合することができます。たとえば、Mavenプラグインは、Eclipse IDEで検証を実行するために

pom.xml

に必要ありません。


2 Checkstyle Mavenプラグイン


2.1. Mavenの設定

Checkstyleをプロジェクトに追加するには、__pom.xmlのレポーティングセクションにプラグインを追加する必要があります。

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <configLocation>checkstyle.xml</configLocation>
            </configuration>
        </plugin>
    </plugins>
</reporting>

  • このプラグインには、2つの定義済みチェック、Sunスタイルのチェック、およびGoogleスタイルのチェックが付属しています。プロジェクトのデフォルトチェックは

    sun

    checks.xmlです。

カスタム設定を使用するには、上記の例に示すように設定ファイルを指定します。この設定を使用して、プラグインは現在提供されているデフォルトの設定の代わりに私たちのカスタム設定を読み込みます。

プラグインの最新バージョンはhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.apache.maven.plugins%22%20AND%20a%3A%22mavenにあります。 -checkstyle-plugin%22[Maven Central]。


2.2. レポート作成

Mavenプラグインが設定されたので、

mvn site

コマンドを実行してコードのレポートを生成できます。 ** ビルドが完了すると、レポートは

checkstyle.htmlという名前の

target/site__フォルダーにあります。

チェックスタイルレポートには、主に3つの部分があります。

  • ファイル:

    レポートのこのセクションには、違反が発生したファイルのリスト

    が表示されます。また、重大度に対する違反の件数も示しています。レポートのファイルセクションは次のようになります。

  • 規則:

    レポートのこの部分には、違反のチェックに使用された規則の概要

    が記載されています。ルールのカテゴリ、違反の数、およびそれらの違反の重大度が表示されます。これは、規則セクションを示すレポートの例です。

リンク:/uploads/Screen-Shot-2018-03-03-at-9.30.20-PM-1024×104-768×78.png%20768w[]

  • 詳細:

    最後に、レポートの詳細セクションに、

    発生した違反の詳細** が表示されます。提供される詳細は行番号レベルです。レポートの詳細セクションの例を次に示します。

link:/uploads/Screen-Shot-2018-03-03-at-9.33.51-PM 1024 x 173-768 x 130.png%20768w


2.3. 統合を構築する

コーディングスタイルを厳密にチェックする必要がある場合は、コードが標準に準拠していないとビルドが失敗するようにプラグインを設定できます。

これを行うには、プラグイン定義に実行目標を追加します。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>${checkstyle-maven-plugin.version}</version>
    <configuration>
        <configLocation>checkstyle.xml</configLocation>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>


configLocation

属性は、検証のために参照する設定ファイルを定義します。

私たちの場合、設定ファイルは

checkstyle.xmlです。実行セクションに記載されている目標

check__は、ビルドの検証段階で実行するようプラグインに要求し、コーディング標準に違反したときにビルド失敗を強制します。

さて、

mvn clean install

コマンドを実行すると、ファイルの違反をスキャンし、違反が見つかった場合はビルドが失敗します。

実行目標を設定せずに

mvn checkstyle:check、

を使用してプラグインの

check

目標のみを実行することもできます。検証エラーがある場合、この手順を実行するとビルドも失敗します。


3 Eclipseプラグイン


3.1. 構成

Mavenとの統合と同じように、Eclipseでは私たちのカスタム設定を使うことができます。

設定をインポートするには、__Window – > Preferences – > Checkstyleの順に選択してください。

これにより、カスタム設定ファイルを指定するためのオプションを提供するダイアログが開きます。


3.2. レポート閲覧

プラグインが設定されたので、それを使用してコードを分析できます。

プロジェクトのコーディングスタイルを確認するには、

Eclipseプロジェクトエクスプローラー

内でプロジェクトを右クリックし、

CheckStyle – > Check code with Checkstyle.

を選択します。

  • このプラグインは、EclipseのテキストエディタであるJavaコードについてのフィードバックを提供します** また、Eclipseのビューとして利用可能なプロジェクトの違反レポートも生成します。

違反レポートを表示するには、

ウィンドウ – >ビューの表示 – >その他

の順に進み、Checkstyleを検索します。

違反

および

違反チャート

のオプションが表示されます。

どちらかのオプションを選択すると、タイプ別に分類された違反が表示されます。サンプルプロジェクトの違反円グラフは次のとおりです。

リンク:/uploads/Pie

Chart

Checkstyle-e1518286529674-1024×274.png%201024w[]

円グラフのセクションをクリックすると、コード内の実際の違反のリストが表示されます。

あるいは、Eclipse IDEの

Problem

ビューを開き、プラグインによって報告された問題を確認することもできます。

これがEclipse IDEのサンプル問題ビューです。

リンク:/uploads/Screen-Shot-2018-02-24-at-4.15.23-PM-1024×264-768×198.png%20768w[]

警告をクリックすると、違反が発生したコードに移動します。


4 IntelliJ IDEAプラグイン


4.1. 構成

Eclipseと同様に、IntelliJ IDEAを使用すると、プロジェクトで独自のカスタム構成を使用することもできます。

IDEで[設定]を開き、[Checkstyle]を検索します。小切手を選択するためのオプションを含むウィンドウが表示されます。

+

ボタンをクリックするとウィンドウが開き、使用するファイルの場所を指定できます。

それでは、構成XMLファイルを選択して[次へ]をクリックします。これで前のウィンドウが開き、新しく追加したカスタム設定オプションが表示されます。新しい設定を選択してOKをクリックして私たちのプロジェクトでそれを使い始めます。


4.2. レポート閲覧

これでプラグインが設定されましたので、それを使って違反をチェックしましょう。

特定のプロジェクトへの違反を確認するには、__Analyze – > Inspect Codeに進みます。

  • 検査結果から、Checkstyleセクションの下にある違反の概要がわかります** サンプルレポートは次のとおりです。

link:/uploads/Screen-Shot-2018-02-19-at-3.00.07-PM -1024×287-768×215.png%20768w[]

違反をクリックすると、違反が発生したファイルの正確な行に移動します。


5カスタムチェックスタイル設定

Mavenレポート生成セクション(セクション2.2)では、独自のコーディング標準チェックを実行するためにカスタム構成ファイルを使用しました。

  • GoogleやSunのパッケージチェックを使用したくない場合は、** 独自のカスタム設定XMLファイルを作成する方法があります。

上記のチェックに使用されるカスタム設定ファイルは次のとおりです。

<!DOCTYPE module PUBLIC
  "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
  "http://www.puppycrawl.com/dtds/configuration__1__3.dtd">
<module name="Checker">
    <module name="TreeWalker">
        <module name="AvoidStarImport">
            <property name="severity" value="warning"/>
        </module>
    </module>
</module>


5.1. DOCTYPEの定義

すなわち、DOCTYPE定義の最初の行はファイルの重要な部分であり、DTDをどこからダウンロードするかをシステムに理解させるためにどこからダウンロードするかを指示します。

  • この定義を設定ファイルに含めないと、有効な設定ファイルにはなりません。**


5.2. モジュール

設定ファイルは主にモジュールで構成されています。

モジュールには、そのモジュールの動作を表す属性

name

があります。


name

属性の値は、プラグインの実行時に実行されるプラグインのコード内のクラスに対応します。

上記の設定に含まれるさまざまなモジュールについて学びましょう。


5.3. モジュール詳細


  • Checker:

    モジュールはCheckerを持つツリーに構造化されています

ルートにあるモジュール。このモジュールは、設定の他のすべてのモジュールによって継承されるプロパティを定義します。


  • TreeWalker:

    このモジュールは個々のJavaソースファイルをチェックします。

そのようなファイルのチェックに適用できるプロパティを定義します。


  • AvoidStarImport:

    このモジュールはStarを使わないための標準を設定します。

Javaコードをインポートします。このような問題の重大度を警告として報告するようプラグインに要求するプロパティもあります。したがって、そのような違反がコード内で見つかると、警告が警告されます。

カスタム設定の詳細については、http://checkstyle.sourceforge.net/config.html[link]を参照してください。


6. スプリングレストプロジェクトのレポート分析

このセクションでは、https://github.com/eugenp/tutorials/tree/master/spring-restにある、上記のセクション5で作成したカスタム設定を使用して、Checkstyleによって行われた分析に焦点を当てます。例として[Githubで利用可能なspring-restプロジェクト]。


6.1. 違反レポートの生成

Eclipse IDEに設定をインポートしました。プロジェクトに対して生成された違反レポートは次のとおりです。

ここで報告されている警告は、ワイルドカードのインポートはコード内で避けるべきであると言っています。この標準に準拠していないファイルが2つあります。

警告をクリックすると、違反のあるJavaファイルに移動します。


HeavyResourceController.java

ファイルに報告された警告がどのように表示されるかを示します。

リンク:/uploads/Screen-Shot-2018-02-27-at-12.31.46-AM.png%20828w[]


6.2. 問題解決

2つ以上のパッケージに同じクラスが含まれていると競合が発生する可能性があるため、スターインポートの使用は一般的には良い方法ではありません。

例として、

java.util

パッケージと

java.awtパッケージの両方で利用可能な

Listクラスを考えてみましょう。

java.util





java.awt。


の両方のインポートを使用すると、

List

が両方のパッケージで使用可能になるため、コンパイラはコードのコンパイルに失敗します。

  • 上記の問題を解決するために、インポートを両方のファイルにまとめて保存します** プラグインを再度実行しても違反は表示されず、コードはカスタム設定で設定された標準に従っています。


7. 結論

この記事では、CheckstyleをJavaプロジェクトに統合するための基本について説明しました。

これは、開発者が組織によって設定されたコーディング標準を確実に順守するために使用されるシンプルで強力なツールであることがわかりました。

静的解析に使用したサンプルコードはhttps://github.com/eugenp/tutorials/tree/master/spring-rest[Githubに追加]を利用できます。