1.单词
violations outline:错误大纲
2.错误级别
红色
很高的错误
橙色
错误
黄色
很高的警告
绿色
警告
蓝色
输出信息
3.提示
Avoid excessively long variable names like machineLineService
避免像machineLineService的命名
Local variable 'queryString' could be declared fina
变量应该定义为final
Package name contains upper case characters
包名不应该大写
- Avoid instantiating new objects
inside loops
避免再循环中重复的构建实例
parameter 'ch' is not assigned and could be declared final
参数不分,可以声明为final
Variables that are not final should not contain underscores (except for underscores in standard prefix/suffix).
不是最终的变量不应该带有下划线
Assigning an Object to null is a code smell. Consider
refactoring.
为分配一个对象的代码认为时重构的
得出来的规范
1.变量名字要短
2.不变的string变量要定义为final
3.包名不应该大写
4.最终的变量应该多次命名应该带有下划线
5.avoid循环重复new对象
6.不应该多用括号
7.一个方法应该只有一个返回点
8.使用集合的类的isEmpty()判断集合是否为空
9.符号之间的要空格
10.捕捉了异常再抛出了异常
11.如果字符串的变量多次使用,那么定义为常量
12.不要实例化Sting对象,那样会破坏享元策略
13.方法的名字一定要第一个单词小写,之后每一个单词的首字母大写
14.
violations Overview
Element 包中类的建议提示
#Violations
建议级别
#Violations/LOC
#Violations/Method
Project
属于那个项目里边的
violations Overview 视图的提示
LongVariable
变量过长
MethodeArgumentCouldBeFinal
AvoidInstantiatingObjectsInLoops
循环中重复new对象
LocalVariableCouldBeFinal
变量定义应该用final
使用的时候检测错误有没有解决就手动 在Violations Overview中右键类选择check code with pmd
优化策略
1.避免多个返回点
2.简化if-else 如果出现在返回值时,返回决定
3.不要给Boolean,Integer和String 类型创建新的实例
4.以final类型标记方法参数
5.switch里面要有default
6.final只会负责不可变他负责的那一片内存地址

PMD教程的更多相关文章

  1. 【李婶小教程】(SE_lab3)

    额,今天说一下这个SE_lab3那几个东西都是怎么装的. 啊--其实技术含量貌似不是很高的. 1.先说最简单的一个叫做:Findbugs 点这个Eclipse Marketplace,这是一个神奇的东 ...

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

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

  3. eclipse插件之Findbugs、Checkstyle、PMD安装及使用

    eclipse插件之Findbugs.Checkstyle.PMD安装及使用 一.什么是Findbugs.checkstyle.PMD Findbugs.checkstyle和PMD都可以作为插件插入 ...

  4. 2020年B2B外贸建站的终极教程

    本文目标:按照本建站教程的顺序操作,能够实现:基于全球份额最大的建站系统“wordpress”,从零搭建一个B2B外贸网站,且建站成本每年小于1000元(如果不计算自己投入的人力成本的话). 模板站点 ...

  5. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  6. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  7. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  8. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  9. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

随机推荐

  1. android sdk tools 一览

    ANDROID SDK ADKROID SDK的工具划分为两部分,一部分是SDK tools,与平台无关,另一部分是Platform tools支持最新的安卓平台   SDK tools有 SDK m ...

  2. html、css、js实现轮播图

    2017-03-13 今天把轮播图的知识1过了一下,写了一个比较简单的轮播图,给大家参考一下. 查看具体的效果点击这个链接 : http://gjhnstxu.me/%E8%BD%AE%E6%92%A ...

  3. 当前最上层的视图控制器vc 和 当前最上层的导航控制器nav

    在处理 URL Router 跳转的时候,我们经常需要得到 当前最上层的视图控制器 和 当前最上层的导航控制器 来进行视图跳转或者方法调用.- (UIViewController *)currentV ...

  4. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十一)SVN服务器进阶

    日常啰嗦 上一篇文章<Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建>简单的讲了一下SVN服务器的搭建,并没有详细的介绍配置文件及一些复杂的功能, ...

  5. Gridview AutoGenerateColumns属性

    第一篇随笔,以后会陆续的把刚开始工作时的知识点都记录下来,毕竟现在用WebForm的不多了~ AutoGenerateColumns MSDN 说明 : 获取或设置一个值,该值指示是否为数据源中的每个 ...

  6. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  7. Jaro-Winkler Distance

    发现commons-lang 中有实现: StringUtils.class public static double getJaroWinklerDistance(final CharSequenc ...

  8. Mysql主从配置讲解

    一个主机上管理多个mysql实例 资源有限,只能用一台主机备份多个机器上的mysql,所以怎么才能在一台机器上运行多个mysql呢,肯定是要包括不同的端口,搜索一下mysql multi 可以配置管理 ...

  9. Lucas定理学习(进阶中)

    (1)Lucas定理:p为素数,则有: (2)证明: n=(ak...a2,a1,a0)p = (ak...a2,a1)p*p + a0 =  [n/p]*p+a0,m=[m/p]*p+b0其次,我们 ...

  10. Unity获取安卓手机运营商,电量,wifi信号强度,本地Toast,获取已安装apk,调用第三方应用,强制自动重启本应用

    一个完整的游戏项目上线需要不断的完善优化,但是到了后期的开发不再仅仅是游戏了,它的复杂度远远大于纯粹的应用开发.首先必须要考虑的就是集成第三方SDK,支付这块渠道商已经帮你我们做好了,只需要按照文档对 ...