【发布时间】:2017-03-15 22:04:24
【问题描述】:
我想我在使用来自Project Lombok 的@Getter 注释时发现了误报。
在以下示例类中,我收到警告“仅在方法中用作局部变量的私有字段应成为局部变量” (squid:S1450)。
public class Example {
@Getter
private String exampleField; // <-- squid:S1450
public Example(final String value) {
setExampleField(value);
}
private void setExampleField(final String exampleField) {
this.exampleField = exampleField;
}
}
有人可以证实这一点吗?这是 SonarQube 规则中的错误,还是我的班级或我对这条规则或 @Getter 注释的理解有问题?
为了完整起见:
- 在其他 SonarQube 规则中正确识别项目 lombok 注释或生成的方法。所以我认为我的设置很好。
- 我还尝试将
@Getter注释放在类级别,我得到了同样的警告。 - 警告显示在 SonarLint(在 IntelliJ IDEA 中)和 SonarQube 的 Web 界面中。所以我认为执行分析器时不会出错。
- 我已将 IntelliJ IDEA 中的 SonarLint 插件绑定到我们的 SonarQube 服务器,并且此远程连接有效。
我测试过以下版本:
- SonarQube 6.0
- SonarQube Java 插件 4.2
- SonarLint(用于 IntelliJ IDEA)2.3.2
- IntelliJ IDEA 2016.2.5
- Java 8
【问题讨论】: