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