pmd使用java project进行调用 :
简介:PMD是源代码分析器。它找到常见的编程缺陷,如未使用的变量,空的catch块,不必要的对象创建等等。它支持Java,JavaScript,Salesforce.com Apex和Visualforce,PLSQL,Apache Velocity,XML,XSL
准备工作:
下载:pmd-bin-6.13.0(jar) 官网地址: https://pmd.github.io/ 向下翻找
下载:pmd-src-6.13.0(源码,可有可无)
从左到右依次三个选项:下载pmd-bin-6.13.0(jar) pmd-src-6.13.0(源码) pmd-doc-6.13.0(文档)
我本人只做了检测java代码的这块,所以以下就由java代码进行演示,但是细想是一样的,其他语言的可以进行举一反三
建立一个java project工程(PMDDemo)
然后将pmd-bin-6.13.0\lib的asm-7.1.jar,commons-io-2.6.jar,commons-lang3-3.8.1.jar,jcommander-1.72.jar,pmd-core-6.13.0.jar,pmd-java-6.13.0.jar
这六个包引入到项目中(其中pmd-java-6.13.0.jar这是pmd中的检测java的依赖包,其他语言请选择对应包),必须引入;
通过 右键项目(PMDDemo)> Build Path > Configure Build Path > Libraries > Add Libraries > User Libraries > User Libraries > new >输入你自定义jar存放的文件夹名称
如图 :
如此完成建立好了自定义的pmdjar文件夹,用来存放jar包
接下来:
3:选择刚刚下载的pmd-bin-6.13.0 进入到lib目录,选择pmd-bin-6.13.0\lib的asm-7.1.jar,commons-io-2.6.jar,commons-lang3-3.8.1.jar,jcommander-1.72.jar,pmd-core-6.13.0.jar,pmd-java-6.13.0.jar (Ctrl+鼠标左键点击可以多选),进行添加然后点击 ok > Finish > ok
图:
结果:
接下来就是代码时刻了:(这里的例子使用了官方的例子;地址:https://pmd.github.io/pmd-6.13.0/pmd_userdocs_extending_writing_pmd_rules.html)
首先:要知道我们要检测什么样的代码(PmdTest)
我们可以使用“While循环必须使用大括号”作为示例。在下面的源代码中,很容易在视觉上丢失 - 很难分辨花括号的属性。所以要检查静态扫描出这段代码没有{ };
建立一个class (作用检测代码,也可以说是规则)(PmdDemoWhileLoops)
这里面主要使用了AST(抽象语法树),来进行树节点判断是否有{}
(详细说明介绍请看官网:https://pmd.github.io/pmd-6.13.0/pmd_userdocs_extending_writing_pmd_rules.html)
建立一个xml文件(用来调用检测代码);(PmdDemoWhileLoops.xml)
这个xml文件我文件主要用于调用你刚写好的规则类
name这个名字自定义,message触犯规则时的异常输出语句一定不要使用特殊字符否则会报错 比如“{ }”等;class:绑定刚才新建的java规则文件的地址,记得要是用此项目下的全路径;标签< description >里面添加描述;我暂时只是把它当做一个注释来看待;如果你们有更好的理解,请联系博主;
里面还有很多属性配置,这里就不一一介绍了(详细树配置请看官方文档地址:https://pmd.github.io/pmd-6.13.0/pmd_userdocs_extending_defining_properties.html)
到处自定义规则算是写好了;
接下来运行试试:(测试运行类RunPmdRule)
接下来你可以自己把测试源码(PmdTest.java)里面的while循环加上{}看一下什么效果;
本人第一次发表博客,如有侵权,请联系本人进行删除! 有错误点:请联系本人进行修改;请大家多多包涵;