2

我正在寻找将 VS 与 Sonar 集成的扩展,以避免等待 Sonar 运行以获取对我的代码的反馈。除了通过 Sonar UI 共享反馈(提供共享规则集、历史、趋势、分析......)之外,实时反馈非常有价值。

去年我见过 Eclipse 和 IntelliJ 的插件,它们运行声纳分析(基于共享规则集),还利用增量分析......

最近,我发现vssonarextension似乎对 Visual Studio 中的 C# 项目做几乎相同的事情(增量和预览分析)。但我也找到了官方的 SonarLint(最近从 SonarQube 重命名为 C#),但我不知道它是如何工作的。它似乎与 SonarQube 服务器断开连接并重新实现已经在服务器上实现的规则(通过 C# 插件),我错了吗?你能澄清一下吗?

4

2 回答 2

5

适用于 Visual Studio 的 SonarLint基于新的 .NET 编译器框架 (Roslyn),该框架在 Visual Studio 2015 中提供。此扩展适用于个人开发人员机器,并且(目前)未连接到 SonarQube 服务器。

要在开发人员机器之间共享一组通用规则,您可以将规则集文件与您的解决方案一起保存并提交。在每台开发人员机器上,此规则集文件将被 .NET 编译器框架拾取,因此也被 SonarLint 拾取。(如果您不想安装 SonarLint VS 扩展,您可以选择以Nuget 包的形式随解决方案提供此功能)

要在 SonarQube 服务器上查看分析结果,您需要使用 MsBuild SonarQube Runner(更多信息)。这在内部使用 SonarLint 程序集,并添加了一些需要在服务器上指定的参数的规则。

于 2015-08-19T14:13:00.907 回答
2
  1. SonarLint for Visual Studio 与 Visual Studio 2015 集成,并在您编码时提供有关质量缺陷的实时反馈。它还会自动建议代码修复。它与 SonarQube 服务器没有连接:例如,您将无法看到自上次 SonarQube 分析以来引入的所有新问题、对问题的评论等。我们正在与 Microsoft 合作以改善加班时间。
  2. vssonarextension 是 SonarQube 的非官方 Visual Studio 扩展(也是)。它不是由 SonarSource 开发和支持的。我的理解是这个扩展是试图复制 Eclipse / IntelliJ SonarQube 插件
  3. 谈到 Eclipse / IntelliJ SonarQube 插件(很快将更名为 SonarLint for Eclipse / IntelliJ) - 这些都比 SonarLint for Visual Studio 提前,因为它们与 SonarQube 服务器有这种连接,但也因为缺乏而落后实时(或接近实时)反馈。Eclipse SonarQube 插件具有一项新功能,可以在每次保存文件时分析文件,从而改善体验。此外,目前没有两个能够建议代码修复。
  4. MSBuild SonarQube Runner 不仅仅是 sonar-runner 的“包装器”:它在实际msbuild构建期间捕获有关您的项目的信息,强制执行 FxCop 等等。是的,在 1.0 版本中,end阶段将调用声纳运行器,但这实际上只是一个实现细节。较新版本的 SonarQube 服务器将允许通过 Web 服务上传分析报告,而不是依赖于从 sonar-runner 直接访问数据库。所以在未来,我们可以想象 MSBuild SonarQube Runner 的纯 C# 实现,它可以在无需安装 Java 的情况下工作。
  5. SonarQube C# 插件在 SonarQube 中提供 C# 支持。您显然无法在 SonarQube 中安装适用于 Visual Studio 的 SonarLint,因为它是 Visual Studio 2015 的扩展... Visual Studio 扩展使用的 dll 文件。这样,就不需要复制规则实现。

如果您想了解有关其工作原理的更多详细信息,请随时查看源代码:

于 2015-08-27T14:49:56.417 回答