我最近发现了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[].对于单个值,可以省略花括号,以使生活更轻松.

java – 如何对同一行代码抑制多个FindBugs警告的更多相关文章

  1. PMD,checkstyle和findbugs android设置

    如何使用最新版本的gradle为Android项目设置PMD,Findbugs和Checkstyle静态代码分析工具?之后我就可以执行任务了

  2. java – 如何配置FindBugs maven插件以仅检查@Nonnull之类的注释违规?

    我已经实现了thisquestion的答案,因此@Nonnull违规使构建失败.但问题是,这是发现很多其他我不想处理的错误.我已经看了themanual,并没有任何一节跳出来作为一个,“这是你如何配置要检查的章节”.对我来说,它看起来像itshouldbeinhere,但选项的数量似乎不够全面.我如何配置findbugs只关心findbugs注释?

  3. 如何正确使用FindBugs的@CheckForNull,@ Nonull和@Nullable注释

    我想正式注释我的函数签名以澄清他们的契约–特别是如果允许或禁止nullparams和返回值–以FindBugs的静态代码分析工具(可能还有其他)可以使用它的方式.有两个包(annotations.jar和jsr305.jar),每个包都有四个注释,以及不添加注释的选项.解决方法经过一些尝试后,这些是我的发现:方法参数:>参数不能为null:不要放任何注释.在这种情况下,如果将null传递给方法,则

  4. java – 从实例方法“findbugs”警告中修改“写入静态字段”的最佳方法是什么?

    我有一个类似于此类,findbugz抱怨“从实例方法.我不能在ctor中设置静态字段.>这个问题最好的解决办法是什么?会把staticField放在atomicreference中吗?解决方法尽可能靠近您的原始设计…通过类名参考你的静态变量,这将删除findbugz警告.将静态变量标记为volatile,这将使多参数环境中的引用更加安全.更好的是:

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

    我最近发现了FindBugs的@edu.umd.cs.findbugs.annotations.SuppressWarnings注释,这是非常酷的,并允许你基本上告诉FindBugs忽略某些警告.我已经成功地实施了我自己的SLF4J绑定,遵循他们的建议,采取slf4j简单,并用自己的记录器和记录器工厂绑定修改它,我很高兴地说它的作用就像一个魅力.我刚刚在包含这个SLF4J绑定的包中发现错误,并且抱

  6. java – Maven Codehaus findbugs插件“onlyAnalyze”选项无法按预期工作

    我似乎无法仅仅为我的多模块项目工作:无论我设置了什么包(或模式),maven-findbugs-plugin都不会评估子包,因为我希望传递包名.*.为了证明自己或插件有问题(虽然我总是认为它是前者!),我设置了一个具有以下结构的小型Maven项目:这很简单!我宁愿不使用包含/排除XML,因为这需要更多的设置和推理,我目前没有时间…解决方法引用Findbugsmanual:“替换.*与.-同时分析所有子包”

  7. java – 将findbugs NotNull设置为一个包下的所有类的默认值

    我有以下简单的代码,用于测试使用Maven的FindBugs@NonNull注释.我执行而且由于print违反了非空条件,因此无法正确生成.您可以使用类注释将NonNull设置为类中所有方法参数的默认值如何将NonNull设置为给定包(和子包)下的所有类中的所有方法参数的默认值?

  8. java – Findbugs与Google CodePro AnalytiX(Eclipse插件)

    还有一个问题相关:这些插件都没有将我们的代码发送到服务器,对吧?

  9. 抑制Java Findbugs错误(EI_EXPOSE_REP)

    我有一个Javagettor方法,如下所示:和Findbugs报告这暴露了一个可变对象:“可以通过返回对可变对象的引用来公开内部表示”.我将代码更改为:但Findbug仍然报告相同的漏洞.我还能做些什么来抑制/解决这个问题?我在IntellJ10Findbugs插件中运行Findbugs1.3.9.解决方法我刚刚意识到Findbugs分析了编译代码,而不是源代码.在重建和重新运行Findbugs之后,问题就消失了.

  10. java – 如何检测新值已添加到枚举中,并且不在交换机中处理

    我不时要在项目的枚举类型中添加一个新值.我想要的是每个我没有处理新值的开关都有编译时错误,如下所示:有一个默认:抛出一些异常是不够好的,我希望它是编译时间.我不认为这是可能的,但也许有人有一个巧妙的把戏……

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部