4

カスタム ルール セット ファイルを使用して PMD を実行しようとしていますが、そのルール セットにはカスタム クラスのルールが含まれています。このクラスは、依存関係としてプルされていないjar に存在しますが、代わりに (依存関係である) zip ファイルで提供され、解凍されます。PMD ルール クラスがちょうどbuild/extralib/blah.jar.

PMD のみを実行しているときにクラスパスにそれを含めるにはどうすればよいですか? 私が試したことはありますが、うまくいきませんでした:

pmd {
    ruleSetFiles = files("build/utils/pmd-rules.xml")
    pmdClasspath = files("build/extralib")
}

明確にするために、エラーは次のとおりjava.lang.ClassNotFoundException: com.package.for.pmd.CrazyRuleです。これは、実行中に発生しますpmdMain

二次的な質問: PmdPmdExtensionの違いは何ですか? Pmd にはpmdClasspathがありますが、PmdExtension にはありません。を追加するpmdClasspathと、次のようになりました。

Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties. Deprecated dynamic property: "pmdClasspath" on "org.gradle.api.plugins.quality.PmdExtension_Decorated@70221fc5", value: "file collection".

だから私はそれがPmdExtensionにのみ準拠していると思いますか? Gradleの初心者として、それは少し混乱しています...

4

1 に答える 1

5

を構成しているときpmd { ... }は、拡張機能を構成しています。場合によっては、タスク レベルにドロップダウンして、tasks.pmd { ... }代わりに構成する必要がある場合があります。(同じ名前の拡張機能とタスクを持つことは、コード品質と IDE 拡張機能/タスクで使用される一般的なパターンです。) PMD クラス パスに要素を追加する最も簡単な方法は次のとおりです。

dependencies {
    pmd ...
}

これが外部ルールを追加するために機能するかどうかは試していませんが、可能性があります。

于 2013-06-18T21:40:50.350 に答える