簡體   English   中英

如何針對同一行代碼抑制多個FindBugs警告

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM