あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

バグのチェック

最近、findbugsでアプリケーションのリファクタリングというか、潜在バグのチェックをやっている。

FindBugs の RV_ABSOLUTE_VALUE_OF_RANDOM_INT (不適切な符号付き32-bit整数の乱数の絶対値計算) のバグタイプの対応として

Random#nextInt() で返された値に対して絶対値変換 Math.abs(int n) を使うのをやめて、上位の何ビットを落とすか
Random#nextInt() でInteger.MIN_VALUE が返されたときだけ Math.abs(int n) を使うのをやめて
Integer.MAX_VALUE か、適当な値を使うようにするか。

目的は正の整数の乱数を得ることなので、上位のビットを落とすだけでもいいような気がする。