【问题标题】:Eclipse / SonarQube Integration: How to handle Checkstyle / PMD / FindBugsEclipse / SonarQube 集成:如何处理 Checkstyle / PMD / FindBugs
【发布时间】:2017-06-14 20:46:12
【问题描述】:

如果我使用 Eclipse 并想使用 SonarQube 作为单一代码规则源,我知道我需要使用 SonarLint 插件。但是,SonarLint 只会检查 squid 规则,不会检查 Checkstyle/PMD/Findbugs 规则(尽管它们可以在 SonarQube 中使用)。

我的问题:如果一个项目一直在使用 Checkstyle/PMD/Findbugs 规则集,应该如何处理这些规则,以便 Eclipse 开发人员也可以看到它们?

请考虑以下几点:

  • 我不想从 SonarQube 手动导出规则并为 Checkstyle/PMD/Findbugs 安装 Eclipse 插件并使用导出的规则对其进行配置。太麻烦了。
  • 我看到一些 Checkstyle/PMD/Findbugs 被标记为已弃用,并且有 squid 替代品。没关系。但是,我该如何处理所有未弃用的规则?

【问题讨论】:

  • 问题是,你的设置是什么?例如。我们有一个 gradle 脚本来安装所有的 checkstyle/firebug 配置,以及一个用于 git 的提交钩子来检查它。除此之外,根据您的工作流程,也就是如果您使用拉取请求,有一些插件可以在拉取请求中显示这些问题。 - 据我所知,这是你唯一的选择。
  • 您要么安装单独的插件,要么使用 SonarLint。没有第三个选项afaik。 SonarLint 使用服务器上质量配置文件中配置的任何内容。如果您的 SonarQube 质量配置文件包括 Checkstyle、FindBugs 等,那么 SonarLint 也会检查它们。
  • @Thomas Jensen:SonarLint不会检查 Checkstyle/Findbugs/PMD 规则,即使它们已在 SonarQube 中成功检查(参见sonarlint.org/eclipse,FAQ 问题 4 )。 SonarLint 的声明:“SonarLint 支持 SonarSource 分析器(SonarJava、SonarJS...)以及扩展这些 SonarSource 分析器的自定义规则。我们不打算支持运行第三方分析器的插件(如 PMD、Android Lint、JSLint。 ..)。大多数情况下,这些分析器已经具有专用的 IDE 集成。”
  • 该死,这太烦人了,他们不断在每个版本中删除功能。对不起,我错过了这个功能也消失了。所以,你唯一的选择是安装单独的插件,听起来很悲伤。

标签: eclipse sonarqube checkstyle pmd sonarlint


【解决方案1】:

这就是我们解决这个问题的方法(90% 的解决方案):

  1. 将所有已弃用的 Checkstyle/PMD/FindBugs 规则替换为推荐的 squid 规则。 -> 剩下 80 个 Checkstyle、16 个 PMD 和 0 个 FindBugs 规则(以及 60 个 squid 规则),消除了 FindBugs。
  2. 在 Eclipse 中使用 SonarLint + Checkstyle 插件。对于 Checkstyle,我们从 SonarQube 导出规则 XML,将它们放入我们的版本控制并配置 Checkstyle 插件以使用它。
  3. 在 Eclipse 中忽略 PMD,并使用浏览器直接访问 SonarQube 以查看代码审查中的 PMD 规则违规。这使我们免于为“仅 16 条规则”安装/配置 PMD。

该解决方案使我们大约 90% 的规则在 Eclipse 中可见。我们付出的代价:

  • 安装和配置 2 个用于规则检查的插件,而不是 1 个。
  • 每当 SonarQube 更新导致更改时,手动使 Checkstyle 规则 XML 保持最新。
  • squid 规则违规仅对打开的课程可见,并且在单独的“SonarLint On-the-fly”视图中可见。
  • 只有 90% 的规则直接在 Eclipse 中可见。

如果有一天 SonarLint 能够在 Eclipse 的标准“问题”视图中显示所有SonarQube 规则违规,我们会非常高兴,涵盖工作区和选择范围。那么我们只需要一个 Eclipse 插件,SonarQube 将是唯一的规则存储库。

【讨论】:

    【解决方案2】:

    这是对 SonarLint 开发人员提供解决方案的建议:SonarLint 应该能够从 SonarQube 检索所有违规行为,并将它们显示在 Eclipse 的标准“问题”视图中。像这样,SonarLint 不需要在本地执行 Checkstyle/Findbugs/PMD 规则,所以不会有兼容性/支持问题。同时,Eclipse 开发人员可以在不离开 Eclipse 的情况下查看所有违规行为。

    【讨论】:

    • 这实际上在早期版本中也是可能的。 %-/ 不过,它的缺点是经常过时。开发人员通常希望得到他们正在编写的代码的即时反馈。
    • 我明白了。但是,恕我直言,拥有可能过时的信息比没有更好。对于开发人员来说,重要的是查看发现特定规则违规的时间。并且应该有一个选项可以触发 SonarLint 从 SonarQube 刷新自身。
    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2015-11-04
    • 2014-11-11
    相关资源
    最近更新 更多