FindBugs RV_ABSOLUTE_VALUE_OF_RANDOM_INT Warnung

8

Ich versuche mit FindBugs eine Code-Überprüfung für unser Projekt durchzuführen.

Wir haben eine Methode, um eine eindeutige ID (zufällig) zu generieren:

%Vor%

und findBugs geben RV_ABSOLUTE_VALUE_OF_RANDOM_INT warning an (RV: Fehlerhafter Versuch, den absoluten Wert einer 32-Bit-Zufallszahl mit Vorzeichen zu berechnen), ich vermute, das Problem liegt in String.valueOf(Math.abs(random.nextInt()) .

Wenn Sie also eine Erklärung dafür haben, warum dies so ist und wie Sie es beheben können?

danke.

    
Mouna Cheikhna 27.09.2011, 10:02
quelle

1 Antwort

18

Vielleicht liegt es an Math.abs kann tatsächlich negative Ergebnisse für ganzzahlige Eingaben zurückgeben :

%Vor%

Dies geschieht jedoch nur für MIN_VALUE, da-MIN_VALUE nicht dargestellt werden kann. Art eines Überlaufproblems.

Wie Sie es beheben können:

  • Erstellen Sie keine eigene UUID. Verwenden Sie java.util.UUID .

  • Setzen Sie die Zufallszahl lange vor dem Aufruf von Math.abs

  • Verwenden Sie random.nextInt (Integer.MAX_VALUE), um eine Zahl von 0 bis MAX_VALUE - 1

  • zu erhalten
Thilo 27.09.2011, 10:12
quelle

Tags und Links