PMD使用手册
- 文中测试例子均采用JHotDraw7源码,官网关于 JHotDraw的检测结果:http://pmd.sourceforge.net/reports/jhotdraw_JHotDraw.html
- 下载地址:https://sourceforge.net/projects/pmd/files/pmd/5.1.0/
- 安装:解压到任意目录。
3. 使用方法:
3.1 使用命令行:(Windows下)
命令行进入PMD安装目录,bin文件夹,执行命令:
基本命令:pmd -d C:\Users\lsp\Desktop\svn\jhotdraw7\src -f html -R rulesets/java/unusedcode.xml
其中 C:\Users\lsp\Desktop\svn\jhotdraw7\src为所需要分析源码绝对路径,可以是文件夹也可以是单个文件。
-R 表示的采用的检测规则。 此规则都存在于

Rulesets下有多种语言的规则,Java下又包含多种规则,在命令行每次只能检测单个规则(暂时未发现多条规则应用于一次检测),也可以自定义规则,具体怎么定义参见官网。
-f 设置检测结果输出格式,html, xml,text, csv,
该工具默认命令行检测结果输出到控制台,可以通过-r参数导出检测结果:如D:\Program Files\pmd-bin-5.1.0\bin>pmd -d C:\Users\lsp\Desktop\svn\jhotdraw7\src -f html -r D:\pmdreport\PMDoutput.html -R rulesets/java/unusedcode.xml
其他参数:
|
参数 |
说明 |
默认值 |
|
-auxclasspath |
specifies the classpath for libraries used by the source code. This is used by the type resolution.Alternatively, a 'file://' URL to a text file con |
|
|
-benchmark, -b |
Benchmark mode - output a benchmark report upon completion; default to System.err |
False |
|
-dir, -d |
root directory for sources |
|
|
-encoding, -e |
specifies the character set encoding of the source code files PMD is reading (i.e., UTF-8) |
UTF-8 |
|
-format, -f |
report format type |
text |
|
-language, -l |
specify a language PMD should use |
java |
|
-minimumpriority, -min |
rule priority threshold; rules with lower priority than they will not be used |
Low |
|
-property, -P |
{name}={value}: define a property for the report |
{} |
|
-reportfile, -r |
send report output to a file; |
System.out |
|
-rulesets, -R |
comma separated list of rulesets name to use |
|
|
-shortnames |
prints shortened filenames in the report |
false |
|
-showsuppressed |
report should show suppressed rule violations |
false |
|
-stress, -S |
performs a stress test |
|
|
-suppressmarker |
specifies the String that marks the a line which PMD should ignore; default is NOPMD |
NOPMD |
|
-threads, -t |
set the number of threads used by PMD |
1 |
|
-uri, -u |
Database URI for sources |
|
|
-debug, -verbose, -D, -V |
Debug mode |
false |
|
-version, -v |
specify version of a language PMD should use |
1.8 |
3.2 Ant
在项目路径下build.xml文件中加入:
D:\Program Files\pmd-bin-5.1.0\lib为pmd安装路径下的lib
C:\Users\lsp\Desktop\svn\jhotdraw7\src\源码路径
D:\pmdreport\pmd_report.xml分析结果文件
<formatter type="xml" toFile="D:\pmdreport\pmd_report.xml"/> 格式化输出xml
<formatter type="net.sourceforge.pmd.renderers.HTMLRenderer" toFile="D:\pmdreport\foo.html"/> 格式化输出HTML
<path id="pmd.classpath">
<pathelement location="${build}"/>
<fileset dir="D:\Program Files\pmd-bin-5.1.0\lib">
<include name="*.jar"/>
</fileset>
</path>
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath"/>
<target name="pmd">
<pmd rulesetfiles="rulesets/java/imports.xml,java-unusedcode">
<formatter type="xml" toFile="D:\pmdreport\pmd_report.xml"/>
<fileset dir="C:\Users\lsp\Desktop\svn\jhotdraw7\src\">
<include name="**/*.java"/>
</fileset>
</pmd>
</target>
3.3 Maven
使用maven插件检测较为简单,只需在pom.xml文件中加入:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
执行mvn pmd:pmd
即可在target文件夹下看到以下文件:

