很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目前有点想做点东西的打算,但好像也没什么好的切入点,先边走边看吧,今天有点兴致来玩一下代码审查的工具了,分享一下吧,也不算什么新技术,但是好像网上的资料都过期了,就写在这边,可能会有人有需要把。

最近在审查代码,不得不说,很多人的代码还是写的很不规范,之前没接手现在这个项目的时候还真的不知道原来之前的人写代码这么浪,各种魔法数字乱飞,各种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进行代码审查(转)

    原文地址:使用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. 如何使用XE2及更高版本中提供的自定义皮肤(样式)功能

    源:如何使用XE2及更高版本中提供的自定义皮肤(样式)功能 1. 制作样式文件: 点击 XE2+ 的 IDE 菜单上的 Tools-->Bitmap Style Designer, 打开设计器. ...

  2. Zipf’s Law

    Let f(w) be the frequency of a word w in free text. Suppose that all the words of a text are ranked ...

  3. mustache.js使用基本(三)

    作者:zccst 本节要点是子模块(partials)和分隔符(delimiter)等 1,子模块(partials) /* {{>partials}}以>开始表示子模块,如{{> ...

  4. XCode 7上传遇到ERROR ITMS-90535 Unexpected CFBundleExecutable Key. 的解决办法

    去第三方的info.plist文件中,比如TencentOpenApi_IOS_Bundle.bundel 的info.plist ,删除 executable file 这一行

  5. IOS开发之IOS8.0最新UIAlertController

    最近苹果更新的IOS8 对以前进行了很大的修改, 更新的API也让人捉急,据说iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.比如全新的UIPrese ...

  6. OpenGL ES

    前言 OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:http://www.khronos.org/).在桌面计算机上有两套标准的 3DAPI:Direct3D和 ...

  7. python 发起HTTP请求

    因为微信公众号群发需要调用高级群发接口,其中涉及到python发起HTTP请求,现在将相关实现操作记录如下: 首先,HTTP请求分为GET和POST,如下所示: 首先是发起get 请求: # -*- ...

  8. db2 将原表列notnull属性修改为null属性的方法 (查看主键约束,唯一约束去syscat.tabconst)

    好久没机会写点东西了,今天把自己遇到的一个小问题跟大家分享一下如何修改db2数据库表中列的属性--将列的非空属性改为允许空的属性,修改数据表的某一列属性其实很简单但是里面有需要细节需要dba注意,毕竟 ...

  9. python 自动化之路 day 14

    今日内容 http://www.cnblogs.com/wupeiqi/articles/5699254.html 群共享 s15Html课件 1. paramiko模块 https://github ...

  10. ios自定义UIButton内部空间Rect