PMD讓你知道你分配而不使用myDeductible
,即有貓膩。
看着你提供的片段中,我們可以看到幾個輸入(myDeductibles
,myOption
和aCoverage
)和一個輸出(myReturnList
)。此外還有一個循環,它填充了myReturnList
和myOption
,並且是一個打破循環的條件。
仔細研究一下這個條件告訴我們,在循環內條件要麼總是true
要麼總是false
,假設getter沒有副作用並且總是返回相同的結果。
由此我們可以推斷,一旦循環結束myReturnList
可以擁有的只有一個人完全三種狀態:
- 時
myDeductibles
爲空,則myReturnList
是空
- 時
myDeductibles
不爲空,條件是true
然後myReturnList
恰好包含一個myOption
,因爲在添加第一個條件之後條件打破循環myOption
- 當
myDeductibles
不爲空,條件是false
然後myReturnList
包含了一樣多的myOption
S作爲中存在的元素myDeductibles
您可能已經注意到,上面沒有這三個結果取決於myDeductibles
元素本身,只元素的數量。這就是PMD試圖告訴我們的。
現在我們知道什麼是循環真的這樣做,我們可以通過實現三個結果,而無需使用的myDeductibles
元素修復警告:
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);
}
您可以抑制警告('@ SuppressWarnings')或者使用局部變量,除非將警告視爲錯誤,否則不是錯誤。 –
我無法使用...任何代碼更改我發現??我甚至不能使用超壓警告 – susho90
您可以爲這個變量添加一個非常低的級別的記錄器,以便它將打印在日誌文件中,除非您配置了低級別在日誌配置文件中。 – notionquest