即违反规则的报告文件,每个规则对应一个xml文件。也可以配置规则。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<configuration>
<rulesets>
<ruleset>/rulesets/braces.xml</ruleset>
<ruleset>/rulesets/naming.xml</ruleset>
</rulesets>
</configuration>
</plugin>
3.4 Eclipse Ide
安装网址: http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/
安装完右键项目或文件:选择PMD->check code即可使用PMD工具检查代码。
选择PMD-->Find suspect cut and paste。检查结果会放在reports目录下
PMD使用手册的更多相关文章
- java注释指导手册
译文出处: Toien Liu 原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Geeks提供了丰富 ...
- DPDK2.1开发者手册4-7
Mempool Labrary 一个内存池(memory pool)就是固定大小对象的分配器.在dpdk中,它是通过名字来标示唯一性的,且使用环形队列来保存没有使用的空闲对象.它提供了一些可选项服务例 ...
- DPDK2.1开发者手册3-4
环境抽象层EAL 环境抽象层的任务对访问底层资源例如硬件和内存提供入口.它提供了隐藏应用和库的特殊性性的通用接口.它的责任是初始化分配资源(内存,pci设备,定时器,控制台等等). EAL提供的典型服 ...
- DPDK2.1开发者手册1-2
Programmer’s Guide Release 2.1.0 翻译的目的是强化自己对dpdk的理解,看看2.1版本和现在使用的版本的差异,其次就是可能要走了,为那些要上手dpdk,但是又不想看英文 ...
- DPDK2.1 linux上开发入门手册
1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...
- 使用PMD进行代码审查
很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没 ...
- 白盒静态自动化测试工具:PMD使用指南
参考文献:http://www.oschina.net/p/pmd/http://www.cnblogs.com/flyme/archive/2011/09/09/2172548.htmlhttp:/ ...
- 使用PMD进行代码审查(转)
原文地址:使用PMD进行代码审查 很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目 ...
- Java 注解指导手册 – 终极向导
原文链接 原文作者:Dani Buiza 译者:Toien Liu 校对:深海 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Gee ...
随机推荐
- 【Java多线程与并发库】4.传统线程同步通信技术
我们先通过一道面试题来了解传统的线程同步通信. 题目:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程又循环100次,如此循环50次,请写出程序. 我没有看答案, ...
- php中foreach()函数与Array数组经典案例讲解
//php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...
- jquery技巧(持续更新。。)
(1)集合处理功能 //为索引为0,1,2的元素分别设置不同的字体颜色 $('p').each(function(i){ this.styl ...
- Make body have 100% of the browser height
Try setting the height of the html element to 100% as well. html, body { height: 100%; } Body looks ...
- Matlab聚类分析[转]
Matlab聚类分析[转] Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下: 方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更 ...
- xcode5时代如何设置Architectures和Valid Architectures
目前ios的指令集有以下几种: 1,armv6,支持的机器iPhone,iPhone2,iPhone3G及对应的iTouch 2,armv7,支持的机器iPhone4,iPhone4S 3,armv7 ...
- QT的父子Widget之间消息的传递(如果子类没有accept或ignore该事件,则该事件会被传递给其父亲——Qlabel与QPushButton的处理就不一样)
以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父w ...
- Java Random随机种子
第一种情况 Random rand = new Random(47); for(int i=0;i<10;i++) System.out.println(rand.nextInt(100)); ...
- wpf 资源的重用
资源的利用 1) Window.Resource <Window.Resource> <ImageBrush x:Key="TitleBrush" TileMod ...
- vmware克隆centos6.5 导致 system eth0 不可用解决办法
vim /etc/udev/rules.d/70-persistent-net.rules 可以看到eth0 eth1两个. 注释 NAME="eth0" # PCI device ...