自己收集的一些Checkstyle/PMD/Findbugs编码规范,或许对大家有点用
1、 检查使用*号的导入,默认为全部类。
2、 检查多余的导入,如一个类导入了多次。
3、 检查没有使用的导入。
4、 检查是否有非法的包,缺省检查sun.*;对于某些包是不建议直接调用的。
5、 不需要在相同包中导入一个类。
6、 文件的最大行数,缺省为1500。
7、 每行的最大字符数,缺省为80。
8、 方法的最大行数,缺省为150。
9、 匿名类的最大行数,缺省为20。
10、 检查方法参数的最大个数,缺省为7。
11、 检查正确的缩进,不要使用tab键,并建议在提交代码前Format一下。
12、 类名应该以大写字母开头。
13、 方法名最好以小写字母开头。
14、 方法名中不要包含下划线。
15、 软件包的名称不要包含大写字符。
16、 避免过短的变量名。
17、 常量最好由大写与下划线组成。
18、 去掉或者注释掉无用的变量。
19、 抽象类命名为应该为 'AbstractXXX'。
20、 避免没有一个抽象方法的抽象类
21、 在代码中多次出现的字符串最好定义为常量。
22、 避免使用“final”局部变量,将它变成类变量。
23、 避免在循环语句中初始化新对象(new变量)。
24、 确保资源(像连接、声明和记录集) 在使用后总是关闭。
25、 避免“if (x != y) ..; else ..”表达。
26、 大量软件包的导入表明在对象中高度耦合,可以考虑重构。
27、 过长参数列可以表明应该创建一个新的对象来封装众多的参数。从根本上来说,尝试对参数进行集合。
28、 一个没有附带break声明的switch语句可能有缺陷。
29、 有太多类变量的类应被重新设计为含有少量的类变量,可能通过嵌套对象对信息归类 。
30、 重写equals方法的类也需要同时重写hashcode方法。
31、 双重IF语句可以通过&&来结合条件表达式。
32、 语句中if/finally/catch等块内容不可为空。
33、 避免抛出空指针异常。
34、 对于if/else/for等花括号应当另取一行。
35、 对于/**注释信息*/应该写为:/** 注释信息 */。
36、 文件末尾需要一个空行。
37、 每个包下提供一个package.html文件。
38、 一个少于3个分支的switch语句是低效率的,应使用if语句。
39、 返回参数为数组的不能直接返回null,应该返回空数组。
40、 在使用调用创建删除文件方法时,需要处理下返回结果。
41、 集合判断空与非空使用list.isEmpty() 代替 list.size()==0。
42、 StringBuffer在append单个字符时,使用单引号如sb.append(‘:’)。
43、 避免在循环结构中出现较复杂的逻辑,对循环体内容进行方法封装。
44、 通过提取公共方法来去除重复代码。
45、 类实现了Cloneable但没有定义或使用clone方法。
46、 Random对象应一次创建多次使用
47、 clone方法没有调用super.clone()。
48、 字符串比较使用equals代替==与!=。
49、 如果类定义了compareTo()但从java.lang.Object继承了equals(),如果equals方法返回true,则compareTo必须返回0;否则会发生不可预知的错误;即如下表达式必须成立:(x.compareTo(y)==0) == (x.equals(y))。
50、 Array不要调用了toString方法。
51、 在exception路径中,要关闭数据库资源。
52、 IO stream创建后没有在exception路径中close。
53、 方法名或包中其他参数仅有大小写的区别。
54、 序列化类的非临时性字段有非序列化的值。
55、 serialVersionUID字段应该是final的。
56、 serialVersionUID字段类型应该是long。
57、 serialVersionUID字段应该是static的。
58、 类是序列化的,但没有定义serialVersionUID字段。
59、 序列化类的父类没有定义无参的constructor。
60、 equals()比较不相关的类和接口。
61、 比较byte和超出-128到127范围的数字。
62、 类定义了equal(Object),但没有重载java.lang.Object的该方法。
63、 类定义了hashcode(),但没有重载java.lang.Object的该方法。
64、 检查一个不可能为null的值是否为null。
65、 字段重复赋值,例如:x = x = 17。
66、 无意义的计算方法,相同的字段进行计算(例:x&x or x-x)。
67、 匿名类定义了没有调用或重载的方法。
68、 加锁时方法调用Thread.sleep();建议使用wait()。
69、 日历对多线程使用是不安全的。
70、 装箱的原始类型值创建后立即转换为其他的原始类型(new Double(d).intValue()),建议直接使用(int) d这样的形式。
71、 装箱的原始类型创建仅为了调用 toString()。直接调用原始类型的toString方法。例如:new Integer(1).toString() 换为:Integer.toString(1)。
72、 直接使用Double.valueOf(double),而不是new Double(double)。
73、 不建议使用new String(String),直接适应String即可。
74、 字符串和空字符串比较,建议使用 String.length() == 0而不是String.equals("")
75、 字符串调用.toString() 是多余操作。
76、 在循环中字符串拼接使用StringBuffer而不是直接用字符串的+
77、 使用map的entrySet迭代器而不是keySet。
78、 Switch、if语句的几个分支完全相同。
79、 比较两个浮点数。因为浮点数计算可能会导致溢出,考虑使用固定精度例: BigDecimal。
80、 无用的整数比较,因为总是返回相同的值(例:x <= Integer.MAX_VALUE)。
81、 重复判断对象是否不空(前面已知肯定不空)。
82、 类实现了和父类相同的接口。
分享到:
相关推荐
Eclipse插件之Checkstyle/PMD/Findbugs(官方下载路径)
包含了eclipse(MyEclipse也可用)下的pmd checkstyle findbugs插件
myeclipse 和 eclipse 集成插件
在eclipse中修改checkstyle和pmd、FindBugs规则集的方法
代码质量工具,,CheckStyle+PMD+FindBugs(Myeclipse10+和2014+版本插件)
checkstyle findbugs pmd svn-subversion(SVN客户端插件) pde-explorer(文件浏览器,在工程中选中某一文件夹,右键open in explorer) 插件合集 安装: 将压缩包解压进eclipse安装目录中,修改dropins中xxx.txt中...
checkstyle findbugs pmd 插件合集 附送一个open in explorer插件,在工程目录右键有个open in eplorer菜单,直接定位到文件夹 安装方法 将压缩包解压到eclipse目录下, 将mylink.txt(可随意修改名字)修改路径后...
findbugs checkstyle pmd
mvn clean install checkstyle: checkstyle pmd: pmd pmd: cpd findbugs: findbugs cobertura: cobertura Eclipse:可以通过m2e Eclipse插件导入项目,并使用Checkstyle、PMD和FindBugs分析代码。 可以使用 EclEmma...
FindBugs、PMD和CheckStyle对比 FindBugs、PMD和CheckStyle对比
Jenkins中FindBugs、PMD、CheckStyle和Violations静态分析工具安装配置详细介绍
Gradle 2.6. OS:windows server 2008 Jenkins 1.620 Findbugs 3.0.1 Checkstyle 6.11.2 Pmd 5.4.0
eclipse三大插件checkstyle+findbugs+pmd
为您运行Checkstyle,PMD,SpotBugs(以前称为FindBugs),Scalastyle,CodeNarc,JSLint,JSHint,TSLint和Detekt!用法Sputnik仅在受Gerrit补丁集影响的文件上运行Checkstyle,PMD,SpotBugs,CodeNarc,JSHint...
"https://raw.githubusercontent.com/chibatching/gradle-android-ci-check/master/ci.gradle"使用你自己的配置如果要使用自己的配置,请在 gradle.properties 中写入本地配置文件路径 checkStyleConfigFile=../...
findbugs(Spotbugs) 是一款静态代码扫描工具,可以找到Java代码的一些bug。 PMD 也是一款代码分析工具,主要找到代码里的一些问题,例如没有使用的变量、空的catch blocks、无用的对象创建等等。它支持Java, ...
NULL 博文链接:https://chengyu2099.iteye.com/blog/1172693
代码规范: Checkstyle / PMD / FindBugs / AlibabaJavaCodingGuidelines 编辑器配置 声纳 API规范化配置管理: 版本控制系统:Git 构建工具:渐变 配置管理:application.yml 环保管理:Vagrant / Docker memory ...
sputnik.zip,gerrit补丁集的静态代码检查。为您运行checkstyle、pmd和findbugs!gerrit补丁集的静态代码检查。为您运行checkstyle、pmd、findbugs、scalastyle、codenarc、jslint!