【问题标题】:PMD Apex Can't find resource for rule on WindowsPMD Apex 在 Windows 上找不到规则资源
【发布时间】:2018-09-12 18:13:27
【问题描述】:

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

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

但是无论我选择哪个版本,都会不断收到找不到资源的错误。

这是 VS Code 输出的一部分

PMD 命令: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" 错误:错误:命令失败: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" 2018 年 9 月 12 日下午 2:35:20 net.sourceforge.pmd.RulesetsFactoryUtils getRuleSets 严重:未找到规则集 net.sourceforge.pmd.RuleSetNotFoundException:找不到规则“ExcessiveParameterList”的资源“category/apex/design.xml”。确保资源是有效的文件或 URL,并且位于 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:\Co de\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:\代码\pmd-bin-5.7.0\lib\pmd-perl-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-php-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-plsql-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-python-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-ruby-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-scala-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-swift-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-ui-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-visualforce-5.7.0.jar;C:\代码\pmd-bin-5.7.0\lib\pmd-vm-5.7.0.jar;C:\代码\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

如果我从命令行运行命令,我会得到类似的输出。 此错误适用于我的规则集上的每条规则,这些规则并没有什么特别之处,它是扩展附带的默认规则集。

【问题讨论】:

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


    【解决方案1】:

    它适用于 PMD 6.7.0,但适用于 5.7.0:

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

    另见https://github.com/pmd/pmd/issues/1344

    【讨论】:

      猜你喜欢
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      相关资源
      最近更新 更多