这是代码:
public static String readFile(InputStream is) {
try (Scanner scanner = new Scanner(is); Scanner delimitedScanner = scanner.useDelimiter("\\A");) {
return scanner.hasNext() ? scanner.next() : "";
}
}
Run Code Online (Sandbox Code Playgroud)
findbugs 插件说:
已知非空值的冗余空检查 此方法包含对已知非空值与常量 nul 的冗余检查
并指出这一点:
return scanner.hasNext() ? scanner.next() : "";
} //this line contains bug!!!
}
Run Code Online (Sandbox Code Playgroud)
看图:
eclipse 显示相同的警告:
try-with-resources 结构混淆了直接查看字节码的代码分析器和覆盖工具。在 try-with-resources 块的末尾,会生成许多额外的字节代码,这些字节代码将以结束大括号作为其行号。
显然 FindBugs 似乎认为那里有问题。然而,几乎可以肯定事实并非如此。
覆盖工具也会发生同样的情况,即使该块已完全覆盖,但他们声称并非所有分支都被覆盖。这是因为 try-with-resources 块添加了对异常情况或资源为 null 的处理,而您无法通过单元测试等方式真正正确地覆盖这些情况。
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |