当前位置: 首页 > 面试题库 >

如何隐藏字段或局部变量的FindBugs警告

钮承恩
2023-03-14
问题内容

我想抑制针对特定字段或局部变量的FindBugs警告。FindBugs文档证明目标可以是其edu.umd.cs.findbugs.annotations.SuppressWarning注释[1]的类型,字段,方法,参数,构造函数,程序包。但是,仅当我注释警告时,才对字段进行注释对我不起作用。

注释整个方法对我来说似乎很广泛。有什么方法可以抑制特定字段上的警告?还有另一个相关问题[2],但没有答案。

[1]
http://findbugs.sourceforge.net/manual/annotations.html

[2]
在Eclipse中禁止FindBugs警告

演示代码:

public class SyncOnBoxed
{
    static int counter = 0;
    // The following SuppressWarnings does NOT prevent the FindBugs warning
    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE")
    final static Long expiringLock = new Long(System.currentTimeMillis() + 10);

    public static void main(String[] args) {
        while (increment(expiringLock)) {
            System.out.println(counter);
        }
    }

    // The following SuppressWarnings prevents the FindBugs warning
    @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE")
    protected static boolean increment(Long expiringLock)
    {
        synchronized (expiringLock) { // <<< FindBugs warning is here: Synchronization on Long in SyncOnBoxed.increment()
            counter++;
        }
        return expiringLock > System.currentTimeMillis(); // return false when lock is expired
    }
}

问题答案:

@SuppressFBWarnings 在字段上仅显示禁止为该字段声明报告的findbugs警告,而不是与该字段关联的每个警告。

例如,这消除了“仅将字段设置为null”警告:

@SuppressFBWarnings("UWF_NULL_FIELD")
String s = null;

我认为您能做的最好的事情就是将带有警告的代码隔离到最小的方法中,然后在整个方法上取消警告。

注:@SuppressWarnings被标记弃用赞成@SuppressFBWarnings



 类似资料:
  • 这不是直截了当的问题。在我的例子中,外部类变量和内部类setter方法的参数名称是相同的。比如: 现在我不能用初始化外部类实例变量p,因为它指示内部类。同样,我不能执行会出现错误。现在,我如何分配外部p,使内部类方法的参数与名称p相同?

  • 我已经在IntelliJ中安装了SonarQube插件,它工作得很好--这是一个巨大的帮助。但是我怎么关闭警告呢?自从我的团队刚开始使用SonarQube以来,我们有成千上万的问题,每一个问题都出现在我的IDE中,这让我分心:( 我不想每次运行分析时卸载插件并重新安装--但我确实希望警告按需消失,这样我就可以集中精力完成一些工作。我可没时间整天解决声纳问题。

  • 问题内容: 在以下情况下: 学生“隐藏人的ID字段。 如果我们想在内存中表示以下内容: 约翰对象会为storint Person.ID及其自己拥有两个单独的存储位置吗? 问题答案: 正确。示例中的每个类都有其自己的int IDid字段。 您可以通过以下方式从子类中读取或分配值: 或在外部(当它们是公开的时):

  • 问题内容: 我正在编写一个C(共享)库。它最初是一个翻译单元,我可以在其中定义几个全局变量,以将其隐藏在外部模块中。 现在该库已扩展,我想将该模块分为几个较小的源文件。问题在于,对于上述全局变量,我现在有两个选择: 在每个源文件上都有私有副本,并通过函数调用以某种方式同步它们的值-这将非常丑陋,非常快。 删除定义,以便使用- 在所有翻译单元之间共享变量,但是,如果在此处进行了必需的声明,则链接到库

  • 角JS很新,需要一些帮助。如何使用ng-if显示或隐藏不同的输入字段?我目前正在使用ng-show,但它并没有完全删除DOM,因此在验证期间很困难。我希望在特定div中显示的输入字段仅在选择时成为强制性的。 当我单击选择基金时,我希望显示show me2 div并强制字段。当我单击选择产品时,我希望显示show me1 div并强制字段。请参阅下面的当前代码:

  • 问题内容: 尝试将日期变量插入数据库表时遇到困难。我的变量称为: 从具有日历选择器的文本框中读取date4变量值。为了插入日期列,我将字段类型设置为date: 但是,提交表单后,我收到了以下消息: javax.faces.component.UpdateModelException:java.lang.IllegalArgumentException:无法将类型为java.util.Date的4/