Does pmd still support command line to scan java files? #4029
Replies: 3 comments 2 replies
-
Thanks for asking. Java should of course be supported by PMD. Can you please run with the Also, which version of java are you using? Please also post the output of |
Beta Was this translation helpful? Give feedback.
-
Thanks Adangel for quick response. java -version I did not set $JAVA_HOME, I have multiple java in my env and I choose to use java 1.8.
I am using pmd-bin-6.47.0, and copied p3c-pmd-2.1.1.jar under its libs, which can compile from https://github.com/alibaba/p3c/tree/master/p3c-pmd. sorry I used company's laptop which cannot upload any file to network, will violate company's security strategy. relest.xml is like this: <?xml version="1.0"?>
<ruleset name="Custom ruleset"
xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
<description>
自定义Rule set
</description>
<!-- PMD Rules, From https://github.com/pmd/pmd/tree/master/pmd-java/src/main/resources/rulesets/java -->
<rule ref="rulesets/java/android.xml">
<exclude name="CallSuperLast"/>
</rule>
<rule ref="rulesets/java/basic.xml">
<exclude name="CollapsibleIfStatements"/>
</rule>
<rule ref="rulesets/java/clone.xml"/>
<rule ref="rulesets/java/finalizers.xml"/>
<rule ref="rulesets/java/imports.xml"/>
<rule ref="rulesets/java/javabeans.xml"/>
<rule ref="rulesets/java/optimizations.xml">
<exclude name="LocalVariableCouldBeFinal"/>
<exclude name="MethodArgumentCouldBeFinal"/>
</rule>
<rule ref="rulesets/java/sunsecure.xml"/>
<rule ref="rulesets/java/unnecessary.xml">
<exclude name="UselessParentheses"/>
</rule>
<!-- Ali Rules, From https://github.com/alibaba/p3c/tree/master/p3c-pmd/src/main/resources/rulesets/java -->
<rule ref="rulesets/java/ali-comment.xml">
</rule>
<rule ref="rulesets/java/ali-concurrent.xml">
</rule>
<rule ref="rulesets/java/ali-constant.xml">
</rule>
<rule ref="rulesets/java/ali-exception.xml">
</rule>
<rule ref="rulesets/java/ali-flowcontrol.xml">
</rule>
<rule ref="rulesets/java/ali-naming.xml">
</rule>
<rule ref="rulesets/java/ali-oop.xml">
</rule>
<rule ref="rulesets/java/ali-orm.xml">
</rule>
<rule ref="rulesets/java/ali-other.xml">
</rule>
<rule ref="rulesets/java/ali-set.xml">
</rule>
</ruleset> |
Beta Was this translation helpful? Give feedback.
-
Can command line support multile rulesets or how to group multiple rulesets to make it happen? |
Beta Was this translation helpful? Give feedback.
-
Hi,
I checked from PMD official website https://pmd.github.io/pmd-6.47.0/index.html#-documentation, it looks like pmd commd line can check java files, this comes from the website:
~ $ cd ~/bin/pmd-bin-6.47.0/bin
~/.../bin $ ./run.sh pmd -d ../../../src/main/java/ -f text -R rulesets/java/quickstart.xml
.../src/main/java/com/me/RuleSet.java:123 These nested if statements could be combined
.../src/main/java/com/me/RuleSet.java:231 Useless parentheses.
.../src/main/java/com/me/RuleSet.java:232 Useless parentheses.
.../src/main/java/com/me/RuleSet.java:357 These nested if statements could be combined
.../src/main/java/com/me/RuleSetWriter.java:66 Avoid empty catch blocks
But I checked in my ubundu16.04, it seems not support java any more? can someone help me figure it out?
run.sh pmd -d app -f text -R etc/pmd/relest.xml
Ignoring language for PMD: java.util.ServiceConfigurationError: net.sourceforge.pmd.lang.Language: Provider net.sourceforge.pmd.lang.java.JavaLanguageModule could not be instantiated
Ignoring language for PMD: java.util.ServiceConfigurationError: net.sourceforge.pmd.lang.Language: Provider net.sourceforge.pmd.lang.java.JavaLanguageModule could not be instantiated
Jun 30, 2022 4:50:55 PM net.sourceforge.pmd.util.log.internal.SimpleMessageReporter logImpl
SEVERE: Cannot load ruleset etc/pmd/relest.xml: Unknown Language 'java' for rule ThreadPoolCreationRule, supported Languages are apex, ecmascript, html, jsp, modelica, plsql, pom, scala, vf, vm, wsdl, xml, xsl
Jun 30, 2022 4:50:55 PM net.sourceforge.pmd.util.log.internal.SimpleMessageReporter logImpl
WARNING: No rules found. Maybe you misspelled a rule name? (etc/pmd/relest.xml)
Thanks very much
Beta Was this translation helpful? Give feedback.
All reactions