zoukankan      html  css  js  c++  java
  • PMD

    在 PMD 的使用过程中,可以用 Java 或 XPath 来开发代码规则。

    本文讲述如何使用 XPath 来开发。

    XPath 语法

    XPath 是类似与 CSS 选择器的语法,主要用来选择 XML 中符合条件的节点。

    PMD 将代码转化为 XML 形式的抽象语法树,所以我们可以通过 XPath 来寻找代码中违反规则的节点。

    实现步骤

    1. 写 XPath 表达式
    2. 将规则注册到规则集文件中

    GitHub 中可以参考现有规则的 XPath 实现。

    XPath 比 Java 的实现更加方便。

    举例

    规则:代码中不能出现 deprecated 注解。

    写 XPath 表达式

    这条规则要寻找的是注解,所以要搜寻所有的注解节点,即 Annotation

    //Annotation
    

    注解的值是 deprecated,所以要在上面的表达式中加上条件,检测注解的值。

    在 PMD 的分析过程中,注解的值是用 Image 属性来保存的。

    //Annotation[@Image='deprecated']
    

    在 Apex 语言中,大小写是不敏感的,所以我们要加入 lower-case() 函数来保证我们可以包括所有的大小写情况。(也可以用其他方法,只要能保证大小写不影响检查就好)

    //Annotation[lower-case(@Image)='deprecated']
    

    将规则注册到规则集文件中

    每个规则集都是以 XML 形式出现的。我们将新的规则注册进去:

    <rule name="DeprecatedCodeShouldBeRemoved"
              since="6.23.0"
              language="apex"
              message="Deprecated code should be removed"
              class="net.sourceforge.pmd.lang.apex.rule.ApexXPathRule">
           <description>
               Deprecated code should be removed
           </description>
           <priority>5</priority>
           <properties>
              <property name="xpath">
                 <value>
    <![CDATA[
    //Annotation[lower-case(@Image)='deprecated']
    ]]>
                 </value>
              </property>
           </properties>
        </rule>
        
    </ruleset>
    
    

    这样,这条规则就可以使用了。

  • 相关阅读:
    AWS生产环境Pod挂载不了configmap、secret
    Ant学习
    Springframework3.1源码编译
    MyEclipse10 中增加svn插件
    如何测试java支持的最大内存
    Tomcat中部署后JspFactory报异常的解决方案
    win7x64下安装oraclex64版本后,plsql Developer无法登录的问题
    CentOS6.4安装及配置oracle
    VMWare安装redhat9后上网的的问题
    泛海精灵项目的回顾与反思
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/pmd_xpath_dev.html
Copyright © 2011-2022 走看看