【发布时间】:2019-10-25 12:35:48
【问题描述】:
我正在尝试使用 Teamcity 为 C# 项目设置 SonarQube。问题是没有 C# 文件被分析。
能否请您仔细检查我的配置,如果我可能遗漏了什么,请告诉我?我完全不知道为什么它不分析任何 C# 文件。
如果您需要任何其他信息,请告诉我,我会编辑问题。
【问题讨论】:
我正在尝试使用 Teamcity 为 C# 项目设置 SonarQube。问题是没有 C# 文件被分析。
能否请您仔细检查我的配置,如果我可能遗漏了什么,请告诉我?我完全不知道为什么它不分析任何 C# 文件。
如果您需要任何其他信息,请告诉我,我会编辑问题。
【问题讨论】:
在附加参数中,尝试添加:
-Dsonar.lanauge=c#
如果不起作用,请尝试使用命令行运行程序而不是 TeamCity 插件:
第 1 步:
下载并安装SonarQube MSBuild runner from here。
第 2 步:
使用以下命令在 TeamCity 中的项目构建步骤中创建命令行运行器,不要忘记重新排序此项目以使其在 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 的主机地址 例如:https://sonarcloud.io
【讨论】:
xunit 插件 TeamCity 也有问题,但跑步者工作得很好。很高兴您的问题得到解决。
要分析来自 Jenkins 的 C# 代码,请按照 Analyzing with SonarQube Scanner for Jenkins 文档页面的 Analyzing with SonarQube Scanner for MSBuild 中的说明进行操作。
您需要使用 SonarQube Scanner for MSBuild 来分析 C#,因为分析是作为 MSBuild 步骤的一部分完成的,并且只有 SonarQube Scanner for MSBuild 正确连接到 MSBuild 步骤 - SonarQube 扫描仪的其他版本不不。
其他几点:
sonar.organization 属性仅在您使用 SonarCloud 时才相关;它不与 SonarQube 一起使用。sonar.language 属性一直是 deprecated - 不要提供它。sonar.sources 属性。扫描程序将根据正在构建的 MSBuild 项目中的文件自动设置属性。 SonarQube Scanner for MSBuild 自动设置 sonar.sources 属性的一个缺点是,所有要分析的文件都必须由 MSBuild 项目引用,即所有 XML、JavaScript、CSS 等文件。
如果 MSBuild 项目未引用这些其他文件类型,但您想分析它们,则可以将文件引用添加到 MSBuild 项目,或使用其他 SonarQube 扫描仪之一运行单独的分析(尽管如果您运行单独的分析,那么您将需要提供不同的sonar.project 密钥,这样分析结果就不会相互覆盖)。
【讨论】: