2016-06-18 14 views
0

Ich habe versucht, PMD in einem meiner Projekt zu integrieren (ich benutze MAVEN Build Tool) Wenn ich versuche zu integrieren, kann ich XML-Konfigurationsdateien sind obligatorisch. Ich habe versucht, PMD-Plugin zu downloaden - ich erwartete, dass globale Regelsatzdateien in PMD Plug-in verfügbar sein werden, aber sie sind nicht. I Link unten verwendet: https://sourceforge.net/projects/pmd/?source=typ_redirectPMD Regelsatz wird nicht heruntergeladen/aktualisiert durch MAVEN

Nach googeln, ich einen Link ruleset zu bekommen gesehen haben http://grepcode.com/file/repo1.maven.org/maven2/pmd/pmd/4.3 ich alle XML-Dateien herunterladen kann nicht.

Gibt es eine Möglichkeit zum Download/Update über Build oder können wir alle XML-Dateien an einem Ort erhalten? Ich habe mein Bestes versucht, um in Google zu suchen und konnte es nicht herausfinden.

Ich habe pom.xml hier angehängt. Können Sie mir bitte mitteilen, wie ich meinen Regelsatz automatisch hinzufügen kann, wenn PMD automatisch aktualisiert wird?

<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> 

Antwort

1

Wenn Sie Ihre benutzerdefinierten pmd rulesets nicht verwenden müssen, können Sie die rulesets Tag ganz weglassen.

Wenn Sie nur einige von pmd rulesets verwenden möchten, können Sie vordefinierte diejenigen verwenden:

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

Sie Version verwenden 3.6 des Maven-pmd-Plugin. Es gibt einen Standardwert für die Regelsätze - java-basic, java-imports und java-unusedcode. Siehe die maven-pmd-plugin documentation.

Wenn Sie mit diesen Regelsätzen beginnen möchten, können Sie das rulesets-Tag ganz weglassen, wie krzyk mentioned.

Maven Plugin 3.6 verwendet PMD 5.3.5 - das Herunterladen von Regelsätzen für PMD 4.3 funktioniert nicht.

Sie müssen die Regelsätze jedoch nicht herunterladen. Sie können your own custom ruleset erstellen, die auf die Regeln verweist, die in Ihrem Code überprüft werden sollen. Und das wäre Ihre Datei .

Gibt es eine Möglichkeit zum Download/Update durch Build oder können wir alle XML Dateien an einem Ort überall erhalten?

Es gibt keinen solchen Regelsatz. Die Aktivierung aller Regeln, die PMD bietet, macht keinen Sinn, da sich einige Regeln widersprechen. Bitte lesen Sie "Best Practices": Choose the rules that are right for you.

Können Sie mir bitte mitteilen, wie Sie meinen Regelsatz automatisch hinzufügen, wenn PMD automatisch aktualisiert wird?

Sie müssen Ihren Regelsatz nicht hinzufügen - Sie verwenden ihn bereits. Wenn eine neue PMD-Version jedoch neue Regeln enthält, müssen diese neuen Regeln nicht unbedingt aktiviert sein. Vielleicht möchten Sie also die Versionshinweise von PMD lesen und prüfen, ob es neue interessante Regeln gibt. Dann können Sie auf die neuen Regeln in Ihrer Regelsatzdatei verweisen. Für die Java-Sprache können Sie die verfügbaren Regeln in der Rulesets index sehen.