【问题标题】:SonarLint intent clarificationSonarLint 意图说明
【发布时间】:2015-11-12 20:01:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# sonarlint


    【解决方案1】:

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

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

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

    【讨论】:

    • 我的问题实际上似乎更广泛......:) 我知道 MSBuild SonarQube Runner 只是(旧)SonarQube Runner 的包装,它使用 C# 插件运行分析。这个插件有规则(sonar-cssquid)。如果我很好理解,规则已经从插件转移到 VS 的 SonarLint ?
    【解决方案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 文件。这样,就不需要复制规则实现了。

    如果您想详细了解其工作原理,请随时查看来源:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      相关资源
      最近更新 更多