[英]How do I ignore all data from an InputStream without tripping up static-analysis tools?
[英]NPE annotation scenarios and static-analysis tools for Java
以下是一些可以拋出NullPointerException的代碼片段。
01:
public void m1(@Nullable String text) {
System.out.print(text.toLowerCase()); // <-- expect to be reported.
}
02:
private boolean _closed = false;
public void m1(@Nullable String text) {
if(_closed)
return;
System.out.print(text.toLowerCase()); // <-- expect to be reported.
}
03:
public void m1(@NotNull String text) {
System.out.print(text.toLowerCase());
}
public @Nullable String getText() {
return "Some text";
}
public void m2() {
m1(getText()); // <-- expect to be reported.
}
不同的人可以訪問不同的靜態分析工具。 收集信息,能夠檢測和報告問題的工具以及失敗的信息會很好。 另外,如果你有自己的風景,請發布它們。
在這里我的結果
FindBugs(1.3.9):
IntelliJ IDE 9.0.2(社區版):
注釋包:
javax.annotation.* // JSR 305
edu.umd.cs.findbugs.annotations.* // FindBugs
org.jetbrains.annotations.* // IntelliJ
checkers.nullness.quals.* // Checker Framework
請注意,FindBugs對待@Nullable和@CheckForNull的方式完全不同 - 前者基本上是在說“我不知道這是否應該允許null”,而后者則說“此方法明確允許空值”。 當我們在代碼中全局地將所有@Nullable更改為@CheckForNull時,我的團隊有更多有用的FindBugs結果,因為后者是我們真正的意思。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.