静态代码检查工具-PMD初学者入门篇
2015-07-16 14:46
375 查看
前言:
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是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码。
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自带规则及自定义规则,有兴趣可自己研究下;
后续有时间在分享下;
相关文章推荐
- 说说PMO 的工作思路
- VS出现运行对话框程序 pThread->m_pMainWnd->DestroyWindow(); 错误
- Debug.startMethodTracing Debug.stopMethodTracing TraceView
- pm runtime management
- ccbpm工作流引擎是如何支持多种流程模式的
- npm安装livescript
- 如何得到yum的rpm包
- 工作中要用到RPM下载工具
- 使用fpm来制作rpm包
- 在游戏中添加Chipmunk 物理引擎
- 产品经理总结——空肥皂盒
- 全面认识APM和ACPI
- wscript:329: error: Could not autodetect OpenSSL support. Make sure OpenSSL development packages are
- ccBPM典型的树形表单和多表头表单的流程
- 《产品经理手册》:制造业产品经理手册。四星推荐。
- rpm卸载已经被删除文件的包
- 从2009年至2014年脸书(Facebook)的用户行为及其发展 The User Behavior in Facebook and its Development from 2009 until
- $ npm install sh.exe": npm: command not found
- CCBPM中的消息机制,CCIM服务端安装说明
- 如果你是PM,想转PM,拿走