前言:

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. hihocoder 后缀自动机二·重复旋律5

    求不同子串个数 裸的后缀自动机 #include<cstring> #include<cmath> #include<iostream> #include<a ...

  2. UVA 10652 Board Wrapping(二维凸包)

    传送门 刘汝佳<算法竞赛入门经典>P272例题6包装木板 题意:有n块矩形木板,你的任务是用一个面积尽量小的凸多边形把它们抱起来,并计算出木板占整个包装面积的百分比. 输入:t组数据,每组 ...

  3. [ CodeVS冲杯之路 ] P3143

     不充钱,你怎么AC? 题目:http://codevs.cn/problem/3143/ 大水题一道,只要会遍历,这里讲一下思路 先序遍历:先输出,然后左儿子,最后右儿子 中序遍历:先左儿子,再输出 ...

  4. cookie登录

    #coding:utf-8 import tornado.httpserver import tornado.ioloop import tornado.options import tornado. ...

  5. CString::GetLength()获得字节数

    按照MSDN的说吗,在选用MBCS多字节字符串编码时,该方法会得到正确的字节数.此时没有问题. For multibyte character sets (MBCS), GetLength count ...

  6. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

  7. PO-BO-VO-DTO-POJO-DAO

    POJO,BO,VO的关系: 简单理解:http://www.blogjava.net/vip01/archive/2007/01/08/92430.html 全面:https://www.cnblo ...

  8. 条件变量(Condition Variable)详解

    条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法.举个简单的例子,应用程序A中包含两个线程t1和t2.t1需要在bool变量test_cond ...

  9. MySql实现分页查询的SQL,mysql实现分页查询的sql语句(转)

    http://blog.csdn.net/sxdtzhaoxinguo/article/details/51481430 摘要:MySQL数据库实现分页查询的SQL语句写法! 一:分页需求: 客户端通 ...

  10. Windows8 上用Ubuntu-Ubuntu启动SSH

    公司刚给配了一个电脑,华硕的超级本8个G的内存,很强大的了,但是系统是64位的windows 8,我用wubi.exe直接安装到系统上,但是开机启动的时候总是下面这个错误,去Ubuntu社区请教,结论 ...