PMD:分析 C 代码的命令行

问题描述 投票:0回答:2

我想使用 PMD 4.2.5 查找我的 C 代码中的重复项。我使用他们文档中的示例命令行:

java net.sourceforge.pmd.cpd.CPD --minimum-tokens 100 --files C:\src --language cpp

这给了我错误:

Can't find the custom format --language: java.lang.ClassNotFoundException

我也尝试了很多不同的其他方法,但没有任何效果。 PMD 的 GUI 版本运行良好。

我必须使用什么命令行才能让 PMD 检测重复代码?

c pmd cpd
2个回答
2
投票

它似乎想要加载一个类来进行特定于语言的解析;确保您的 CLASSPATH 设置正确。


0
投票

在命令行上,您可以将给定语言的类别(此处为)传递给pmd

// best practice
pmd check -d C:\src\ -f html -R category/apex/bestpractices.xml -r C:\src\best.html
// security
pmd check -d C:\src\ -f html -R category/apex/security.xml -r C:\src\security.html
// error prone
pmd check -d C:\src\ -f html -R category/apex/errorprone.xml -r C:\src\errorprn.html

您还可以合并类别

pmd check -d C:\src\ -f html 
         -R category/apex/bestpractices.xml, 
            category/apex/codestyle.xml, category/apex/design.xml, 
            category/apex/documentation.xml, category/apex/errorprone.xml, 
            category/apex/performance.xml, category/apex/security.xml 
         -r C:\src\PMD_Report_all_categories.html

可以通过解压下面适合您的语言的 jar 文件来找到适用于某种语言的类别

...\pmd-bin-7.0.0-rc3\lib

我找不到任何

的规则
  • 页面上都没有 第 3 方规则集
  • 也不低于制定规则集特定于语言的规则的任何页面
  • 我无法将文件夹
    pmd-bin-7.0.0-rc3\liblib
    下的任何文件与 匹配(参见屏幕)

© www.soinside.com 2019 - 2024. All rights reserved.