2012-02-05 31 views
6

Maven 2 aracılığıyla PMD'yi çalıştırıyorum. Şu anda nelerin üretildiğini görmek için tüm kural kümelerini uyguluyorum (aşağıdaki kod). Düzeltmek için bana mantıklı olan şeyleri gözden geçiriyorum. Ancak, kural kümesini korumak istediğim "optimizasyonlar" kural kümesinde olduğu gibi, kuralı kural kümesindeki kurallardan yalnızca birini devre dışı bırakır. Benim durumumda, "AvoidInstantiatingObjectsInLoopss" kuralını devre dışı bırakmak istiyorum. İşte PMD - Bir kural içinde bir kural nasıl devre dışı bırakılır?

benim pom.xml

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jxr-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-pmd-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <linkXref>true</linkXref> 
       <sourceEncoding>utf-8</sourceEncoding> 
       <minimumTokens>${pmd.minimumTokens}</minimumTokens> 
       <failOnViolation>${pmd.failOnViolation}</failOnViolation> 
       <targetJdk>${projectTargetJdk}</targetJdk> 

       <rulesets> 
        <!-- See the FAQ here: http://maven.apache.org/maven-1.x/plugins/pmd/faq.html --> 
        <!-- See the rule sets here: http://pmd.sourceforge.net/ (menu on the left has a Rule Sets section --> 
        <!-- Unused rule sets --> 
        <!-- <ruleset>/rulesets/naming.xml</ruleset> --> 

        <!-- Unable to find rule sets --> 
        <!-- <ruleset>/rulesets/emptycode.xml</ruleset> --> 
        <!-- <ruleset>rulesets/comments.xml</ruleset> --> 
        <!-- <ruleset>/rulesets/unnecessary.xml</ruleset> --> 
        <!-- <ruleset>/rulesets/logging.xml</ruleset> --> 

        <!-- used rule sets --> 
        <!-- http://pmd.sourceforge.net/rules/java/basic.html --> 
        <ruleset>/rulesets/basic.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/braces.html --> 
        <ruleset>/rulesets/braces.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/clone.html --> 
        <ruleset>/rulesets/clone.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/codesize.html --> 
        <ruleset>/rulesets/codesize.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/controversial.html --> 
        <ruleset>/rulesets/controversial.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/coupling.html --> 
        <ruleset>/rulesets/coupling.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/design.html --> 
        <ruleset>/rulesets/design.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/finalizers.html --> 
        <ruleset>/rulesets/finalizers.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/imports.html --> 
        <ruleset>/rulesets/imports.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/j2ee.html --> 
        <ruleset>/rulesets/j2ee.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/junit.html --> 
        <ruleset>/rulesets/junit.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/javabeans.html --> 
        <ruleset>/rulesets/javabeans.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/migrating.html --> 
        <ruleset>/rulesets/migrating.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/optimizations.html --> 
        <ruleset>/rulesets/optimizations.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/strictexception.html --> 
        <ruleset>/rulesets/strictexception.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/strings.html --> 
        <ruleset>/rulesets/strings.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/sunsecure.html --> 
        <ruleset>/rulesets/sunsecure.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/typeresolution.html --> 
        <ruleset>/rulesets/typeresolution.xml</ruleset> 
        <!-- http://pmd.sourceforge.net/rules/java/unusedcode.html --> 
        <ruleset>/rulesets/unusedcode.xml</ruleset> 
       </rulesets> 
      </configuration> 
     </plugin> 
    </plugins> 
</reporting> 
+0

Sonar'ın bir parçası olarak PMD'yi çalıştırıyorum. Sonar hangi kuralların etkin olduğunu yönetmek için bir GUI sağlar. –

+0

Sonar çok ilginç görünüyor. Bu konuda daha fazla araştırma yapacağım. Şimdilik, maven konfigürasyonları ile örneğin ihtiyaçlarımı ele almanın bir yolu olup olmadığını anlamakla ilgileniyorum. – Bellini

cevap

2

kuralların tanımı raporlama bölümüdür ve aktivasyon kural kümesi dosyaları üzerindedir. "Kurallar" klasöründeki dosyaların bir kopyasına sahip olduğunuzdan, kuralın referansını içeren kural kümesindeki düğümün silinmesi veya yorumlanması yeterlidir. Bu durumda, "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) bir Optimizasyon kuralıdır, bu yüzden "/rulesets/optimizations.xml" içinde olması muhtemeldir.

Sadece dosyayı düzenleyin, kuralı ekleyerek arayın ve ilgili kural düğümünü yorumlayın veya silin.

Dosyalarınızın içeriğini bilmiyorum, böylece kuralı bir kereden fazla dahil edebilirsiniz.

+0

"Kural kümeleri" eklentinin bir parçası, kendi maven projem için yerel bir klasör değil. – Basil

İlgili konular