是否有可用的 Checkstyle 规则来限制对静态变量和方法的非静态访问?
这应该引起警告:
instance.staticField = value;
Eclipse 对此有一个设置,但我想在构建中强制执行它。
是否有可用的 Checkstyle 规则来限制对静态变量和方法的非静态访问?
这应该引起警告:
instance.staticField = value;
Eclipse 对此有一个设置,但我想在构建中强制执行它。
我想使用javac -Xlint:static -Werror toto.java
是你正在寻找的。
从文档:
-Xlint:name
:启用警告名称。请参阅可以使用 -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 个警告
顾名思义,Checkstyle 只检查代码的形式。如果您搜索错误模式,您应该查看 Findbugs:
不,Checkstyle 对所有检查都有限制/范围 - 它仅检查一个文件的结构,无法获取其他类/文件的结构。