有人可以帮我在pmd中为月食创建规则吗?即使我通过PMD官方网站也无法启动。我打算在Java中创建规则,而不是XPath规则。有什么简单的指导开始吗?
谢谢
最佳答案
尝试使用“使用Java编写规则”方法,因为您可以轻松地以这种方式开始,后来可以尝试使用XPath表达式。您可以在官方link旁边遵循这些步骤。
从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)中附加以下规则:
将xml内容从“将WhileLoopsMustUseBracesRule规则放入规则集文件中”部分复制粘贴到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
一旦能够运行它,就可以在自己的包中创建自己的规则。
希望这可以帮助。!
关于java - 如何在PMD中为Java注释创建规则?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3844773/