首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarLint,SonarScanner Bug (NonNull注释)

SonarLint,SonarScanner Bug (NonNull注释)
EN

Stack Overflow用户
提问于 2017-03-30 10:26:07
回答 1查看 2K关注 0票数 0

我在SonarLint,SonarScanner中发现了错误/问题,它显示了与NonNull注释(NonNull)相关的假阳性问题,规则:“squid:S 2637”,标题:“@NonNull‘值不应设置为null”,用于以下代码:

代码语言:javascript
复制
public class MyObject {
  @NonNull
  public final String text;

  public MyObject(@NonNull final String text) {
    this.text = text; // SonarLint shows issue in this place
  }
}

但是,对于下面的代码来说,没有问题(我也同意):

代码语言:javascript
复制
public class MyObject {
  private final String text;

  public MyObject(@NonNull final String text) {
    this.text = text;
  }

  @NonNull
  public String getText() {
    return text;
  }
}

在Java 4.8.0.9441中,我发现了以下类的另一个问题:

代码语言:javascript
复制
   public class DeviceInfo {
      public final long id;
      @NonNull
      public final String model;
      @NonNull
      public final String osVersion;

      public DeviceInfo(@NonNull final String model, @NonNull final String osVersion) {
        this(0, model, osVersion); //ISSUE: In this place Squid reports about uninitialized non-null fields
      }

      public DeviceInfo(final long id, @NonNull final String model, @NonNull final String osVersion) {
        this.id = id;
        this.model = model;
        this.osVersion = osVersion;
      }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 12:33:54

MyObject类中,您报告的第一个FP是一个已知的bug,它已经在SonarJava 4.7中修复(参见索纳贾瓦-1776)。这与我们的符号执行引擎无法正确识别用this.访问的字段有关。SonarJava的最新版本包含了修复程序,因此在更新后问题消失是合乎逻辑的。

DeviceInfo类中,您报告的第二个FP与以下问题SONARJAVA-2227有关。这个问题还没有解决,目前计划在4.10版本的SonarQube SonarJava分析器上使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43115134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档