声纳"奇异场"规则与lombok-getter相矛盾

时间:2014-08-19 11:58:04

标签: java annotations sonarqube checkstyle lombok

我正在与声纳和lombok合作,似乎这两个人不是彼此的朋友。

@Getter
public class MyAwesomeClass {
    private String string1;
    private String string2;
    private String string3;
    ...
}

上面的例子为类中的每个字段生成了一个getter方法,这要归功于@Getter注释,但是声纳警告我那些字段是“奇异字段”,它们只用在一个方法中,而不是这种情况是因为生成了getter-methods。

很明显,声纳不考虑lombok。我的问题是,是否有可能使这些警告消失,例如使用@SuppressWarnings注释?

2 个答案:

答案 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将禁用该特定行的所有规则检查。另一方面,通过禁用规则,你不仅可以摆脱龙目岛造成的误报,还可以解决真正的问题。