0

Maven を使用して PMD 分析から一部のインターフェイスを除外する方法を教えてください。Maven ビルドの作成中に以下の例外が発生します。

PMD の失敗: ILogin$RetrieveLoginInfo_:4 ルール:ConstantsInInterface 優先度:3 インターフェイスで定数を使用しないでください。インターフェイスは型を定義し、定数は実装の詳細であり、クラスまたは列挙型に配置する方が適切です。効果的な Java の項目 19 を参照してください。 [

pom のプロパティに exclude-pmd.properties を追加しました。これは pom.xml プロパティの私のエントリです。

<pmd.excludeFromFailureFile>${project.basedir}/src/etc/exclude-pmd.properties</pmd.excludeFromFailureFile>

exclude-pmd.properties エントリ:

com.login.ILogin=ConstantsInInterface Priority:3 Avoid constants in interfaces.

インターフェース:

public interface ILogin {
    interface RetrieveLoginInfo_ {
    int STATUS=0
    }
    }

しかし、maven は ILogin インターフェイスを PMD 分析から除外していません。

4

1 に答える 1

0

まず、あなたの構造exclude-pmd.propertiesが正しくありません。https://maven.apache.org/plugins/maven-pmd-plugin/examples/violation-exclusions.htmlに従って

ルール名のみを値 (コンマ区切り) として使用することが想定されているため、この場合は次のようにする必要があります。

com.login.ILogin=ConstantsInInterface

そうは言っても、このプロパティとは異なる動作を期待していると思います。

pmd:checkこれにより、報告された唯一の違反がそのファイルの違反である場合に、タスクが失敗するのを回避できます。分析からファイルを無視しません。これは主に、レガシー プロジェクトで PMD を段階的に有効にする方法として意図されています。

説明したユースケースには、おそらく別のアプローチを使用する必要があります。

  1. https://pmd.github.io/pmd-6.15.0/pmd_userdocs_suppressing_warnings.htmlに従って、ソース コードでこの警告を単純に抑制することができます。
  2. https://pmd.github.io/pmd-6.15.0/pmd_userdocs_make_rulesets.html#filtering-the-processed-filesに従って、カスタム ルールセットを使用して、(すべてのルールに対して) 分析からファイルを実際に無視できます。
于 2019-06-13T14:58:25.537 に答える