PMD的使用学习
是什么?
静态代码分析器
能找出什么问题?
可能的 bugs - 空的 try/catch/finally/switch 声明
死码 - 未使用的本地变量,参数和私有方法
次优代码 - 无用的 String/StringBuffer 使用
过于复杂的表达式 - 不必要的 if 声明,可能可以写成 while 的 for 循环
CPD,复制粘贴探测器,查找多种语言的重复代码:重复代码常常是由复制粘贴产生的。这意味着,bugs 也被复制粘贴了。修正它们意味着,修正所有重复的代码。
集成方式
1、IDE集成
2、jenkins集成
Jenkins -> Manage Jenkins -> Manage Plugins ,在 Jenkins 中安装 PMD 的插件。
这个命令将产生名为 pmd.xml
的 XML 格式的检查报告,这也是 Jenkins 的 PMD 插件所支持的格式。
参数说明
-d
参数用于指定项目的源码路径
-f
参数用于指定输出报告文件的格式
-r
用于指定输出报告文件的文件名
-rulesets
则用于指定检查规则集合。
也可以通过-R指定一个xml规则集
pmd -d c:\data\pmd\pmd\test-data\Unused1.java -f xml -R MyRules.xml
MyRules.xml内容:
在jenkins中生成报告:
生成报告之后在jenkins的job主页可以看到报告,点击进去可看详情
参考文档
https://blog.csdn.net/clamaa/article/details/70045962?locationNum=11&fps=1
https://www.colabug.com/2618099.html
https://pmd.sourceforge.io/pmd-5.1.0/
PMD的使用学习的更多相关文章
- 静态代码检查工具-PMD刚開始学习的人入门篇
前言: PMD是一款静态代码分析工具.它能够自己主动检測各种潜在缺陷以及不安全或未优化的代码. PMD很多其它地是集中在预先检測缺陷上.它提供了高度可配置的丰富规则集,用户能够方便配置对待特定项目使用 ...
- maven学习讲解
参考链接:http://www.cnblogs.com/bigtall/archive/2011/03/23/1993253.html 1.前言 Maven,发音是[`meivin],"专家 ...
- Java学习笔记(十五)——javadoc学习笔记和可能的注意细节
[前面的话] 这次开发项目使用jenkins做持续集成,PMD检查代码,Junit做单元测试,还会自动发邮件通知编译情况,会将javadoc生成的文档自动发到一个专门的服务器上面,每个人都可以看,所以 ...
- 代码静态分析工具--PMD,Findbugs,CheckStyle
最近学习Mybatis的官方文档,看到了[项目文档]一节有很多内容没有见过,做个笔记,理解一下. PMD 扫描Java源代码,查找潜在的问题,如: 可能的bugs,如空的try/catch/final ...
- Gradle学习
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言.近期,Gradle获得了极大的关注,这也是我决定去研究Gradle的原因. 这篇文章是 ...
- JDBC第三次学习
这是我的JDBC第三次学习了,在学习的过程中,老是会忘掉一些知识,不记下笔记实在不行啊! 使用JDBC调用存储过程 (1)关于如何使用Navicat(11.1.13) for MySQL如何创建存储过 ...
- LINUX内核分析第四周学习总结——扒开应用系统的三层皮(上)【转】
转自:http://www.cnblogs.com/lalacindy/p/5276874.html 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://moo ...
- 漫谈C语言及如何学习C语言
抄自:http://my.oschina.net/apeng/blog/137911 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一 ...
- findBugs学习小结
原文地址:http://www.cnblogs.com/doit8791/archive/2012/10/22/2734730.html 今天代码质量再次强调java代码提交SVN前要经过findBu ...
随机推荐
- Vue-cli3.0配置全局less
第一种配置方式(推荐) npm install style-resources-loader vue-cli-plugin-style-resources-loader less-loader les ...
- Django admin实现TextField字段changelist页面换行、空格正常显示
问题背景 在Django后台的使用admin view绑定model后,可以很方便的通过网页对底层的数据表进行增删查改操作. 在实际工作中有一些数据字段会存储了json或者其他包含换行符.空格符的文本 ...
- POI导入导出Excel(HSSF格式,User Model方式)
1.POI说明 Apache POI是Apache软件基金会的开源代码库, POI提供对Microsoft Office格式档案读和写的功能. POI支持的格式: HSSF - 提供读写Microso ...
- dos 之 for循环(小“病毒”)
需求: 1.自动在D盘下创建test2019文件夹: 2.自动在test2019下面创建100个文件,并写入"这是文件几的内容!": 3.自动打开100个CMD运行窗口(保持打开状 ...
- 华为云 Kubernetes 管理员实训 五 课后作业
练习1 部署一个Deployment应用,使用secret普通卷,该应用启动依赖此secret. Deployment的名称为<hwcka-005-1-你的华为云id> 将所用命令.创建的 ...
- c# - 接口的写法与基本调用
1.前言 接口与Java基本一样 2.操作 (1)看路径结果 (2) 接口源码: namespace ConsoleApp1 { public interface ILogin { void Eat( ...
- [Flask] 安装virtualenv时候出现的问题
1.HTTPError: 404 Client Error: Not Found for url: ...的错误 ubuntu@VM-0-6-ubuntu:~/myprojects$ virtuale ...
- Linux上天之路(十三)之系统进程管理
主要内容 进程介绍 进程管理 进程优先级 1. 进程介绍 Linux系统中的几乎任何行动都会以进程的形式进行.如果你用网络浏览器查看网页,浏览器就作为进程运行.如果键入bash shell的命令行,这 ...
- Mysql查询阻塞的sql
SELECTp2.`HOST` 被阻塞方host,p2.`USER` 被阻塞方用户,r.trx_id 被阻塞方事务id,r.trx_mysql_thread_id 被阻塞方线程号,TIMESTAMPD ...
- JUC之读写锁问题
读写锁 读写锁在同一时刻可以允许多个读线程访问,但是在写线程访问时,所有的读线程和其他写线程均被阻塞.读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升 ...