EN JP CN

JD.VNU

JD.VNU

JD.VNU は、変数に代入された値が代入後に 1 度も読み取られていないことを示します。

脆弱性とリスク

多くの場合、最適なコードではないという程度ですが、設定した値が実際には使用されていないということは、重大な論理エラーである可能性もあります。

軽減と防止

コードを最適化し、使用されていない代入を削除してください。

例 1

13     boolean checkArray(int arr[]) {
14         for (int i = 0; i < arr.length; i++) {
15             int item = arr[i];
16             String hexString = Integer.toHexString(item);
17             if (i % 2 == 0) {
18                 return true;
19             }
20         }
21         return false;
22     }

JD.VNU が 16 行目に対して報告されています。 hexString が配列内の各 'item' に対して作成されていますが、その後 1 度も使用されていません。

例 2

13     private long getTimeLen(long arr[]) {
14         long time1 = 0;
15         long time2 = 0;
16         long len = 0;
17         for (int i = 0; i < arr.length; i += 2) {
18             time1 = arr[i];
19             time1 = arr[i + 1];
20             if (time1 < time2) {
21                 long d = time1 - time2;
22                 if (d > len) {
23                     len = d;
24                 }
25             }
26         }
27         return len;
28     }

JD.VNU がスニペットの 2 つの代入に対して報告されています。

  • 14 行目の代入: 18 行目で 'time1' が上書きされているため、この演算は無意味であり、適切ではありません。
  • 18 行目の代入: 開発者は 'time2' 変数を初期化しようとしていますが、代わりに 'time1' が使用されています。

関連チェッカー