SonarQube dotnet核心:如何在不更改默认构建任务的情况下避免重复的guid错误

Que*_*ing 5 sonarqube .net-core azure-devops azure-pipelines

我将为此开头,我目前的解决方案非常简单,但是我不想继续实施。


问题

在下面,您将看到一张概述我当前构建步骤的图像。其中每个都包含默认设置,并且Prepare analysis on SonarQube设置指向我的端点。

当我运行此命令时,再次只是默认设置,出现以下错误

WARNING: Duplicate ProjectGuid: "00000000-0000-0000-0000-000000000000". The project will not be analyzed by SonarQube. Project file: "D:\a\1\s\API.Tests.csproj"
WARNING: Duplicate ProjectGuid: "00000000-0000-0000-0000-000000000000". The project will not be analyzed by SonarQube. Project file: "D:\a\1\s\API.csproj"
Run Code Online (Sandbox Code Playgroud)

这是因为,默认情况下,dotnet核心的构建步骤会寻找**/*.csproj使用链接的设置(Parameters.RestoreBuildProjects)-更新为csproj格式后,项目guid不再存储在csproj文件中。我怀疑发生的事情是SonarQube在找不到任何默认值的情况下只是默认了Guid 000...,然后抛出此错误。


修复

取消链接Path to project(s)参数并指向已**/.*.sln解决的问题,因为现在SonarQube可以看到项目指导(定义了.sln


最后的问题

经过那段漫长的解释之后,我要问问是否有更好的方法让SonarQube识别dotnet核心项目。

我不想每次创建一个满足SonarQube要求的项目时都更改默认的构建任务。


Sonarqube与一个dotnet核心项目

dun*_*anp 0

最简单的方法是按照 @jessehouwing 的建议创建一个构建模板。

这个SO问题中的评论解释了为什么SonarQube需要为每个项目提供一个稳定的唯一ID。当前没有可以传递给任务的标志,以告诉 MSBuild 扫描程序在没有项目 guid 的情况下使用替代标识。还不清楚什么可以用作替代 ID:项目的文件路径不稳定,并且项目名称不能保证唯一并且可以更改,因此也不稳定。

仅供参考,VSTS 的 SonarCloud 扩展现在包含 .NET Core 项目的最小模板,以帮助新用户尝试分析项目。该模板将构建参数设置为**/*.sln,并删除了一些非必要的构建步骤(例如发布工件)。它的目的是允许新用户尝试分析代码,而无需设置任何机器并使用最少的配置(即使用 VSTS + SonarCloud + 托管构建代理,如本 HOL中所述)。

我们没有向 SonarQube 扩展添加模板,因为这不是零安装选项,而且添加模板似乎并没有增加太多价值。如果您认为有用,可以在SonarSource 社区论坛上提出建议。

  • 我同意如果不需要更改任务默认值会更好。但是,我认为添加另一个设置等会产生比它消除的更多的支持问题。 (2认同)