2016-06-18 6 views
0

私のプロジェクトの1つにPMDを統合しようとしました(MAVENビルドツールを使用しています) 統合しようとすると、XML設定ファイルが必須です。 PMDプラグインをダウンロードしようとしました - グローバルルールセットファイルがPMDプラグインで使用可能になる可能性がありますが、そうではありません。 は、私は下のリンクを使用: https://sourceforge.net/projects/pmd/?source=typ_redirectPMDルールセットがMAVENによってダウンロード/更新されない

をグーグル後、私はすべてのXMLファイルをダウンロード傾けるルールセット http://grepcode.com/file/repo1.maven.org/maven2/pmd/pmd/4.3 を取得するために、一つのリンクを見てきました。

ビルドを介してダウンロード/更新する方法はありますか?または、すべてのXMLファイルをどこの場所でも取得できますか?私はGoogleで検索するのに最善のレベルを試みましたが、それを理解できませんでした。

ここにpom.xmlが添付されています。 PMDが自動的に更新されるたびにルールセットを自動的に追加する方法を教えてください。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.scm</groupId> 
    <artifactId>parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>SCM-PRODUCT</name> 
    <description>SCM Product for learning purpose</description> 
    <properties> 
    <java.version>1.7</java.version> 
    <hibernate.validator.version>5.2.4.Final</hibernate.validator.version> 
    <javax.el-api.version>2.2.4</javax.el-api.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <checkstyle-config-url> 
     D:/rules/checkstyle/2.0/checkstyle-2.0.xml 
    </checkstyle-config-url> 
    <checkstyle.version>6.18</checkstyle.version> 

    <log4j.version>1.2.17</log4j.version> 
    <!-- TEST CASES RELATED BEGINS--> 

    <junit.version>4.12</junit.version>  

    <!-- TEST CASES RELATED ENDS HERE--> 

    <!-- STATIC CODE ANALYSIS PROPERTIES --> 
    <findbugs.plugin.version>3.0.3</findbugs.plugin.version> <!-- Reports on common code mistakes and pitfalls --> 
    <checkstyle.plugin.version>5.0</checkstyle.plugin.version> <!-- Checks Code Style for Developers --> 
    <pmd.plugin.version>3.6</pmd.plugin.version> <!-- Source Code Analyzer --> 

    <doxia.module.markdown.version>1.3</doxia.module.markdown.version> 
    <javadoc.plugin>2.8.1</javadoc.plugin> <!-- Generates JavaDoc --> 
    <jxr.plugin>2.3</jxr.plugin> <!-- Cross reference report of project source code --> 

    <!-- REPORTING TOOL PROPERTIES --> 
    <project.info.reports.plugin>2.4</project.info.reports.plugin> <!-- A plethora of miscellaneous report: info, ci, dependencies, scm, plugins, etc. --> 
    <site.plugin>3.1</site.plugin> 
    <sonar.plugin>3.2-RC3</sonar.plugin> <!-- Analysis and metrics on code over time --> 
    <surefire.plugin>2.12</surefire.plugin> <!-- Reports Test Results --> 
    <taglist.plugin>2.4</taglist.plugin> <!-- Reports on Tags such as @todo and //TODO --> 
    <versions.plugin>1.3.1</versions.plugin> 
    <maven-compiler-plugin>3.1</maven-compiler-plugin> 
    <cobertura.plugin>2.5.1</cobertura.plugin> <!-- Reports Test Coverage --> 

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    </properties> 
    <modules> 
    <module>services</module> 
    <module>presentation</module> 
    <module>service_validator</module> 
    <module>jsonvo</module> 
    </modules> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>${hibernate.validator.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.el</groupId> 
      <artifactId>javax.el-api</artifactId> 
      <version>${javax.el-api.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <!-- http://mvnrepository.com/artifact/log4j/log4j --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
     <!-- http://mvnrepository.com/artifact/net.sourceforge.pmd/pmd --> 
     <dependency> 
      <groupId>net.sourceforge.pmd</groupId> 
      <artifactId>pmd</artifactId> 
      <version>5.4.2</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugin</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven-compiler-plugin}</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.17</version> 
       <configuration> 
        <includeTests>true</includeTests> 
        <rulesets> 
         <ruleset>${checkstyle-config-url}</ruleset> 
        </rulesets> 
        <minimumTokens>100</minimumTokens> 
        <targetJdk>${java.version}</targetJdk> 
        <failOnViolation>true</failOnViolation> 
       </configuration> 
       <executions> 
        <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>check</goal> 
        </goals> 
       </execution> 
       </executions>  
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-pmd-plugin</artifactId> 
       <version>${pmd.plugin.version}</version> 
       <configuration> 
        <targetJdk>${java.version}</targetJdk> 
        <minimumTokens>20</minimumTokens> 
        <skipEmptyReport>false</skipEmptyReport> 
        <failOnViolation>true</failOnViolation> 
        <printFailingErrors>true</printFailingErrors> 
        <!--<includeTests>true</includeTests>--> 
        <rulesets> 
         <ruleset>${pom.basedir}/pmd-rulesets.xml</ruleset> 
        </rulesets> 
        <!-- 
        <excludeRoots> 
         <excludeRoot>target/generated-sources/antlr</excludeRoot> 
         <excludeRoot>target/generated-sources/antlr/com/puppycrawl/tools/checkstyle/grammars/javadoc</excludeRoot> 
        </excludeRoots> 
        --> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>pmd</goal> 
          <goal>cpd</goal> 
          <goal>cpd-check</goal> 
          <goal>check</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>findbugs-maven-plugin</artifactId> 
       <version>${findbugs.plugin.version}</version> 
       <configuration> 
        <effort>Max</effort> 
        <threshold>Low</threshold> 
        <excludeFilterFile>config/findbugs-exclude.xml</excludeFilterFile> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 

    </plugins> 
    </build> 
</project> 

答えて

1

カスタムpmdルールセットを使用する必要がない場合は、rulesetsタグを完全に省略することができます。

あなたが事前に定義されたものを使用することができる唯一のいくつかのPMDルールセットのを使用する場合:あなたはMavenの-、PMDプラグインのバージョン3.6を使用している

 <rulesets> 
     <ruleset>/rulesets/java/braces.xml</ruleset> 
     <ruleset>/rulesets/java/naming.xml</ruleset> 
     </rulesets> 
0

。ルールセットのデフォルト値はjava-basic、java-imports、java-unusedcodeです。 maven-pmd-plugin documentationを参照してください。

これらのルールセットから開始する場合は、rulesetsタグを完全に省略することができます(krzyk mentioned)。

Maven Plugin 3.6ではPMD 5.3.5が使用されているため、PMD 4.3のダウンロードルールセットは機能しません。

しかし、ルールセットをダウンロードする必要はありません。 your own custom rulesetを作成して、コードでチェックしたいルールを参照することができます。これはあなたのファイルpmd-rulesets.xmlになります。

ビルドを介してダウンロード/アップデートする方法はありますか?またはXML のファイルをどこにでも置くことはできますか?

このようなルールセットはありません。 PMDが提供するすべてのルールを有効にすることは意味がありません。いくつかのルールが互いに矛盾するためです。 「ベストプラクティス」:Choose the rules that are right for youをお読みください。

PMD が自動的に更新されるたびに自動的にルールセットを追加する方法を教えてください。

ルールセットを追加する必要はありません。既に使用しています。ただし、新しいPMDバージョンに新しいルールがある場合、必ずしもこれらの新しいルールを有効にする必要はありません。新しい興味深いルールがある場合は、PMDのリリースノートとチェックアウトを読んでみてください。次に、ルールセットファイルで新しいルールを参照することができます。

Java言語の場合は、Rulesets indexで利用可能なルールを見ることができます。

関連する問題