Fixe SonarQube Reliability-Issues S2789, S3077 und S2184
S2789 (32 Stellen): null-Checks auf Optional-Feldern entfernt bzw. durch Objects.requireNonNullElse(field, Optional.empty()) ersetzt. Die zuvor defensive Behandlung von null-Optionals erfolgt jetzt ueber den Bibliotheksaufruf, sodass das Verhalten unveraendert bleibt, aber die direkte Null-Pruefung gegen Optional entfaellt. S3077 (5 Stellen): volatile-Felder mit Objekt-Referenzen durch AtomicReference ersetzt (ScheduledExecutorServiceSchedulerAdapter, BootstrapRunner.guiApplicationRunContext, PdfPreviewPane.currentDocument/ currentRenderer/currentSourceFile, SingleInstanceGuard.socket). Die PdfPreviewPane-Felder werden auf JavaFX- bzw. Worker-Thread genutzt; AtomicReference bietet hier konsistente atomare Publikation ohne Verhaltensaenderung. S2184 (3 Stellen): Integer-Division SECONDARY_SPACING / 2 durch SECONDARY_SPACING / 2.0 ersetzt, damit das Insets-Argument als double ohne implizite Truncierung berechnet wird.
This commit is contained in:
+4
-3
@@ -1,6 +1,7 @@
|
||||
package de.gecheckt.pdf.umbenenner.application.port.in;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@@ -37,9 +38,9 @@ public record HistoricalDocumentContext(
|
||||
* {@code lastFailureInstant} {@code null} sind
|
||||
*/
|
||||
public HistoricalDocumentContext {
|
||||
lastTargetFileName = lastTargetFileName == null ? Optional.empty() : lastTargetFileName;
|
||||
lastSuccessInstant = lastSuccessInstant == null ? Optional.empty() : lastSuccessInstant;
|
||||
lastFailureInstant = lastFailureInstant == null ? Optional.empty() : lastFailureInstant;
|
||||
lastTargetFileName = Objects.requireNonNullElse(lastTargetFileName, Optional.empty());
|
||||
lastSuccessInstant = Objects.requireNonNullElse(lastSuccessInstant, Optional.empty());
|
||||
lastFailureInstant = Objects.requireNonNullElse(lastFailureInstant, Optional.empty());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+5
-12
@@ -1,6 +1,7 @@
|
||||
package de.gecheckt.pdf.umbenenner.application.port.in;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import de.gecheckt.pdf.umbenenner.application.port.out.RunSummary;
|
||||
@@ -48,18 +49,10 @@ public record SchedulerStatus(
|
||||
if (state == null) {
|
||||
throw new IllegalArgumentException("state darf nicht null sein");
|
||||
}
|
||||
if (lastRunEndedAt == null) {
|
||||
throw new IllegalArgumentException("lastRunEndedAt darf nicht null sein");
|
||||
}
|
||||
if (lastRunSummary == null) {
|
||||
throw new IllegalArgumentException("lastRunSummary darf nicht null sein");
|
||||
}
|
||||
if (nextTickAt == null) {
|
||||
throw new IllegalArgumentException("nextTickAt darf nicht null sein");
|
||||
}
|
||||
if (lastError == null) {
|
||||
throw new IllegalArgumentException("lastError darf nicht null sein");
|
||||
}
|
||||
Objects.requireNonNull(lastRunEndedAt, "lastRunEndedAt darf nicht null sein");
|
||||
Objects.requireNonNull(lastRunSummary, "lastRunSummary darf nicht null sein");
|
||||
Objects.requireNonNull(nextTickAt, "nextTickAt darf nicht null sein");
|
||||
Objects.requireNonNull(lastError, "lastError darf nicht null sein");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ public record EffectiveApiKeyDescriptor(
|
||||
*/
|
||||
public EffectiveApiKeyDescriptor {
|
||||
Objects.requireNonNull(origin, "origin must not be null");
|
||||
envVarName = envVarName == null ? Optional.empty() : envVarName;
|
||||
envVarName = Objects.requireNonNullElse(envVarName, Optional.empty());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -45,7 +45,7 @@ public record ModelCatalogRequest(
|
||||
if (timeoutSeconds <= 0) {
|
||||
throw new IllegalArgumentException("timeoutSeconds must be positive, was: " + timeoutSeconds);
|
||||
}
|
||||
baseUrl = baseUrl == null ? Optional.empty() : baseUrl;
|
||||
apiKey = apiKey == null ? Optional.empty() : apiKey;
|
||||
baseUrl = Objects.requireNonNullElse(baseUrl, Optional.empty());
|
||||
apiKey = Objects.requireNonNullElse(apiKey, Optional.empty());
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ public record EditorValidationFinding(
|
||||
public EditorValidationFinding {
|
||||
Objects.requireNonNull(severity, "severity must not be null");
|
||||
Objects.requireNonNull(message, "message must not be null");
|
||||
fieldKey = fieldKey == null ? Optional.empty() : fieldKey;
|
||||
fieldKey = Objects.requireNonNullElse(fieldKey, Optional.empty());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-3
@@ -89,9 +89,7 @@ public sealed interface CheckpointResult
|
||||
Objects.requireNonNull(checkpointId, "checkpointId must not be null");
|
||||
Objects.requireNonNull(severity, "severity must not be null");
|
||||
Objects.requireNonNull(message, "message must not be null");
|
||||
correctionSuggestion = correctionSuggestion == null
|
||||
? Optional.empty()
|
||||
: correctionSuggestion;
|
||||
correctionSuggestion = Objects.requireNonNullElse(correctionSuggestion, Optional.empty());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user