如何在pmd中为java注释创建规则?

时间:2010-10-02 07:20:36

标签: java pmd

有人可以帮我在pmd为eclipse创建规则吗?即使我通过PMD官方网站,我也无法开始。我打算用java而不是XPath规则创建规则。任何简单的指导方针来启动它? 感谢

2 个答案:

答案 0 :(得分:0)

尝试“使用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
  • 一旦能够让它运行,您就可以在自己的包中创建自己的规则。

希望这有帮助。!

答案 1 :(得分:0)

我前段时间写了一些教程,其中包含一些可能有用的示例代码。

http://www.techtraits.ca/writting-pretty-code-with-pmd/