Uppder-Code, wie unbenutzte lokale Variable myDeductible zu beheben .please Vorschlag geben.PMD-Problem behoben werden
Antwort
Statt for(Deductible myDeductible: myDeductibles){
Verwendung der alten Art Schleife:
for(int count = 0; count < myDeductibles.size(); count++) {
jede andere Option ??? nach Anwendung Standard ... Ich muss neue Loop-Format verwenden ... – susho90
Entweder dies oder SuppressWarnings –
PMD können Sie wissen, dass Sie die Zuordnung aber nicht myDeductible
verwenden, das heißt es ist etwas faul geht.
am Schnipsel Suchen Sie zur Verfügung gestellt, können wir mehrere Eingänge (myDeductibles
, myOption
und aCoverage
) und einen Ausgang (myReturnList
) sehen. Außerdem gibt es die Schleife, die myReturnList
mit myOption
s und eine Bedingung füllt, die die Schleife unterbricht.
Ein genauerer Blick auf den Zustand sagt uns, dass innerhalb der Schleife die Bedingung entweder immer true
oder immer false
ist, vorausgesetzt die Getter haben keine Nebenwirkungen und sind immer gleich.
Daraus können wir, dass ableiten, sobald die Schleife myReturnList
beendet nur eine von genau drei Zustände haben:
- wenn
myDeductibles
leer ist, dann istmyReturnList
leer - wenn
myDeductibles
nicht leer ist und der Zustand isttrue
dannmyReturnList
enthält genau einenmyOption
weil die Bedingung die Schleife unterbricht, nachdem die erstemyOption
Zugabe
- wenn
myDeductibles
nicht leer ist und der Zustand istfalse
dannmyReturnList
enthält genau so vielemyOption
s, da es Elemente inmyDeductibles
Sie haben vielleicht bemerkt, dass keiner der drei Ergebnisse hängen oben an den Elementen von myDeductibles
selbst, nur auf die Menge der Elemente. Das ist es, was PMD uns zu sagen versucht.
Jetzt, da wir wissen, was die Schleife ist wirklich tun, wir die Warnung durch die Umsetzung der drei Ergebnisse, ohne die Elemente myDeductibles
beheben können:
List<Option> myReturnList;
if (myDeductibles.isEmpty()) {
myReturnList = Collections.emptyList();
} else if (CoverageConstants.COVERAGE_CODE_VC.equalsIgnoreCase(aCoverage.getCoverageCd())
&& !CoverageConstants.OPTION_CODE_ONE.equals(myOption.getOptionCd())) {
myReturnList = Collections.singletonList(myOption);
} else {
myReturnList = Collections.nCopies(myDeductibles.size(), myOption);
}
können Sie entweder unterdrücken die Warnung ('@ SuppressWarnings') oder verwenden Sie die lokale Variable, es ist kein Fehler, es sei denn, Sie behandeln Warnungen als Fehler. –
Ich kann nicht verwenden ... jede Codeänderung ur Feststellung ?? ich kann nicht sogar unterdrücken Warnungen auch – susho90
Sie könnten eine sehr Low-Level-Logger für diese Variable hinzufügen, so dass es in der Protokolldatei gedruckt werden würde, wenn Sie Low-Level konfiguriert haben in der Log-Konfigurationsdatei. – notionquest