EN JP CN

JD.METHOD.CBS

JD.METHOD.CBS

メソッドは静的です

JD.METHOD.CBS は仮想メソッドがメンバー変数にアクセスしない、または他の仮想メソッドを呼び出さないときにトリガーされます。

脆弱性とリスク

そのリスクは、クラスにおいて、不当に増えたメモリフットプリントです。これはモバイルや組み込み型システムにおいて、非常に慎重に扱う必要がある問題です。この指摘を回避するには、報告されたメソッドは静的になる必要があります。

脆弱コード例 1

1 public class A {
2     public static int val = 0;
3     public int counter = 0;
4
5     public int foo() { // method can be static
6         val = 109;
7         return val;
8     }
9     public int test() { // method can not be static
10        val = 100*counter;
11        return val;
12    }
13 } 

JD.METHOD.CBS が 5 行目に対して報告されています。メソッド「foo」は静的であると宣言できます。

メソッド「foo」は静的クラスメンバー「val」のみを使用し、任意の仮想クラスメソッドを呼び出しません。メソッドは静的ではないため、JVM は対応するオブジェクトが作成されるたびにメソッド「foo」にメモリを割り当てます。

修正コード例 1

1 public class A {
2     public static int val = 0;
3     public int counter = 0;
4
5     public static int foo() { // method can be static
6         val = 109;
7         return val;
8     }
9     public int test() { // method can not be static
10        val = 100*counter;
11        return val;
12    }
13 }