PMD with Maven - How to disable one rule in a rule set?

My PMD works through Maven 2. Now I have all the rule sets to see what is generated (see code below). I experience and correct things that make sense for me to fix. However, there are such cases as in the set of optimization rules, where I want to save the set of rules, but disable only one of the rules within the set of rules . In my case, I want to disable the rule "AvoidInstantiatingObjectsInLoopss".

Here is the report section of my 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> 
+6
source share
1 answer

The definition of rules and their activation is in the rule files. Since you have a copy of the files in the rulesets folder, simply delete or comment out the node in the ruleset file that contains the link to the rule. In this case, "AvoidInstantiatingObjectsInLoops" (net.sourceforge.pmd.rules.optimization.AvoidInstantiatingObjectsInLoops) is an optimization rule, so it is probably in "/rulesets/optimizations.xml".

Just edit the file, find the inclusion of the rule and comment on or delete the corresponding node rule.

I do not know the contents of your files, so you could include this rule more than once.

+2
source

Source: https://habr.com/ru/post/907687/


All Articles