JAVA.MAGIC.NUMBER
使用されるマジックナンバー: 数字。
マジックナンバーが使用されています。このチェッカーは、バイナリ演算でのマジックナンバーの使用にフラグを立てます。
脆弱性とリスク
マジックナンバーの使用により、保守性が損なわれます。
軽減と防止
final 修飾子を使用して定数変数を宣言します。
例 1
コピー
public class C11 {
double d314 = 3.14; //NG
int i0 = 0;//OK 0 is exception
int i1 = 1;//OK 1 is exception
int i2 = 2;//NG
final int final_i2 = 2;//OK
int assign_final_i2 = final_i2;//OK
int assign_final_i2_and_magicnum = final_i2 + 3;//NG
char c1 = '1';//NG
final char final_c1 = '1';//OK
String s1 = "string1";//NG
final String sf1 = "string1";//OK
final double fDB314 = 3.14;//OK
double var_init_with_const = fDB314;
public void somefunc_number(double a, int b) {
}
public void somefunc_char(char str) {
}
public void somefunc_string(String str) {
}
public void test_number(int v, String strVar) {
double local_var = 3.14;//NG
if (v < 3) {//NG
somefunc_number(v, 2);//NG
somefunc_number(3.1, v);//NG
somefunc_number(v, v);//OK
}
if (0 != v) {//NG
}
}
public void test_char(char v) {
char local_var = 'a';//NG
final char final_local_var = 'a';//OK
if (v != '3') {//NG
somefunc_char('a');//NG
somefunc_char(v);//OK
}
if ('0' != v) {//NG
}
}
public void test_string(String v) {
String local_var = "a";//NG
final String final_local_var = "fix";//OK
if (v.length() != "3".length()) {//NG
somefunc_string("a");//NG
somefunc_string(v);//OK
}
if ("0".length() != v.length()) {//NG
}
}
}