java – 如何对同一行代码抑制多个FindBugs警告

前端之家收集整理的这篇文章主要介绍了java – 如何对同一行代码抑制多个FindBugs警告前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近发现了FindBugs的@ edu.umd.cs.findbugs.annotations.SuppressWarnings注释,这是非常酷的,并允许你基本上告诉FindBugs忽略某些警告.

我已经成功地实施了我自己的SLF4J绑定,遵循他们的建议,采取slf4j简单,并用自己的记录器和记录器工厂绑定修改它,我很高兴地说它的作用就像一个魅力.

我刚刚在包含这个SLF4J绑定的包中发现错误,并且抱怨原始StaticLoggerBinder作者(Ceki Gulku)写的一行代码

// 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时,我在同一行代码上得到第二个警告,这次抱怨:

This field is never read. The field is public or protected,so perhaps it is intended to be used with classes not seen as part of the analysis. If not,consider removing it from the class.

当我添加第二个警告抑制:

@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得到一个编译器/语法错误

Duplicate annotation @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版本也是has a parameter of type String[].对于单个值,可以省略花括号,以使生活更轻松.

原文链接:https://www.f2er.com/java/123855.html

猜你在找的Java相关文章