使用PMD进行代码审查(转)
原文地址:使用PMD进行代码审查
很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没什么好的切入点,先边走边看吧,今天有点兴致来玩一下代码审查的工具了,分享一下吧,也不算什么新技术,但是好像网上的资料都过期了,就写在这边,可能会有人有需要把。
最近在审查代码,不得不说,很多人的代码还是写的很不规范,之前没接手现在这个项目的时候还真的不知道原来之前的人写代码这么浪,各种魔法数字乱飞,各种try catch,Collection也不注意性能,只要功能能实现就好了,导致性能异常低下,还有各种从网上copy代码也不看看性能的,最扯的是竟然看到了一个MD5的实现。。。难道之前写代码的人不知道java自带的md5实现吗?也就不吐槽了,现在接手代码需要对代码进行整改重构,想先大概的扫一遍代码,不过代码量的确也很大,肉眼看的话,实在是有点累人,也就想着偷懒看能不能找些自动扫描工具,查了一下,目前用的比较多的也就PMD,checkstyle,findbugs,大致看了下,目前用的人比较多的好像是PMD,而且官网一直也在更新,就上网站下载下来了。
不知道是不是因为被墙的关系,https://pmd.github.io/ pmd的包下载的特别慢,下载的速度一直保持在10几K,好不容易下载完了,在下载的中间网上顺便查了一下使用手册,但是竟然发现,网上的资料竟然那么老,都不能用了,还是要去看官方文档上的资料,笔者使用的是window7的系统,下载完之后,解压出来,按下WIN+R,打开运行命令cmd,进入控制台,进入到~\pmd-bin-5.4.4\bin,刚才解压的路径下,接下来就是要对工程进行扫描了
例子如下
pmd -d E:\Eclipse-Projects\project-1.2-develop -f html -r e:\design.html -R java-design
-d 是dir,指定代码路径,笔者扫描的是整个代码工程,-f 是format,指定要输出的格式,默认是txt, -R 是指定使用的是哪种规则集,这里说一下,网上目前看的,除了笔者的这篇文章其他写的几乎都是错的,至少我目前没看到正确的规则集,新版的规则集格式换了,
目前pmd支持的规则集有 java-basic,java-unusedcode,java-imports,java-design,java-typeresolution,指定的规则集就是扫描的代码必须满足一定的规则才可以通过,如果不满足的话,pmd都会帮你罗列出不满足规则集的代码,以及行号,还有-r 是-reportfile指定输出的文件路径,这样基本的命令,运行的话就可以等待控制台完成,去指定路径查看html,看工具给我们的代码提了哪些意见了,笔者认为这个工具还是不错的,相比与checkstyle的话,checkstyle如果自己不写规则的话,按照google或者sun自带的规则的话,就实在太严格了,满满的都是报错。。
PMD里面还给我们提供了一些好用的GUI的工具
里面的cpdgui可以查找重复的代码,bgastviewer可以把代码抽象成语法树等等,剩下的大家可以自己去摸索了,这个工具相对目前其他的代码审查工具,功能还是挺全面的,大家可以一试。
使用PMD进行代码审查(转)的更多相关文章
- 使用PMD进行代码审查
很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没 ...
- 代码审查工具之PMD操作指南
上周客户要求对OA系统的代码质量进行了一个整体审查,并且要出一份报告给领导. 为此花了半天时间把代码审查工具PMD琢磨了下,现将具体操作步骤描述如下,以供大家参考! 1 前言 质量是衡量一个软件是否成 ...
- 用Scertify Professional实现代码审查
用Scertify Professional实现代码审查 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs Scertify Professional是一 ...
- MyEclipse2014 设备 checkstyle、PMD、findbugs 最简单的方法 详细说明
最近的实验需要的代码审查和应用程序性能优化.在需求MyEclipse安装某些插件,由于如今的MyEclipse版本号和大多数教程的不一样了,一些安装选项也已经改变,所以安装起来非常费事,通过不断的尝试 ...
- IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件
##安装插件步骤: 1.打开settings 2.选择plugins 3.点击"Browse repositories" 4.搜索对应内插件,点击"install&quo ...
- pmd静态代码分析
在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...
- 使用stylelint对CSS/Sass做代码审查
对样式审查?很少人会这么做吧,但实际上开发者应该有这样的态度,尤其是不同团队多人开发时,这一点尤为重要. 在本文中,我将陈述两点:一是为什么我们需要对样式进行审查,二是如何将审查工具融合到整体的构建流 ...
- Android APK瘦身之Android Studio Lint (代码审查)
******** ******** 第一部分: 瘦身内容介绍 ******** ******** 项目新版本的迭代接近尾声, 因为历史累积问题, 导致有很多无效的资源让已经臃肿的APK变得更肿, 因此 ...
- 给 C# 开发者的代码审查清单
这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...
随机推荐
- Most efficient way to get the last element of a stream
Do a reduction that simply returns the current value: Stream<T> stream; T last = stream.reduce ...
- MySQL的redo log结构和SQL Server的log结构对比
MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...
- spark 调优概述
分为几个部分: 开发调优.资源调优.数据倾斜调优.shuffle调优 开发调优: 主要包括这几个方面 RDD lineage设计.算子的合理使用.特殊操作的优化等 避免创建重复的RDD,尽可能复用同一 ...
- mysql数据库表的查询操作-总结
转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...
- C语言中exit函数的使用
exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一 ...
- VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)
前面两节为大家讲了列表视图控件List Control,这一节开始介绍一种特殊的列表--树形控件Tree Control. 树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的 ...
- selenium+java破解滑动验证码
2019-04-16更新 修复极验页面改版,这次采用极验官方的demo地址:https://www.geetest.com/demo/slide-bind.html 截止2019-04-16,极验和腾 ...
- Spring Data JPA 关系映射(一对一,一对多,多对多 )
CascadeType.REMOVE 级联删除操作,删除当前实体时,与它有映射关系的实体也会跟着被删除.CascadeType.MERGE 级联更新(合并)操作,当Student中的数据改变,会相应地 ...
- 关于函数strtok和strtok_r的使用要点和实现原理(一)【转】
本文转载自:http://astute11.blog.51cto.com/4404646/1334198 strtok函数的使用是一个老生常谈的问题了.该函数的作用很大,争议也很大.以下的表述可能与一 ...
- java类同时引用父类和接口的成员变量,需要指明是父类的还是接口的
code: package com.qhong; public class Main extends B implements A{ public static void main(String[] ...