JD.METHOD.CBS

方法可以为静态方法

如果虚拟方法不访问成员变量或调用其他虚拟方法,则将触发 JD.METHOD.CBS。

漏洞与风险

存在不合理地增加类的内存占用量风险。这对移动和嵌入式系统来说是极为敏感的问题。要避免此问题,应将所报告的方法变为静态方法。

漏洞代码示例 1

复制
 public class A {
     public static int val = 0;
     public int counter = 0;

     public int foo() { // method can be static
         val = 109;
         return val;
     }
     public int test() { // method can not be static
        val = 100*counter;
        return val;
    }
 } 

针对第 5 行报告 JD.METHOD.CBS:方法“foo”可声明为静态方法。

方法“foo”仅使用静态类成员“val”,不会调用任何虚拟类方法。

修正代码示例 1

复制
 public class A {
     public static int val = 0;
     public int counter = 0;

     public static int foo() { // method can be static
         val = 109;
         return val;
     }
     public int test() { // method can not be static
        val = 100*counter;
        return val;
    }
 }