1. 下载地址:https://sourceforge.net/projects/pmd/files/pmd/5.1.0/
  2. 安装:解压到任意目录。

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使用手册的更多相关文章

  1. java注释指导手册

    译文出处: Toien Liu   原文出处:Dani Buiza 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Geeks提供了丰富 ...

  2. DPDK2.1开发者手册4-7

    Mempool Labrary 一个内存池(memory pool)就是固定大小对象的分配器.在dpdk中,它是通过名字来标示唯一性的,且使用环形队列来保存没有使用的空闲对象.它提供了一些可选项服务例 ...

  3. DPDK2.1开发者手册3-4

    环境抽象层EAL 环境抽象层的任务对访问底层资源例如硬件和内存提供入口.它提供了隐藏应用和库的特殊性性的通用接口.它的责任是初始化分配资源(内存,pci设备,定时器,控制台等等). EAL提供的典型服 ...

  4. DPDK2.1开发者手册1-2

    Programmer’s Guide Release 2.1.0 翻译的目的是强化自己对dpdk的理解,看看2.1版本和现在使用的版本的差异,其次就是可能要走了,为那些要上手dpdk,但是又不想看英文 ...

  5. DPDK2.1 linux上开发入门手册

    1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...

  6. 使用PMD进行代码审查

    很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没 ...

  7. 白盒静态自动化测试工具:PMD使用指南

    参考文献:http://www.oschina.net/p/pmd/http://www.cnblogs.com/flyme/archive/2011/09/09/2172548.htmlhttp:/ ...

  8. 使用PMD进行代码审查(转)

    原文地址:使用PMD进行代码审查 很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目 ...

  9. Java 注解指导手册 – 终极向导

    原文链接 原文作者:Dani Buiza 译者:Toien Liu  校对:深海 编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它. 我们已经在Java Code Gee ...

随机推荐

  1. chromium安装flash

    sudo apt-get install pepperflashplugin-nonfree sudo update-pepperflashplugin-nonfree --install Flash ...

  2. 【原创】The Error in Android developing

    本文停止更新.... 鼠标渣渣 ,点一次 成两次  R.java文件不幸中枪  被拖动修改... 最后application编译运行时   解决方案:project-clean 问题解决了..   2 ...

  3. C++编译器合成Default Constructor的4种情况

    笔记C++编译器为编译器需要合成Default Constructor的4种情况. 1,Class A内含Class B对象,Class A没有Default Constructor时会在编译时合成D ...

  4. Sevlet局部变量初始化

    //java 代码部分package com.servlet; import java.io.IOException; import java.io.PrintWriter; import java. ...

  5. 构建微服务:Spring boot

    构建微服务:Spring boot 在上篇文章构建微服务:Spring boot 提高篇中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jp ...

  6. JavaScript 语句后应该加分号么?

    分号加与不加完全取决于个人习惯,但为了代码稳定(解析出错)还是建议使用分号断句. JavaScript自动加分号规则:1.当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹 ...

  7. 你一定要知道的关于Linux文件目录操作的12个常用命令

    写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...

  8. vbox里面的Ubuntu虚拟机与主机win7之间设置共享文件夹

    有时候我们希望虚拟机和主机之间进行通信,例如传一些文件.那么设置共享文件夹就是一种很好的方式. 这里我的主机是win7系统,vbox里面的虚拟机是Ubuntu. 1.首先安装vbox的VBOXGues ...

  9. 【POJ11855】 Buzzwords (后缀数组)

    Description The word “the” is the most commonthree-letter word. It evenshows up inside other words, ...

  10. windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)

    对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...