是否有Checkstyle规则可用于限制对静态变量和方法的非静态访问?
这应该引发警告:
instance.staticField = value;
Eclipse有一个设置,但我想在构建上强制执行它。
答案 0 :(得分:3)
我想使用javac -Xlint:static -Werror toto.java
就是你要找的东西。
-Xlint:name
:启用警告名称。有关使用此选项可以启用的警告列表,请参阅Warnings That Can Be Enabled or Disabled部分和-Xlint选项。
-Werror
:如果出现警告,则终止编译。
我试过这个例子:
public class StaticTest {
public static String toto = "toto";
public static void main(String s[]) {
StaticTest st = new StaticTest();
st.toto="dfd";
}
}
,输出为:
StaticTest.java:16:警告:[静态]静态变量应该按类型名称限定,
StaticTest,而不是表达式
st.toto="dfd"; ^
错误:找到警告并指定了-Werror 1错误 1警告
答案 1 :(得分:1)
正如名称所示,Checkstyle仅检查代码的形式。如果你搜索bug模式,你应该看一下Findbugs:
答案 2 :(得分:1)
答案 3 :(得分:1)
不,Checkstyle对所有检查都有限制/范围 - 它只检查一个文件的结构,不能获得其他类/文件的结构。