原文地址:使用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. Asp.NET 与 WebApi 共享Session

    首先新建一个.net framework 4.5.2的 web应用程序,选择WebApi基架,包括MVC与Webapi 1.在global.asax中启用Session 2.在HomeControll ...

  2. Java Naming and Directory Interface (JNDI) Java 命名和目录接口

    https://www.oracle.com/technetwork/java/jndi/index.html Lesson: Overview of JNDI (The Java™ Tutorial ...

  3. TA-Lib中文文档(一):快速开始

    TA-Lib 简介: 这是一个Python 金融指数处理库TA-LIB,他是基于 Cython 而不是 SWIG. TA-Lib is widely used by trading software ...

  4. hive引入jar包--HIVE.AUX.JARS.PATH和hive.aux.jars.path

    hive需要引入包时?该怎么引入? 一.hive-site.xml中的hive.aux.jars.path 此配置项对于hive server有效,但是是不会作用到hive shell.也就是说即使你 ...

  5. day10(java web之request&respone&访问路径&编码问题)

    day10 请求响应流程图 response response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletR ...

  6. 第1章 1.7计算机网络概述--理解OSI参考模型分层思想

    OSI七层模型,知识参考理论. 分层标准的好处: 1.不同的硬件生产商生产的硬件产品,连通后就可以用了,有助于互联网发展. 2.分层,分成不同的模块,某一层的变化,不会影响其他层.如:IPv4改为IP ...

  7. Atom预览markdown插件Markdown Preview Enhanced

    atom 上目前最强的 markdown 插件Markdown Preview Enhanced 是一款为 ATOM 编辑器编写的超级强大的 Markdown 插件.这款插件意在让你拥有飘逸的 Mar ...

  8. [WorldWind学习]20.修改ShapeFileLayer类及托管D3D文字绘制方法

    PluginSDK\ShapeFileLayer.cs Line:1027char[] fieldDataChars = dbfReader.ReadChars(fieldHeaders[j].Fie ...

  9. Mac OS X 在 Finder 里快速创建文本文件

    Automator 新建一个 Application   选取:应用程序 实用工具→运行AppleScript 添加一个动作 "Run AppleScript"代码如下: on r ...

  10. sysbench压测mysql基本步骤

    MySQL数据库测试 select   1.先创建数据库test,再准备数据 time /usr/local/sysbench/bin/sysbench --test=oltp --num-threa ...