我正在与声纳和lombok合作,似乎这两个人不是彼此的朋友。
@Getter
public class MyAwesomeClass {
private String string1;
private String string2;
private String string3;
...
}
上面的例子为类中的每个字段生成了一个getter方法,这要归功于@Getter注释,但是声纳警告我那些字段是“奇异字段”,它们只用在一个方法中,而不是这种情况是因为生成了getter-methods。
很明显,声纳不考虑lombok。我的问题是,是否有可能使这些警告消失,例如使用@SuppressWarnings
注释?
答案 0 :(得分:3)
SonarQuebe 5.0.X添加了lombok补丁,这对于lombok的Getter来说非常有用。
对于使用sonar-java-2.4的SonarQuebe 4.5.X,你可以在这里找到补丁: https://github.com/SonarSource/sonar-java/compare/2.4...liudongmiao:patch-lombok-2.4
您也可以从这里下载二进制文件:https://github.com/liudongmiao/sonar-java/releases/tag/2.4-lombok
答案 1 :(得分:1)
即使我真的不会因为代码分析工具而使代码混乱,我猜你可以使用NOSONAR注释。你的代码看起来像这样:
@Getter
public class MyAwesomeClass {
private String string1; // NOSONAR
private String string2; // NOSONAR
private String string3; // NOSONAR
}
在我看来并不是很优雅,但它实际上是一个声纳功能。然后应该忽略这些线的分析。
另一种可能更好的解决方案是禁用特定规则。我想this问题的最佳答案可以帮助您。
这两种解决方案都有一些缺点。使用// NOSONAR
将禁用该特定行的所有规则检查。另一方面,通过禁用规则,你不仅可以摆脱龙目岛造成的误报,还可以解决真正的问题。