如何配置TeamCity的SonarQube Runner以分析C#文件

如何配置TeamCity的SonarQube Runner以分析C#文件,c#,sonarqube,teamcity,C#,Sonarqube,Teamcity,我正在尝试使用Teamcity为一个C#项目设置SonarQube。问题是没有对C#文件进行分析 能否请您再次检查我的配置,并告诉我是否可能遗漏了任何内容?我完全不明白为什么它不分析任何C#文件 如果您需要任何其他信息,请告诉我,我将编辑问题。在其他参数中,尝试添加以下内容: -Dsonar.lanauge=c# 如果不起作用,请尝试使用命令行运行程序而不是TeamCity插件: 第1步: 下载并安装 第二步: 使用下面的命令在TeamCity的项目生成步骤中创建命令行运行程序,不要忘记

我正在尝试使用Teamcity为一个C#项目设置SonarQube。问题是没有对C#文件进行分析

能否请您再次检查我的配置,并告诉我是否可能遗漏了任何内容?我完全不明白为什么它不分析任何C#文件


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

在其他参数中,尝试添加以下内容:

-Dsonar.lanauge=c#

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

第1步:

下载并安装

第二步:

使用下面的命令在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

第三步:

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

SonarQube.Scanner.MSBuild.exe end /d:"sonar.login=%sonar.login%"
这将把分析发送到SonarCube

更新1:

正如您所知,我使用了几个参数,如
sonar.login
等,不要忘记在TeamCity的参数中添加它们

sonar.login
=>您的登录名

声纳组织
=>组织

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

sonar.host.url
=>SonarCube的主机url例如:

要分析来自Jenkins的C代码,请按照文档页面中的说明进行操作

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

还有几点:

  • 只有在使用SonarCloud时,
    sonar.organization
    属性才相关;它不与SonarQube一起使用
  • sonar.language
    属性自SonarQube 4.5以来一直存在-不提供该属性
  • 使用SonarQube扫描仪进行MSBuild时,不要设置
    sonar.sources
    属性。扫描程序将根据生成的MSBuild项目中的文件自动设置属性
SonarQube Scanner for MSBuild自动设置
sonar.sources
属性的一个缺点是,所有要分析的文件都必须由MSBuild项目引用,即所有XML、JavaScript、CSS等文件


如果MSBuild项目未引用这些其他文件类型,但希望对其进行分析,则可以将对这些文件的引用添加到MSBuild项目,或者改用其他SonarQube扫描程序之一运行单独的分析(虽然如果运行单独的分析,则需要提供不同的
sonar.project
键,以便分析结果不会相互覆盖).

Hi@ali bahrami,看来从命令行运行声纳扫描仪是一条可行之路。-Dsonar.lanauge=c#对我不起作用。谢谢你的时间和回答,这真的帮了我很多忙。@Marcel Hier-Hi,欢迎你。我个人更喜欢运行Runner而不是插件。即使我在
xunit插件TeamCity,但是跑步者工作得很好。我很高兴你的问题解决了。