是否有Checkstyle规则可用于限制对静态变量和方法的非静态访问?

这应该发出警告:

instance.staticField = value;

Eclipse对此有一个设置,但是我想在构建中强制执行它。

最佳答案

我猜想使用javac -Xlint:static -Werror toto.java是您想要的。

documentation:

  • -Xlint:name:启用警告名称。有关可以使用此选项启用的警告的列表,请参见带有-Xlint选项的Warnings That Can Be Enabled or Disabled部分。
  • -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:警告:[static]静态变量应按类型名称限定,

    StaticTest,而不是表达式
       st.toto="dfd";
    
         ^
    

    错误:找到警告并指定了-Werror
    1个错误
    1警告

    08-05 07:13