0

MFactors3 というテスト プロジェクトで使用する maven 親 pom に maven pmd プラグインを構成しました。Eclipse で m2Eclipse を使用してこの小さなプロジェクトをビルドすると、PMD でかなりの数の違反が報告されます。コマンド ラインから同じプロジェクトをビルドすると、PMD はターゲット/サイト フォルダーに空の違反ファイルを生成します。

親の pom には、推奨される maven pmd ドキュメントから直接抜粋したセクションがあります。プラグインが呼び出され、正常に実行されるため、pom マテリアルは表示されません。

以下は、コマンド ラインから「mvn pmd:pmd -X」を実行しただけの出力です。構成データは正確に見えます。しかし、違反は検出されません。なんで?

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-pmd-plugin:2.7.1:pmd' with basic configurator -->
[DEBUG]   (f) aggregate = false
[DEBUG]   (f) compileSourceRoots = [/Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30 /src/main/java]
[DEBUG]   (f) excludeRoots = [/Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/target/generated-sources/stubs]
[DEBUG]   (f) excludes = [**/*Bean.java, **/generated/*.java]
[DEBUG]   (f) format = xml
[DEBUG]   (f) includeTests = false
[DEBUG]   (f) linkXRef = true
[DEBUG]   (f) minimumPriority = 5
[DEBUG]   (f) outputDirectory = /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/target/site
[DEBUG]   (f) project = MavenProject: edu.psu.sweng497a:MFactors30:0.0.1-SNAPSHOT @ /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/pom.xml
[DEBUG]   (f) reactorProjects = [MavenProject: edu.psu.sweng497a:MFactors30:0.0.1-SNAPSHOT @ /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/pom.xml]
[DEBUG]   (f) skip = false
[DEBUG]   (f) sourceEncoding = utf-8
[DEBUG]   (f) targetDirectory = /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/target
[DEBUG]   (f) targetJdk = 1.6
[DEBUG]   (f) testSourceRoots = [/Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/src/test/java]
[DEBUG]   (f) xrefLocation = /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/target/site/xref
[DEBUG]   (f) xrefTestLocation = /Users/Robert/Documents/workspace-sts-3.1.0-psgv/MFactors30/target/site/xref-test
[DEBUG] -- end configuration --
[DEBUG] Preparing ruleset: rulesets/basic.xml
[DEBUG] Before: rulesets/basic.xml After: basic.xml
[DEBUG] The resource 'rulesets/basic.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.FileResourceLoader.
[DEBUG] The resource 'rulesets/basic.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader.
[DEBUG] The resource 'rulesets/basic.xml' was found as jar:file:/Users/Robert/.m2/repository/pmd/pmd/4.3/pmd-4.3.jar!/rulesets/basic.xml.
[DEBUG] Preparing ruleset: rulesets/unusedcode.xml
[DEBUG] Before: rulesets/unusedcode.xml After: unusedcode.xml
[DEBUG] The resource 'rulesets/unusedcode.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.FileResourceLoader.
[DEBUG] The resource 'rulesets/unusedcode.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader.
[DEBUG] The resource 'rulesets/unusedcode.xml' was found as jar:file:/Users/Robert/.m2/repository/pmd/pmd/4.3/pmd-4.3.jar!/rulesets/unusedcode.xml.
[DEBUG] Preparing ruleset: rulesets/imports.xml
[DEBUG] Before: rulesets/imports.xml After: imports.xml
[DEBUG] The resource 'rulesets/imports.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.FileResourceLoader.
[DEBUG] The resource 'rulesets/imports.xml' was not found with resourceLoader org.codehaus.plexus.resource.loader.JarResourceLoader.
[DEBUG] The resource 'rulesets/imports.xml' was found as jar:file:/Users/Robert/.m2/repository/pmd/pmd/4.3/pmd-4.3.jar!/rulesets/imports.xml.
[WARNING] Unable to locate Source XRef to link to - DISABLED
[DEBUG] Exclusions: **/*~,**/#*#,**/.#*,**/%*%,**/._*,**/CVS,**/CVS/**,**/.cvsignore,**/RCS,**/RCS/**,**/SCCS,**/SCCS/**,**/vssver.scc,**/project.pj,**/.svn,**/.svn/**,**/.arch-ids,**/.arch-ids/**,**/.bzr,**/.bzr/**,**/.MySCMServerInfo,**/.DS_Store,**/.metadata,**/.metadata/**,**/.hg,**/.hg/**,**/.git,**/.git/**,**/BitKeeper,**/BitKeeper/**,**/ChangeSet,**/ChangeSet/**,**/_darcs,**/_darcs/**,**/.darcsrepo,**/.darcsrepo/**,**/-darcs-backup*,**/.darcs-temp-mail,**/*Bean.java,**/generated/*.java
[DEBUG] Inclusions: **/*.java
[DEBUG] Velocimacro : added #link(  href name target img position alt border width height ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #image(  img alt border width height ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #banner(  banner id ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #links(  links ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #breadcrumbs(  breadcrumbs ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #displayTree(  display item ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #menuItem(  item ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #mainMenu(  menus ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #copyright(  ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #publishDate(  position publishDate version ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[DEBUG] Velocimacro : added #poweredByLogo(  poweredBy ) : source = org/apache/maven/doxia/siterenderer/resources/default-site.vm
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
4

1 に答える 1

1

私は自分の質問に答えます。基本的に、親 pom から maven-pmd-plugin 構成コードのセクションを削除したのはユーザー エラーでした。これを行ったのは、ドキュメントから抜粋した例が、カスタム ルールセットが使用されていることを示しているためです。デフォルトのルールセットが欲しかった。

プラグインはルールセットなしで実行され、問題を示さなかったため、自分の間違いに気付くのに長い時間がかかりました (少なくとも、ルールセットが使用されていないことを警告すべきではありませんか?)。

必要な適切な構成要素は次のとおりです。

<!-- Customize rulesets here -->
<rulesets>
  <ruleset>rulesets/basic.xml</ruleset>
  <ruleset>rulesets/naming.xml</ruleset>
  <ruleset>rulesets/design.xml</ruleset>
</rulesets>

また、これらのルールセットはプラグインの jar ファイルに埋め込まれていることにも注意してください。ファイルシステムのどこにもそれらはありません。

于 2013-01-07T13:15:08.027 に答える