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.
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
Tags und Links java findbugs code-review