【问题标题】:Sonar - Ignore Lombok code via custom annotationSonar - 通过自定义注释忽略 Lombok 代码
【发布时间】:2016-10-31 21:50:27
【问题描述】:

我试图忽略来自 Sonar 分析的 Lombok 代码(生成的代码),该分析基于具有自定义注释 @ExcludeLombok 的文件。 我试过 this guide 没用。

事实上,我什至尝试从分析中排除整个目录,但仍然无法正常工作。

我还不知疲倦地在 StackOverflow 中搜索以寻找解决方案,并且我已经看到这里已经对此进行了很好的讨论,但是我看到人们一直在建议编写一个测试来获得覆盖率up,这是没有意义的,因为我们不应该测试自动生成的代码。

我正在寻找的解决方案是根据自定义注释排除文件。 但到目前为止,我试图排除的任何内容都不会被排除。

任何帮助将不胜感激。

【问题讨论】:

  • 如果我的回答不让您满意,您能否接受我的回答或至少发表评论?
  • 抱歉延迟接受您的回复,Michael,听起来不错:)

标签: annotations sonarqube analysis lombok


【解决方案1】:

目前没有简单的方法可以从 SonarQube Java 分析器中排除 SonarQube 规则引发的问题,除非使用您引用的“Narrowing the focus”文档中描述的方法。

现在,我们最近在 SonarQube Java Analyzer 中引入了问题过滤器的概念。此机制目前仅在内部用于根据特定标准在分析时排除规则引发的问题。

我们计划扩展此机制,以允许用户实施他们自己的自定义问题过滤器,就像实施自定义规则一样。这种方法将涵盖您的情况,并允许您过滤使用自定义注释注释的代码的任何规则。此新功能将在以下 JIRA 票证中处理:SONARJAVA-1761

【讨论】:

  • 请参考 JIRA 票 SONARJAVA-1761 来解决问题。该票目前计划用于 SonarJava 分析器的 5.x。我们目前正在开发 4.8 版。 5.x 版将是我们的下一个主要版本,但预计不会在今年夏天之前发布。
  • @Michael-SonarSourceTeam 现在似乎过滤机制确实存在,并且代码中有一个 LombokFilter:github.com/SonarSource/sonar-java/tree/master/java-checks/src/… 但是使用 Sonar 6.3 仍然没有过滤 lombok 问题。
  • @Michael-SonarSourceTeam 你能说明目前的状态吗? 哪个 Sonar 版本完全支持 Lombok?
  • @JJD 为什么说“完全支持龙目岛”?我们确实支持 Lombok,一些规则只是对识别的注释做出相应的反应,但需要正确提供字节码以进行分析。事实上,SonarJava 插件SONARJAVA-1642 的 3.14 版中也有一个过滤器,后来更新(SonarJava 4.5 和 4.8),以排除与使用 lombok 注释相关的 一些 FP。请检查您的 SQ 实例中安装了哪个版本的 SoanrJava 插件。
【解决方案2】:

您的另一个选择是在 delomboked 源上运行 Sonar。根据您的构建系统,delombok 有多种方法,请参见: Delombok Overview

对于 maven,有一个对 delomboked 代码运行分析的示例:Delombok test pom

在每种情况下,您都要确保对生成的源进行检查。

【讨论】:

  • 由于 delomboked 源没有 git push,是否删除了 git blame
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 2017-05-05
  • 2020-02-04
  • 2020-10-17
  • 2017-04-02
  • 1970-01-01
  • 2016-06-03
相关资源
最近更新 更多