3

PMD maven プラグインを含む maven ベースの Java プロジェクトを作成しています。私は独自のルール セット XML を使用しており、空のコードと不要な 2 つのルール セットを除いて、魅力のように機能しますビルド実行すると、maven は次のように言います:「リソースが見つかりません」ロールの定義は次のようになります。

<role ref="rulesets/emptycode" />

<role ref="rulesets/unnecessary" />

他のすべてのケースでは、この種の定義が機能します。私が見つけたのは、ecmasrciptカテゴリの下に「不要」という名前のルールセットがあるため、この定義にはJavaバージョンを使用するための提案が必要かもしれないということです。言語属性をルールセットxml ノード (「JAVA」、PMD JavaDoc に基づく) に設定したり、refにいくつかの前置後置を付けたりするなど、複数の方法を試しましたが、機能せず、Web 上で有効な解決策が見つかりませんでした。誰かがアイデアを持っていますか、私が設定するのを忘れたもの、または私が失敗したものはありますか? 助けてくれてありがとう!

4

1 に答える 1

10

PMD は、Maven から使用するのが面倒な獣のようです。私はプラグインのバージョン 3.0 でこれを理解しました - 2 つの解決策があります:

  • 手っ取り早い解決策: プロジェクトにルールセットを配置します。

    • PMD jar をダウンロードします ( http://sourceforge.net/projects/pmd/files/latest/download )
    • エキスlib/pmd-x.x.x.jar
    • そのPMD jarファイルから、rulesets/<type>/<ruleset>.xml使用したいファイルを抽出します
    • それらをプロジェクトの下のフォルダーに配置します-次のようなものです${basedir}/pmd/...
    • 次のように参照します。

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <configuration>
              <rulesets>
                  <ruleset>${basedir}/pmd/<ruleset>.xml</ruleset>
              </rulesets>
          </configuration>
      </plugin>
      

      利点はこれが簡単なことです。欠点は、将来 PMD バージョンを更新する場合、これらのファイルを更新することを覚えておく必要があることです。

  • 良い解決策: のルールセットを参照してpmd-x.x.x.jarください。

    • 次のようなカスタム ルールセットを作成します${basedir}/pmd/custom.xml( http://pmd.sourceforge.net/pmd-5.0.2/howtomakearuleset.htmlを参照) 。
    • 次の方法で PMD ルールセットを参照します。<rule ref="rulesets/java/imports.xml"/>
    • 注意:パスは、先頭のスラッシュのないpmd-x.x.x.jar内部のパスです(上記のクイック アンド ダーティを参照) 。
    • 次のようにカスタム ルールセットを参照します。

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-pmd-plugin</artifactId>
          <configuration>
              <rulesets>
                  <ruleset>${basedir}/pmd/custom.xml</ruleset>
              </rulesets>
          </configuration>
      </plugin>
      

      利点は、これが常に PMD jar から現在の PMD ルールセットを参照することです。欠点は、正しく取得するのが少し面倒なことです。

動作するまで (maven-pmd-pluginバージョン 3.0) これを試すために、 mvn pmd:pmd ( <linkXref>false</linkXref>in pom.xml) を実行し続け、エラーが発生しなくなるまでパスを微調整しました。

于 2013-03-04T13:03:41.673 に答える