[英]How to suppress multiple FindBugs warnings for the same line of code
我最近發現了FindBugs的@edu.umd.cs.findbugs.annotations.SuppressWarnings
注釋非常酷,並且允許你基本上告訴FindBugs忽略某些警告。
我已經成功實現了我自己的SLF4J綁定,遵循他們的建議,采用slf4j-simple
並使用您自己的記錄器和記錄器工廠綁定對其進行修改,我很高興地說它就像一個魅力。
我剛剛在包含此SLF4J綁定的包上運行查找錯誤,並且它抱怨原始StaticLoggerBinder
作者(Ceki StaticLoggerBinder
)編寫的某行代碼:
// to avoid constant folding by the compiler, this field must *not* be final.
publicstatic String REQUESTED_API_VERSION = "1.6"; // !final
FindBugs抱怨說這個字段“ 不是最終的,但應該是 ”。 然而,SLF4J的(非常)聰明的人已經想到了這一點,並放置了上面提供的周圍評論。
所以,為了讓FindBugs閉嘴,我按照慣常的方式修改了FB警告:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
public static String REQUESTED_API_VERSION = "1.6";
當我清理我的項目並重新運行FindBugs時,我在同一行代碼上收到第二個警告,這次抱怨:
永遠不會讀取此字段。 該字段是公共的或受保護的,因此它可能用於未被視為分析一部分的類。 如果沒有,請考慮將其從課堂中刪除。
當我添加第二個警告抑制時:
@edu.umd.cs.findbugs.annotations.SuppressWarnings("MS_SHOULD_BE_FINAL")
@edu.umd.cs.findbugs.annotations.SuppressWarnings("URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD")
public static String REQUESTED_API_VERSION = "1.6";
我從Eclipse獲得了編譯器/語法錯誤:
重復注釋@SuppressWarnings。
如何在同一行代碼上抑制多個FindBugs警告?
只需在一個注釋中列出數組中的所有警告標識符:
@edu.umd.cs.findbugs.annotations.SuppressWarnings({
"MS_SHOULD_BE_FINAL",
"URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
public static String REQUESTED_API_VERSION = "1.6";
與標准java.lang.SuppressWarnings
,FindBugs版本也有一個String[]
類型的參數 。 對於單個值,可以省略花括號,以使生活更輕松。
FindBugs 3+風格:
@SuppressFBWarnings(
value={"NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE","STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"},
justification="let me just make the build pass")
試試這個:
@edu.umd.cs.findbugs.annotations.SuppressWarnings({"MS_SHOULD_BE_FINAL" , "URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
public static String REQUESTED_API_VERSION = "1.6";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.