我想这样做,以便我可以使用intellij 14.x运行PMD检查作为外部工具
根据pmd 4.x,我能找到的唯一文档是旧的和过时的。如何让它正常工作?是否有人使用PMD作为外部工具?我尝试下载内置的PMD插件,但是当我将它指向我的custom_pmd_ruleset.xml时,它完全忽略了它 - >也许插件坏了。
答案 0 :(得分:2)
命令行解析器在PMD 5.0.1中已更改,但遗憾的是文档从未更新过。这些是变化:
args[0]
现在是-dir
args[1]
现在是-format
args[2]
现在是-rulesets
当你-format ideaj
时,它还需要三个参数。现在使用-property {name}={value}
:
args[3]
现在是-property sourcePath
args[4]
现在是-property classAndMethodName
args[5]
现在是-property singleFileName
PMD 4 documentation使用的参数中给出的示例命令行:
"$FilePath$" # args[0]
ideaj # args[1]
unusedcode,imports # args[2]
"$Sourcepath$" # args[3]
$FileClass$.method # args[4]
$FileName$ # args[5]
请注意,第4个参数在文档中实际上是错误的,$FileClass.method
应该是$FileClass$.method
。
所以在PMD 5中,这是:
pmd \
-dir "$FilePath$" \
-format ideaj \
-rulesets "unusedcode,imports" \
-property sourcePath="$Sourcepath$" \
-property classAndMethodName="$FileClass$.method" \
-property singleFileName="$FileName$
您可以像这样配置IntelliJ:
path/to/pmd-bin-5.8.1/bin/run.sh
pmd -dir "$FilePath$" -format ideaj -rulesets "unusedcode,imports" -property sourcePath="$Sourcepath$" -property classAndMethodName="$FileClass$.method" -property singleFileName="$FileName$
$ProjectFileDir$
答案 1 :(得分:0)
这是类路径部分,超长并在图像中切断:
-cp "C:\Users\nate\.m2\repository\commons-io\commons-io\2.4\commons-io-2.4.jar;C:\Users\nate\.m2\repository\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;C:\Users\nate\.m2\repository\net\sourceforge\pmd\pmd-core\5.3.2\pmd-core-5.3.2.jar;C:\Users\nate\.m2\repository\net\sourceforge\pmd\pmd-java\5.3.2\pmd-java-5.3.2.jar;C:\Users\nate\.m2\repository\asm\asm\3.1\asm-3.1.jar;C:\Users\nate\.m2\repository\jaxen\jaxen\1.1.1\jaxen-1.1.1.jar;C:\Users\nate\.m2\repository\com\beust\jcommander\1.48\jcommander-1.48.jar" net.sourceforge.pmd.PMD -R "$ModuleFileDir$\src\test\resources\custom-pmd-rules.xml" -d "$FileDirRelativeToProjectRoot$/$FileName$"
希望能节省一些时间让它工作。享受。