有人可以帮我在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/

10-11 03:29