关于c#:正在运行的声纳Qube扫描仪项目被标记为无效

Running sonar Qube scanner project are marked as invalid

我正在从Jenkins(Jenkins)运行Sonarqube Scanner for MSBuild。

项目在VS2013中,但我正在使用MSBuild 14进行构建。

构建成功,但仅扫描了几个文件(10)

在Sonarqube扫描仪日志上,如果战争能够找到标记为"无效项目"的庞大项目列表,我不确定为什么会这样。

另一个信息:当我添加声纳扫描仪1小时时,构建本身需要14分钟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Product projects
---------------------------------------
e:\\jenkins\\workspace\\XXXX.YY.csproj

Test projects
---------------------------------------


Invalid projects
---------------------------------------
e:\\jenkins\\workspace\\WWWW.RR.csproj
e:\\jenkins\\workspace\\TTTT.JJ.csproj
{none}


Skipped projects
---------------------------------------
{none}


Excluded projects
---------------------------------------
{none}

SonarQube Scanner for MSBuild如果项目不包含项目guid属性<ProjectGuid>{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}</ProjectGuid>(或等于Guid.Empty)且未包含在解决方案中,则认为该项目无效。要解决此问题,您应该确保每个项目中都有唯一的ProjectGuid

该分析会增加一些开销,通常会大大增加编译时间,尤其是在启用许多规则的情况下。但是,默认质量配置文件不应使编译增加超过2-3倍。

您使用的是哪个版本的MSBuild,SonarC#和SonarQube扫描仪?由于您的项目是针对VS2013的,因此我怀疑您可能正在使用MSBiuld 12后备,它比MSBuild 14模式既慢又不精确(因为在分析过程中,每个文件都包含在临时项目中并单独编译)。确保使用MSBuild 14模式的好方法是对MSBuild 3.0和SonarC#6.0使用Scanner,因为它们不再支持MSBuild 12模式...


我能够通过使用powershell

直接调用exectuable来解决这个问题

第一步初始化

1
2
cd"<Project root folder>"
&"E:\\sonar-scanner-msbuild-3.0.2.656\\SonarQube.Scanner.MSBuild.exe" begin /k:"<project key>" /n:"<project name>" /v:"<version>" /d:sonar.host.url=<URL> /d:sonar.login=<Token>

第二步

1
MS Build

第三步

1
   &"E:\\sonar-scanner-msbuild-3.0.2.656\\SonarQube.Scanner.MSBuild.exe" end