PMD在intellij内部作为外部工具工作

时间:2015-08-20 20:27:46

标签: intellij-idea pmd

我想这样做,以便我可以使用intellij 14.x运行PMD检查作为外部工具

根据pmd 4.x,我能找到的唯一文档是旧的和过时的。如何让它正常工作?是否有人使用PMD作为外部工具?我尝试下载内置的PMD插件,但是当我将它指向我的custom_pmd_ruleset.xml时,它完全忽略了它 - >也许插件坏了。

2 个答案:

答案 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:

  • 文件>设置
  • 工具>外部工具
  • 添加新的外部工具:
    • 姓名:PMD(或任何你喜欢的)
    • 描述:PMD源代码分析器(或任何你喜欢的东西)
    • 选项:执行后同步文件;打开控制台
    • 显示:主菜单;编辑菜单;项目意见;搜索结果
    • 计划: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)

经过一番研究,这对我有用: enter image description here

这是类路径部分,超长并在图像中切断:

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

希望能节省一些时间让它工作。享受。