如何配置 Teamcitys SonarQube Runner 来分析 C# 文件

How to configure Teamcitys SonarQube Runner to analyze C# files

我正在尝试使用 Teamcity 为 C# 项目设置 SonarQube。问题是没有分析任何 C# 文件。

能否请您仔细检查我的配置,让我知道是否遗漏了什么?我完全不知道为什么它不分析任何 C# 文件。

如果您需要任何其他信息,请告诉我,我会编辑问题。

在附加参数中,尝试添加:

-Dsonar.lanauge=c#

如果它不起作用,请尝试使用命令行 运行ner 而不是 TeamCity 插件:

第 1 步:

下载并安装SonarQube MSBuild runner from here

第 2 步:

使用以下命令在 TeamCity 中的项目构建步骤中创建命令行 运行ner,不要忘记 re-order 此项以使其成为 运行 在 MSBuild.

之前
SonarQube.Scanner.MSBuild.exe begin /k:"%sonar.project%" /d:"sonar.host.url=%sonar.host.url%" /d:"sonar.login=%sonar.login%" /d:"sonar.organization=%sonar.organization%" /v:"%build.number%"

这使得 SonarQubeRunner 挂接到 MSBuild。

第 3 步:

使用以下命令再次创建命令行构建步骤:

SonarQube.Scanner.MSBuild.exe end /d:"sonar.login=%sonar.login%"

这会将分析发送到 SonarCube。

更新 1:

如您所知,我使用了一些参数,例如 sonar.login 等,不要忘记将它们添加到 TeamCity 的参数中。

sonar.login => 您的登录名

sonar.organization => 组织

sonar.project => 您在 SonarQube 中的项目

sonar.host.url => SonarCube 的主机 url 例如:https://sonarcloud.io

要从 Jenkins 分析 C# 代码,请按照 Analyzing with SonarQube Scanner for MSBuild of the Analyzing with SonarQube Scanner for Jenkins 文档页面中的说明进行操作。

您需要使用 SonarQube Scanner for MSBuild 来分析 C#,因为分析是作为 MSBuild 步骤的一部分完成的,并且只有 SonarQube Scanner for MSBuild 正确挂接到 MSBuild 步骤 - 其他版本的 SonarQube扫描仪没有。

其他几点:

  • sonar.organization 属性 仅在您使用 SonarCloud 时相关;它不与 SonarQube 一起使用。
  • 自 SonarQube 4.5 以来 sonar.language 属性 已经 deprecated - 不要提供它。
  • 当您使用 SonarQube Scanner for MSBuild 时,不要设置 sonar.sources 属性。扫描器将根据正在生成的 MSBuild 项目中的文件自动设置 属性。

SonarQube Scanner for MSBuild 自动设置 sonar.sources 属性 的一个缺点是所有要分析的文件都必须由 MSBuild 项目引用,即所有 XML、JavaScript、CSS 等文件。

如果 MSBuild 项目未引用这些其他文件类型,但您想分析它们,则可以将对这些文件的引用添加到 MSBuild 项目,或者 运行 使用以下方法之一进行单独分析其他 SonarQube 扫描仪(尽管如果您 运行 进行单独的分析,那么您将需要提供不同的 sonar.project 密钥,以便分析结果不会相互覆盖)。