JD.METHOD.CBS

Method can be static

JD.METHOD.CBS is triggered when a virtual method does not access member variables or call other virtual methods.

Vulnerability and risk

The risk is the unjustifiably increased memory footprint of a class. This is particularly sensitive matter for mobile and embedded systems. To avoid this issue, reported methods should become static.

Vulnerable code example 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 is reported for line 5: Method 'foo' can be declared static.

The method 'foo' uses only static class member ‘val’ and doesn’t call any virtual class methods.

Fixed code example 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 }