checkStyle配置说明、范例和结果分析
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
checkStyle结果分析
参考:http://commons.apache.org/jelly/libs/http/checkstyle-report.html 1.Missing a Javadoc comment:缺少JavaDoc注释 8.'public' modifier out of order with the JLS suggestions. public顺序错误 9.Method 'deleteChild' is not designed for extension - needs to be abstract, final or empty. 不是拓展或继承的方法,必须指定abstract,final或空
1Type is missing a javadoc commentClass 缺少类型说明 2“{” should be on the previous line“{” 应该位于前一行。解决方法:把“{”放到上一行去 3Methos is missing a javadoc comment 方法前面缺少javadoc注释。解决方法:添加javadoc注释 类似这样: /** * set default mock parameter.(方法说明) * @param additionalParameters parameter additional(参数名称) * @return data manager(返回值说明) * @throws Exception if has error(异常说明) */ 4 Expected @throws tag for “Exception”在注释中希望有@throws的说明 解决方法:在方法前得注释中添加这样一行:* @throws Exception if has error(异常说明) 5“.” Is preceeded with whitespace “.” 前面不能有空格。解决方法:把“(”前面的空格去掉 6“.” Is followed by whitespace“.” 后面不能有空格。解决方法:把“)”后面的空格去掉 7“=” is not preceeded with whitespace“=” 前面缺少空格。解决方法:在“=”前面加个空格 8“=” is not followed with whitespace“=” 后面缺少空格。解决方法:在“=”后面加个空格 9“}” should be on the same line“}” 应该与下条语句位于同一行。解决方法:把“}”放到下一行的前面 10Unused @param tag for “unused”没有参数“unused”,不需注释 解决方法:“* @param unused parameter additional(参数名称)” 把这行unused参数的注释去掉“ 11Variable “CA” missing javadoc变量“CA”缺少javadoc注释 解决方法:在“CA“变量前添加javadoc注释:/** CA. */(注意:一定记得加上“.”) 12Line longer than 80characters行长度超过80 。解决方法:把它分成多行写。必要时候,可以ctrl+shift+f 13Line contains a tab character行含有”tab” 字符。快速解决方法:可以使用editplus中的format功能,把tab字符转化为空格,然后保存Editplus英文版安装文件在我机子上有。需要的可以来拷贝。注册Editplus,点击安装文件中注册的文件
15Final modifier out of order with the JSL suggestion Final modifier的顺序错误 16Avoid using the “.*” form of importImport格式避免使用“.*” 17Redundant import from the same package从同一个包中Import内容 18Unused import-java.util.listImport进来的java.util.list没有被使用。解决方法:去掉导入的多余的类 19Duplicate import to line 13重复Import同一个内容 解决方法:去掉导入的多余的类 20Import from illegal package从非法包中 Import内容 21“while” construct must use “{}” “while” 语句缺少“{}” 22Variable “sTest1” must be private and have accessor method变量“sTest1”应该是private的,并且有调用它的方法 23Variable “ABC” must match pattern “^[a-z][a-zA-Z0-9]*$”变量“ABC”不符合命名规则“^[a-z][a-zA-Z0-9]*$”解决方法:把这个命名改成符合规则的命名 “aBC” 24“(” is followed by whitespace“(” 后面不能有空格 25“)”is proceeded by whitespace“)” 前面不能有空格 解决方法:把前面或者后面的空格去掉 25、First sentence should end with a period.解决方法:你的注释的第一行文字结束应该加上一个"."。
解决方法:如果抛出两个异常,一个异常类是另一个的子类,那么只需要写父类 去掉NameNotFoundException异常,对应的javadoc注释异常注释说明也需要去掉
解决方法:} catch (NumberFormatException nfe) { LOG.error("Auto Renews the agreement failed", nfe);//异常捕捉里面不能为空,在异常里面加一句话。如打印等等
30、'>' is not followed by whitespace.并且又有 '(' is preceded with whitespace. 定义集合和枚举的时候的时候,最后一个“>”后面要有空格,“(”前面不容许有空格。解决方法:去掉泛型
解决方法:要确保某些类型,如某些类、接口不被throws。把声明的异常去掉。在实现类中抛出异常
2、因为编译好的类没有在checkstyle的classpath中.所以, 只要将编译好的class配置到在<checkstyle/>的classpath中就没有这个问题了.另外, 还发现checkstyle的line length好像也有点问题, 明明没有超过120个字符, 却还是报错.无奈, 我把Eclipse中java > code style > formatter中的Maximum line with改成了100, 然后format一下, 基本就没有问题了
解决方法:在内部类中,定义一个私有的构造方法,然后内部类声明为final类型。如果前面有static,那么final还必须放在static之后
解决方法:给这些变量的修饰符改成private,然后提供set,get方法,并加上对应的方法javadoc注释、参数注释。并在返回值和参数类型前添加final。并把调用了这个变量的地方改成通过方法访问
public class Foo public Foo(int bar) public final int getBar() 全局private int bar;和局部public Foo(int bar)的bar变量名字重复。
36、Got an exception - Unexpected character 0xfffd in identifier 这是因为CheckStyle不能识别制定的编码格式。 网上参考解决方法: 1、Eclipse中可以配置,在Other-->checker中可以指定 2、可以修改checkstyle配置文件: <module name="Checker"> <property name="severity" value="warning"/> <property name="charset" value="UTF-8"/> <module name="TreeWalker"> 如果是UTF-8的话,就添加加粗的那条语句,就可以了。 37、 Got an exception - java.lang.RuntimeException: Unable to get class information for @throws tag *whatever*.
网上一些其他错误的解答: public Foo(int bar) public final int getBar() 解释:public Foo(int bar)的局部变量,被认为是不可改变的,检查需要加上final关键字定义public Foo(final int bar)此错误,可以忽略不检查。 2. Redundant 'X' modifier. public interface CacheHRTreeService extends Manager { /** /** 解释:多余的字段。public OrganizationDTO getOrganization() throws Exception;此时public为多余的字段,因为interface定义的时候,就是public的。 需要检查。 3. - Class X should be declared as final. 解释:对于单例设计模式,要求返回唯一的类对象。但是HRFactory和ContextFactory为优化的两个类,不需求检查。 4. - Method 'addChildrenId' is not designed for extension - needs to be 解释:通过父类继承的,此类有点特殊可以忽略此类。 5. Variable 'id' must be private and have accessor methods.解释:BaseHRDTO类,为父类,属性给子类继承,比较特殊。但是其他的类,声名需要加上范围'private'关键字。需要检查。 6. -Array brackets at illegal position.解释:代码写法,习惯不一样。需要检查,仅仅提示 |
配置参考说明: