原文地址:使用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进行代码审查(转)的更多相关文章

  1. 使用PMD进行代码审查

    很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没 ...

  2. 代码审查工具之PMD操作指南

    上周客户要求对OA系统的代码质量进行了一个整体审查,并且要出一份报告给领导. 为此花了半天时间把代码审查工具PMD琢磨了下,现将具体操作步骤描述如下,以供大家参考! 1 前言 质量是衡量一个软件是否成 ...

  3. 用Scertify Professional实现代码审查

    用Scertify Professional实现代码审查 作者:chszs,转载需注明.博客主页: http://blog.csdn.net/chszs Scertify Professional是一 ...

  4. MyEclipse2014 设备 checkstyle、PMD、findbugs 最简单的方法 详细说明

    最近的实验需要的代码审查和应用程序性能优化.在需求MyEclipse安装某些插件,由于如今的MyEclipse版本号和大多数教程的不一样了,一些安装选项也已经改变,所以安装起来非常费事,通过不断的尝试 ...

  5. IDEA上安装和使用checkstyle,findbugs,visualVM,PMD插件

    ##安装插件步骤: 1.打开settings 2.选择plugins 3.点击"Browse repositories" 4.搜索对应内插件,点击"install&quo ...

  6. pmd静态代码分析

    在正式进入测试之前,进行一定的静态代码分析及code review对代码质量及系统提高是有帮助的,以上为数据证明 Pmd 它是一个基于静态规则集的Java源码分析器,它可以识别出潜在的如下问题:– 可 ...

  7. 使用stylelint对CSS/Sass做代码审查

    对样式审查?很少人会这么做吧,但实际上开发者应该有这样的态度,尤其是不同团队多人开发时,这一点尤为重要. 在本文中,我将陈述两点:一是为什么我们需要对样式进行审查,二是如何将审查工具融合到整体的构建流 ...

  8. Android APK瘦身之Android Studio Lint (代码审查)

    ******** ******** 第一部分: 瘦身内容介绍 ******** ******** 项目新版本的迭代接近尾声, 因为历史累积问题, 导致有很多无效的资源让已经臃肿的APK变得更肿, 因此 ...

  9. 给 C# 开发者的代码审查清单

    这是为C#开发者准备的通用性代码审查清单,可以当做开发过程中的参考.这是为了确保在编码过程中,大部分通用编码指导原则都能注意到.对于新手和缺乏经验(0到3年工作经验)的开发者,参考这份清单编码会很帮助 ...

随机推荐

  1. python re.sub 括号匹配替换匹配到的内容后接数字

    如果代码为: text = re.sub(r'(?<=[{])([a-z]+)6(?=[}])', r'\13', text) 上面代码会报错,因为没有组合13,所以不能获得组合13的内容. 但 ...

  2. 【新业务搭建】竞争情报业务规划及体系构建的思考——By Team

    竞争情报业务规划.体系构建 一.竞争情报业务定位——“做什么” 一)业务愿景.目标和原则 愿景:将情报工作融入到公司各个业务中,成为业务活动的灯塔 目标:直接支撑标杆学习(间接支撑三大战略).直接支持 ...

  3. Android仿今日头条手界面

    public class MyIndicator extends HorizontalScrollView implements ViewPager.OnPageChangeListener { pr ...

  4. Python之traceback错误堆栈信息处理

    一.Python中的异常栈跟踪 之前在做Java的时候,异常对象默认就包含stacktrace相关的信息,通过异常对象的相关方法printStackTrace()和getStackTrace()等方法 ...

  5. springboot的相关信息

    Maven的配置:zzp_settings.xml <?xml version="1.0" encoding="UTF-8"?> <setti ...

  6. uva1391 2-SAT 问题

    题意在大白书上. 有3 种工作 abc 大于等于平均年龄的可以去做a c 工作, 小于平均年龄的可以去做 bc , 同样转化为2 -sat 去做, 因为对于每个人也只有2 种情况可以作为选择 #inc ...

  7. hdu 5140 主席树

    这题说的是每个员工有工资 水平 在公司待的年限这几个属性,有大量的查询 查的是在一定的水平和工作年限的工人总工资是多少 这个思路是比较简单的我们按照他们的水平排序,排完后,使用主席树不断地往里面插,然 ...

  8. jquery实现ajax跨域请求

    1.跨域问题: 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,像是一般的href属性,a标签什么的都不拦截. 如: 项目一:p1.html <body> ...

  9. spring AOP的注解实例

    上一篇写了spring AOP 的两种代理,这里开始AOP的实现了,个人喜欢用注解方式,原因是相对于XML方式注解方式更灵活,更强大,更可扩展.所以XML方式的AOP实现就被我抛弃了. 实现Sprin ...

  10. springcloud15---zuul-fallback

    package com.itmuch.cloud; import org.springframework.boot.SpringApplication; import org.springframew ...