5

一部のパブリック静的フィールドを廃止したAPIを維持しています。

CheckStyleはこれらについて大声で不平を言いますが、フィールドを非推奨としてマークすることで問題に対処したので、完全に無視してもらいたいと思います。

具体的には、ライブラリには列挙用の定数(public static final)がありますが、それらはfinalとしてマークされていません。CheckStyleはそれらについて文句を言いますが、契約を破らずにそれらをfinalに変更することはできません。

私の計画は、それらを非推奨としてマークし、後で削除することです。ただし、それらを非推奨としてマークしても、CheckStyleレポートから削除されるわけではありません。

4

1 に答える 1

8

2 つのオプションがあります。

  1. 各行の警告を手動で抑制します

    このアプローチは、回線をシフトするたびに抑制構成を維持する必要があるため、柔軟性が低くなります。ただし、それぞれの発生を個別に処理できます。

    <suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/>
    

    どのチェックが問題を引き起こしているのかわからないので、YOURCHECK を適切な名前に置き換える必要があります。YOURCLASS は、非推奨のコードを含む Java ファイルに名前を付けますが、挿入.*してすべてのファイルに適用できます。YOURLINES はコンマで区切られた値のリストで、各値は整数または integer-integer で示される整数の範囲です。

  2. コメントを使用して、checkstyle に警告を無視するようにアドバイスする

    このソリューションを使用すると、廃止されたすべてのメンバーのチェックを一度に非アクティブ化できます。ただし、厳密な規則に従う必要があります。@deprecatedこのフィルターには厳密な範囲の行があるため、最後の位置でこれらのメンバーにコメントを追加する必要があります (既に行っている可能性があります)。

    /**
    * @deprecated I don't like this anymore.
    */
    public static String EXAMPLE = "example";
    

    このソリューションでは、構成ファイル内で変更が必要です。まずFileContentsHolder、 に子として追加する必要がありますTreeWalker

    <module name="TreeWalker">
        ...
        <module name="FileContentsHolder"/>
        ...
    </module>
    

    これで、モジュールSuppressWithNearbyCommentFilterの一部である を構成できます。Checker

    <module name="Checker">
        ...
        <module name="SuppressWithNearbyCommentFilter">
            <property name="commentFormat" value=".*deprecated.*"/>
            <property name="checkFormat" value=".*"/>
            <property name="influenceFormat" value="2"/>
        </module>
        ...
    </module>
    

    特定のチェックのみを無視する場合は、checkFormat属性を調整します。または、別のコメントを使用する場合は、commentFormat属性を変更してください。influenceFormatただし、適切な値に設定することが非常に重要です。コメントの後の何行以内に、それらのチェックを無視するかを checkstyle に伝えます。

PS: Eclipse CheckStyle プラグインは、FileContentsHolderユーザー インターフェイスで構成を変更するとモジュールを削除するため、使用しないでください。

于 2009-11-10T10:05:22.453 に答える