2010-10-02 70 views
1

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

+1

您是否试过按照教程? http://pmd.sourceforge.net/howtowritearule.html – 2010-10-02 12:15:18

+0

我遵循,但仍然无法选择哪一种更好的方式来创建规则,即......'使用Java编写规则'或 '编写XPath表达式'。哪种方法最简单? – hemanth 2010-10-05 06:58:01

回答

0

尝试'使用Java编写规则'方法,因为您可以轻松地以此方式启动,稍后您可以尝试使用XPath表达式。您可以按照官方link的这些步骤操作。

  • 开始用自带的PMD中的src包(如PMD-4.2.x版\ SRC),创建Java类的现有包装内(如PMD-4.2.5的\ src \网络\ sourceforge上\ PMD \规则\基本)。在这种情况下,它是下面的示例代码(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 \规则集\ basic.xml):

    将“将WhileLoopsMustUseBracesRule规则放入规则集文件”部分中的xml内容复制粘贴到basic.xml。

    替换行

    class="WhileLoopsMustUseBracesRule"> 
    

    class="net.sourceforge.pmd.rules.basic.WhileLoopsMustUseBracesRule"> 
    

    ,你必须创建内部包java文件(WhileLoopsMustUseBracesRule.java) “net.sourceforge.pmd.rules.basic”

  • 如果在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 

  • 对于类Unix操作系统(Linux的/ MacOS的),使用pmd.sh代替pmd.bat
  • 一旦你能够得到它正在运行,可以在里面建立自己的规则你自己的套餐。

希望这会有所帮助。