前言:

PMD是一款静态代码分析工具。它能够自己主动检測各种潜在缺陷以及不安全或未优化的代码。

PMD很多其它地是集中在预先检測缺陷上。它提供了高度可配置的丰富规则集,用户能够方便配置对待特定项目使用那些规则。

安装及使用:

1.在Eclipse中 安装 PMD插件执行方式

ECLIPSE菜单 > HELP > Install New Software >

弹出窗体中在 work with中输入 PMD - http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/

,单击后面的”添加” > 确认>

会自己主动下载插件,下载须要点时间,>选择安装 subclipse 3 就可以;

2.激活PMD插件。

Ecplise的菜单Project->Properties->PMD。在这个窗体选择要应用的规则。并指定相对重要性,为特定项目具体配置PMD,眼下仅仅须要选中Enable PMD复选框,保留默认规则集。

3.执行PMD。

单击项目资源,右键->PMD->Check code with PMD。在Violation OverView视图中按问题严重程度列出PMD问题。在Violations outLinew右键show Details能够查看更具体的规则描写叙述以及说明规则的演示样例代码。

(PMD可检測一个项目、类、单个文件等等)

4.几种形式的检查结果





右键每条结果,能够进行几个操作

Show Details… :显示明细

Mark as reviewed:(标记为已审查)菜单项。这将向代码加入一个凝视,以指示PMD在这里忽略此问题。



Remove violation:能够手工纠正问题。并使用Remove violation(删除违例)直接从列表中删除此问题

clear violations reviews:清除之前 标记

PMD也能够直接检查一个项目,生成多种格式的报告文件



附录:

PMD附带了很多能够直接使用的规则

潜在的bug:空的try/catch/finally/switch语句

未使用的代码:未使用的局部变量、參数、私有方法等

可选的代码:String/StringBuffer的滥用

复杂的表达式:不必须的if语句、能够使用while循环完毕的for循环

反复的代码:拷贝/粘贴代码意味着拷贝/粘贴bugs

循环体创建新对象:尽量不要再for或while循环体内实例化一个新对象

资源关闭:Connect,Result,Statement等使用之后确保关闭掉

此外。还能够自己定义规则。检查Java代码是否符合某些特定的编码规范。

比如,你能够编写一个规则,要求PMD找出全部创建Thread和Socket对象的操作。

也能够依据实际情况更改自带规则的检查内容

PMD自带规则及自己定义规则,有兴趣可自己研究下;

兴许有时间在分享下。

静态代码检查工具-PMD刚開始学习的人入门篇的更多相关文章

  1. 作为刚開始学习的人应该怎样来学习FPGA

    FPGA作为一种高新的技术.已经逐渐普及到了各行各业.不管是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到如 ...

  2. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  3. wxWidgets刚開始学习的人导引(2)——下载、安装wxWidgets

    wxWidgets刚開始学习的人导引全目录   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wxS ...

  4. wxWidgets刚開始学习的人导引(1)——前言

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  5. JavaScript 刚開始学习的人应知的 24 条最佳实践

    原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意公布日期,认为不错就翻译了,翻译到 JSON.parse 那一节认为有点不正确路 ...

  6. wxWidgets刚開始学习的人导引(4)——wxWidgets学习资料及利用方法指导

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  7. 【React Native开发】React Native配置执行官方样例-刚開始学习的人的福音(8)

    ),React Native技术交流4群(458982758),请不要反复加群! 欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文 ...

  8. wxWidgets刚開始学习的人导引(6)——wxWidgets学习材料清单

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言2 下载.安装wxWidgets3 wxWidgets应用程序初体验4 wxWidgets学习资料及利用方法指导5 用wx ...

  9. 刚開始学习的人制作VMOS场效应管小功放

    VMOS场效应管既有电子管的长处又有晶体管的长处,用它制作的功率放大器声音醇厚.甜美,动态范围大.频率响应好.因此近年来在音响设备中得到了广泛应用. 大功率的场效应管功率放大器.电.路比較复杂.制作和 ...

随机推荐

  1. 3.5 实例讲解Lucene索引的结构设计

    3.2节我们已经运行了一个Lucene建立索引的小程序,这一节我们就以这个小程序为例讲解一下Lucene建立索引的过程. import java.nio.charset.StandardCharset ...

  2. 生成DLL

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  3. 【问题帖】压缩图片大小至指定Kb以下

    像PS,QQ影像等都有该功能,将图片大小压缩至指定kb以下. 我也来山寨一把,到目前为止,控制图片的大小,平时的解决方案通过分辨率和质量来控制的. 假定最后压缩的大小是100kb,那么在保证不大于10 ...

  4. loj 数列分块入门 6 9(区间众数)

    6 题意 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及单点插入,单点询问,数据随机生成. 题解 参考:http://hzwer.com/8053.html 每个块内用一个\(vecto ...

  5. Hoof, Paper, Scissors(USACO)

    题目大意: 一种游戏(类似于石头剪刀布):两个人分别给出一个字母,然后比较:H>S,S>P,P>H,我们已知对手的字母顺序,求在前n局中我们最多能赢多少次. 由于出字母的人非常懒,所 ...

  6. (转)MSI - Enable MSI Logging

    转自: http://www.cnblogs.com/atempcode/archive/2007/04/10/707917.html 安装MSI安装包的时候, 有时会遇到错误, 这时LOG文件就非常 ...

  7. [MySQL] 参数: innodb_flush_log_at_trx_commit和sync_binlog

    MySQL参数: innodb_flush_log_at_trx_commit和sync_binlog innodb_flush_log_at_trx_commit和sync_binlog是MySQL ...

  8. msvc/gcc:中用#pragma指令关闭特定警告(warning)

    在使用一些第三方库或源码的时候,经常会遇到编译时产生warnings情况,这些warning不是我们自己的代码产生的,当然也不好去修改,但每次编译都显示一大堆与自己代码无关的警告也着实看着不爽,更麻烦 ...

  9. Couchbase应用示例(初探)

    安装过程:略. 1. 新建Web项目 从NuGet获取并引用: CouchbaseNetClient,添加后引用列表显示为 : Couchbase.NetClient 2. 需要对项目添加引用,这里我 ...

  10. hdu 畅通工程系列题目

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 并查集水. #include <stdio.h> #include <iost ...