前言:

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. java算法(二) 快速排序

    快速排序是一种交换排序. 快速排序由C. A. R. Hoare在1962年提出. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分:分割点左边都是比它小的数,右边都是比它大的数. 然后再 ...

  2. Math对象常用方法

    1.Math.ceil(x) 返回x的向上取整. var a=Math.ceil(9.1); var b=Math.ceil(-9.1) console.log(a); console.log(b); ...

  3. 棘手的操作(bzoj 2333)

    Description 有N个节点,标号从1到N,这N个节点一开始相互不连通.第i个节点的初始权值为a[i],接下来有如下一些操作: U x y: 加一条边,连接第x个节点和第y个节点 A1 x v: ...

  4. [ CodeVS冲杯之路 ] P1068

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1068/ 这是一道神DP题,一开始状态设计错了,用位置和剩余卡片做下标,过了样例数据WA了 好了,讲正解,设 f[i][ ...

  5. ajax+json模态框中分页(spring+struts+mybatis+easyui分页插件)

    0.业务需求: 点击每个数字的时候可以显示每个对应的详细记录.也就是得点击11的时候拿着开采部与C级去查询.

  6. 飞扬的小鸟(NOIP2014)(丧病DP题)

    原题传送门 刚开始我还以为这道题目非常的简单.. 然后随便打了一个DP,直接WA,被zxyer狠狠地D了一顿. 然后发现有好多细节.. 首先假如某横坐标没有管子,那么l[x]=0;h[x]=m+1; ...

  7. 推荐一个国内的免费公共静态cdn

    https://cdn.baomitu.com/ 更新速度比bootcdn要快,收录的库也很齐全.

  8. HDU 5649.DZY Loves Sorting-线段树+二分-当前第k个位置的数

    DZY Loves Sorting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Oth ...

  9. 用了GradientDrawable后,当点击控件时,控件大小发生变化

    android新手:发现一个很奇怪的问题,用了GradientDrawable后,当点击控件时,程序自动使我的一些控件大小保持一致,为什么呢,我就是不想它们保持一致啊 改了好久好久:GradientD ...

  10. #424 Div2 C

    #424 Div2 C 题意 给出 k 个分数,初始分数未知,按顺序把这 k 个分数加到初始分数上,已知 n 个加入分数后的结果(无序),问初始分数有多少种可能. 分析 也就是说这 n 个结果,它们之 ...