2016-06-29 7 views
0

Uppder-Code, wie unbenutzte lokale Variable myDeductible zu beheben .please Vorschlag geben.PMD-Problem behoben werden

+0

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. –

+0

Ich kann nicht verwenden ... jede Codeänderung ur Feststellung ?? ich kann nicht sogar unterdrücken Warnungen auch – susho90

+0

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

Antwort

0

Statt for(Deductible myDeductible: myDeductibles){ Verwendung der alten Art Schleife:

for(int count = 0; count < myDeductibles.size(); count++) { 
+0

jede andere Option ??? nach Anwendung Standard ... Ich muss neue Loop-Format verwenden ... – susho90

+0

Entweder dies oder SuppressWarnings –

0

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:

  1. wenn myDeductibles leer ist, dann ist myReturnList leer
  2. wenn myDeductibles nicht leer ist und der Zustand ist true dann myReturnList enthält genau einen myOption weil die Bedingung die Schleife unterbricht, nachdem die erste myOption
  3. Zugabe
  4. wenn myDeductibles nicht leer ist und der Zustand ist false dann myReturnList enthält genau so viele myOption s, da es Elemente in myDeductibles

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); 
} 
Verwandte Themen