code-analysis - PMD Apex 在 Windows 上找不到规则资源

标签 code-analysis apex pmd static-code-analysis

我正在尝试配置 PMD 进行代码分析。 我正在使用 VS Code,已经安装了 Java 10,下载了几个版本的 PMD enter image description here

我已经安装了 VS Code 的 Apex PMD 扩展,并按照其说明进行了配置。

但无论我选择哪个版本,都会出现找不到资源错误。

这是 VS Code 输出的一部分

PMD Command: java -cp "C:\Code\pmd-bin-5.7.0\lib*" net.sourceforge.pmd.PMD -d "c:\Code\Lightning\src\classes\AccountController.cls" -f csv -R "C:\Code\ruleset\apex_default.xml" error:Error: Command failed: java -cp "C:\Code\pmd-bin-5.7.0\lib*" net.sourceforge.pmd.PMD -d "c:\Code\Lightning\src\classes\AccountController.cls" -f csv -R "C:\Code\ruleset\apex_default.xml" Sep 12, 2018 2:35:20 PM net.sourceforge.pmd.RulesetsFactoryUtils getRuleSets SEVERE: Ruleset not found net.sourceforge.pmd.RuleSetNotFoundException: Can't find resource 'category/apex/design.xml' for rule 'ExcessiveParameterList'. Make sure the resource is a valid file or URL and is on the CLASSPATH. Here's the current classpath: C:\Code\pmd-bin-5.7.0\lib\antlr-runtime-3.5.2.jar;C:\Code\pmd-bin-5.7.0\lib\antlr4-runtime-4.5.2-1.jar;C:\Code\pmd-bin-5.7.0\lib\asm-5.0.4.jar;C:\Code\pmd-bin-5.7.0\lib\commons-io-2.4.jar;C:\Code\pmd-bin-5.7.0\lib\commons-lang3-3.4.jar;C:\Code\pmd-bin-5.7.0\lib\groovy-2.4.7.jar;C:\Code\pmd-bin-5.7.0\lib\gson-2.5.jar;C:\Code\pmd-bin-5.7.0\lib\javacc-5.0.jar;C:\Code\pmd-bin-5.7.0\lib\jaxen-1.1.6.jar;C:\Code\pmd-bin-5.7.0\lib\jcommander-1.48.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-apex-5.7.0-apex-jorje-shaded.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-apex-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-core-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-cpp-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-cs-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-fortran-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-go-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-groovy-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-java-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-javascript-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-jsp-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-matlab-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-objectivec-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-perl-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-php-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-plsql-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-python-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-ruby-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-scala-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-swift-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-ui-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-visualforce-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-vm-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\pmd-xml-5.7.0.jar;C:\Code\pmd-bin-5.7.0\lib\rhino-1.7.7.jar;C:\Code\pmd-bin-5.7.0\lib\saxon-9.1.0.8-dom.jar;C:\Code\pmd-bin-5.7.0\lib\saxon-9.1.0.8.jar;C:\Code\pmd-bin-5.7.0\lib\scala-compiler-2.10.4.jar;C:\Code\pmd-bin-5.7.0\lib\scala-library-2.10.4.jar;C:\Code\pmd-bin-5.7.0\lib\scala-reflect-2.10.4.jar

如果我从命令行运行该命令,我会得到类似的输出。 这个错误针对我的规则集中的每条规则,这没有什么异常,它是扩展附带的默认规则集。

最佳答案

它适用于 PMD 6.7.0,但在 5.7.0 上失败:

您引用的规则“category/apex/design.xml/ExcessiveParameterList”仅自 PMD 6 起在此路径下可用。在该版本中,我们将规则放入类别中。 使用 PMD 5.7.0 时,您需要使用旧规则集:“rulesets/apex/complexity.xml/ExcessiveParameterList”。 使用最新的 PMD 版本可能会更好。有没有办法配置 Apex PMD 扩展?

另请参阅https://github.com/pmd/pmd/issues/1344

关于code-analysis - PMD Apex 在 Windows 上找不到规则资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52301204/

相关文章:

code-analysis - 了解代码指标

java - 尝试将文件上传到 Google 云端硬盘的特定文件夹。尽管 http 请求具有正确的文件夹 ID,但它还是被上传到文件夹之外

grails - PMD 与 grails 项目

java - Wicket 和 'constructor calls overridable method' PMD 警告

eclipse - 将 Eclipse 问题 View 配置移植到 IDEA/Android studio

c++ - 查找类的所有实例的工具

salesforce - Visualforce 电子邮件模板单元测试

javascript - 在 javascript 中使用 RSA 加密时出现问题

java - Checkstyle 和 PMD 仅作为建议

python - PyLint 错误地表示对象缺少某些属性