以下一段代码被SonarQube标记为在运行PMD规则时出现UR异常,这让我感到困惑:
public void doSomething(String filename) {
final Resource resource = new ClassPathResource(filename);
//do something with the resource ...
}
我能理解DU(因为变量是短暂的),但为什么是UR?
根据数据流分析论文,UR代表“Undefined-Referenced”,DU代表“Defined-Undefined”。
第一个引用引用未定义的变量(可能的错误),第二个引用最近定义的变量未定义时(例如当你超出范围并且该变量被取消引用时)