有人可以帮我在 pmd 中为 Eclipse 创建规则吗?即使我关注 PMD 官方网站,我也无法开始。我打算在 java 中创建规则而不是 XPath 规则。有什么简单的指南来启动它吗?谢谢
问问题
1255 次
2 回答
0
不久前我写了一个教程,其中包含一些可能有用的示例代码。
于 2011-11-22T22:48:05.520 回答
0
尝试“使用 Java 编写规则”方法,因为您可以轻松地以这种方式开始,稍后您可以尝试使用 XPath 表达式。您可以按照官方链接旁边的这些步骤进行操作。
- 从 PMD 附带的 src 包开始(例如 pmd-4.2.x\src),在现有包中创建您的 java 类(例如 pmd-4.2.5\src\net\sourceforge\pmd\rules\basic)。在这种情况下,它是以下示例代码 (WhileLoopsMustUseBracesRule):
package net.sourceforge.pmd.rules.basic;
import net.sourceforge.pmd.*;
import net.sourceforge.pmd.ast.*;
public class WhileLoopsMustUseBracesRule extends AbstractRule {
public Object visit(ASTWhileStatement node, Object data) {
SimpleNode firstStmt = (SimpleNode)node.jjtGetChild(1);
if (!hasBlockAsFirstChild(firstStmt)) {
addViolation(data, node);
}
return super.visit(node,data);
}
private boolean hasBlockAsFirstChild(SimpleNode node) {
return (node.jjtGetNumChildren() != 0 && (node.jjtGetChild(0) instanceof ASTBlock));
}
}
在 basic.xml(pmd-4.2.5\rulesets\basic.xml) 中附加以下规则:
将“将 WhileLoopsMustUseBracesRule 规则放入规则集文件”部分中的 xml 内容复制粘贴到 basic.xml。
换行
class="WhileLoopsMustUseBracesRule">
和
class="net.sourceforge.pmd.rules.basic.WhileLoopsMustUseBracesRule">
因为您必须在“net.sourceforge.pmd.rules.basic”包中创建了 java 文件 (WhileLoopsMustUseBracesRule.java)
如果在 Windows 中,请从 cmd 提示符运行此命令。
pmd.bat C:\JAVAFILE_ON_WHICH_YOU_WANT_TO_RUN_THIS_RULE xml C:\PMD\pmd-4.2.5\pmd-4.2.5\rulesets\basic.xml
- 对于 nix os (linux/MacOS),使用 pmd.sh 而不是 pmd.bat
- 一旦你能够让它运行,你就可以在你自己的包中创建你自己的规则。
希望这可以帮助。!
于 2011-09-22T10:50:07.060 回答