java checkstyle规则用于非静态变量访问静态变量

时间:2012-06-20 14:32:29

标签: java checkstyle static-variables

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

这应该引发警告:

instance.staticField = value;

Eclipse有一个设置,但我想在构建上强制执行它。

4 个答案:

答案 0 :(得分:3)

我想使用javac -Xlint:static -Werror toto.java就是你要找的东西。

来自documentation

  • -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:

http://findbugs.sourceforge.net

答案 2 :(得分:1)

您可以使用FirebugPMD来实现此目的。两个主要的构建工具MavenAnt都有命令为您执行此操作。

答案 3 :(得分:1)

不,Checkstyle对所有检查都有限制/范围 - 它只检查一个文件的结构,不能获得其他类/文件的结构。