【问题标题】:Code analysis changes if SonarQube full analysis report enabled in VSTS如果在 VSTS 中启用 SonarQube 完整分析报告,代码分析会发生变化
【发布时间】:2018-06-21 18:52:04
【问题描述】:

我一直在为 VSTS 中的一个构建设置 SonarQube 分析,我注意到如果启用高级选项“在构建摘要中包含完整分析报告”,代码分析/构建警告会有所不同在 VSTS 中。

我们在 Visual Studio 中为本地构建启用了自定义规则集,它结合了 Microsoft CodeAnalysis 警告和 StyleCop 分析器。当我们在启用完整分析报告设置的情况下在 VSTS 中运行构建时,这些警告不会出现,而只会显示 SonarQube 警告。我认为这对于使用 SonarQube 的所有构建都是预期的,如下面的链接中所述。

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Extension+for+VSTS-TFS#AnalyzingwithSonarQubeExtensionforVSTS-TFS-Note

但是,如果我们禁用此设置,我们会收到额外的 SonarQube 警告,但也会显示 Microsoft 和 StyleCop 警告。

谁能解释为什么这两种行为不同?理想情况下,我们希望显示来自 Microsoft、StyleCop 和 SonarQube 的警告,并希望构建包含完整的分析报告 - 有什么方法可以做到这一点?

我正在使用 VSTS SonarQube 任务的 SonarQube v6.7.1.35068、SonarC# v6.7.1(内部版本 4347)和 v3.*。

【问题讨论】:

    标签: sonarqube azure-devops


    【解决方案1】:

    首先,在构建摘要中包含完整的分析报告不应该影响构建摘要的问题部分的结果,它用于将报告上传到构建摘要,结果将显示在构建摘要的底部(在链接到相关更改的工作项部分下方)。

    其次,构建摘要的问题部分无法显示所有分析结果,仅显示一部分。

    您可以通过Logging Command(例如Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md")上传构建结果文件,它会显示在构建摘要的底部(sonarqube任务也使用这种方式)。

    【讨论】:

    • 是的,我明白它应该做什么 - 但我在构建之间更改的只是该设置,并且我在 VSTS 构建日志中显示不同的警告,只是想知道是否存在任何已知问题围绕这个。
    • 你能在 OneDrive 上分享这些构建的日志(删除个人信息)吗?还要提供这些构建定义的 YAML(单击查看 YAML)。
    【解决方案2】:

    在构建摘要中包含完整分析报告设置不会更改在分析期间运行的规则集或分析器。它所做的只是使 End 任务轮询 SonarQube 服务器,直到分析的服务器端部分完成,以便它可以在 VSTS 构建摘要页面上显示最终分析结果。

    要弄清楚构建之间有什么不同,您可以尝试启用更详细的日志记录:

    • 对于 SonarQube,设置 VSTS Begin 任务的Additional Settings 属性/d:sonar.verbose=true
    • 对于 VSTS,将 system.debug 构建设置为 true

    你说得对,Begin 任务确实将运行的分析器和规则限制为在 SonarQube 服务器上配置的那些。

    要让 Microsoft FxCop 规则在分析运行之前运行,您需要为 SonarQube 安装 FxCop plugin 并将其规则包含在您的质量配置文件中。

    要运行 StyleCop 规则(假设您使用的是基于 Roslyn 的新 StyleCop 分析器),您首先必须使用 SonarQube Roslyn SDK 为其创建 SonarQube 插件,然后安装插件并将规则添加到 Quality Profile .

    【讨论】:

    • 是的,我知道它不应该改变 - 但我在构建之间唯一改变的是该设置,所以我想知道这是否是一个已知问题或类似问题。我已经创建了 StyleCop 插件,但感谢 FxCop 的链接!
    猜你喜欢
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2018-07-24
    • 2019-12-24
    • 1970-01-01
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多