我已经为VSTS中的一个版本设置了SonarQube分析,并且我注意到如果高级选项"那么代码分析/构建警告会有差异。在构建摘要中包括完整的分析报告"在VSTS中启用。
我们为Visual Studio中的本地构建启用了自定义规则集,该规则集结合了Microsoft CodeAnalysis警告和StyleCop分析器。当我们在启用完整分析报告设置的情况下运行VSTS中的构建时,这些警告不会显示,并且仅显示SonarQube警告。我认为这对于使用SonarQube的所有构建都是预期的,如下面链接中所述。
但是,如果我们禁用此设置,我们会收到其他SonarQube警告,但Microsoft和StyleCop警告也会显示。
有谁可以解释为什么这两种行为不同?理想情况下,我们希望Microsoft,StyleCop和SonarQube出现警告,并且要为构建包含完整的分析报告 - 有什么办法可以做到这一点吗?
我使用的是SonarQube v6.7.1.35068,SonarC#v6.7.1(build 4347)和VSTS SonarQube任务的v3。*。
答案 0 :(得分:0)
构建摘要设置中的包含完整分析报告不会更改分析期间运行的规则集或分析器。它所做的就是让 End 任务轮询SonarQube服务器,直到分析的服务器端部分完成,以便它可以在VSTS构建摘要页面上显示最终分析结果。
要弄清楚构建之间的不同之处,您可以尝试启用更详细的日志记录:
您说得对, Begin 任务确实限制了运行到SonarQube服务器上配置的分析器和规则。
要让Microsoft FxCop规则在分析运行过程中运行,您需要为SonarQube安装FxCop plugin并将其规则包含在质量配置文件中。
要运行StyleCop规则(假设您正在使用新的基于Roslyn的StyleCop分析器),首先必须使用SonarQube Roslyn SDK为其创建SonarQube插件,然后安装插件并将规则添加到质量概况。
答案 1 :(得分:0)
首先,在构建摘要中包含完整分析报告不应影响构建摘要的“问题”部分中的结果,它用于将报告上载到构建摘要,结果将显示在构建摘要的底部(在与关联更改关联的工作项部分下方)。
其次,构建摘要的“问题”部分无法显示所有分析结果,只是其中的一部分。
您可以通过Logging Command上传结果文件(例如Write-Host "##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md"
),它将显示在构建摘要的底部(声纳任务也使用这种方式)。