【问题标题】:Sonar "Singular Field" rule contradicts lombok-getter声纳“奇异场”规则与 lombok-getter 相矛盾
【发布时间】:2014-10-12 12:27:26
【问题描述】:

我正在与 sonar 和 lombok 一起工作,看来这两个不是朋友。

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

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

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

【问题讨论】:

    标签: java annotations sonarqube checkstyle lombok


    【解决方案1】:

    即使我真的不会因为代码分析工具而弄乱代码,我想您也可以使用 NOSONAR 注释。您的代码如下所示:

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

    在我看来不是很优雅,但它实际上是一个声纳功能。然后应该忽略这些行的分析。

    另一个可能更好的解决方案是禁用特定规则。我想this 问题的最佳答案可以帮助你。

    这两种解决方案都有一些缺点。使用// NOSONAR 将禁用对该特定行的所有规则检查。另一方面,通过禁用规则,您不仅可以摆脱 Lombok 造成的误报,还可以消除真正的问题。

    【讨论】:

      【解决方案2】:

      SonarQuebe 5.0.X 添加 lombok 补丁,whick 适用于 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

      【讨论】:

        猜你喜欢
        • 2018-07-22
        • 1970-01-01
        • 2017-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多