You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube扫描多C#项目sonar.inclusions失效及扫描缓慢问题求助

SonarQube扫描C#解决方案耗时过长及过滤失效问题

问题背景

使用SonarQube Community Edition 8.9.10 + Sonar Scanner for MSBuild 5.13.0.66756-net5.0,扫描包含多个C#项目的单.sln文件夹:

  • 正常编译(dotnet clean后)耗时约12秒
  • SonarQube扫描时构建耗时超1分钟,无变更项目也被扫描
  • 尝试用sonar.inclusions过滤文件,但未被包含的项目(如monocromo.example.API.slmp.csproj)仍被处理,所有项目均被重新编译

扫描命令如下:

dotnet sonar-scanner-msbuild-5.13.0.66756-net5.0/SonarScanner.MSBuild.dll begin /k:"project_key" /d:sonar.token="token" /v:1

dotnet build solution.sln

dotnet sonar-scanner-msbuild-5.13.0.66756-net5.0/SonarScanner.MSBuild.dll end /d:sonar.token="token"

问题解答

1. 为何未包含的项目仍被扫描?

sonar.inclusions是文件级过滤规则,仅控制哪些代码文件会被上传到SonarQube服务器进行分析,不会阻止MSBuild扫描器处理整个解决方案中的项目。

SonarScanner for MSBuild在begin阶段会解析整个解决方案的所有项目,获取项目结构、依赖等信息,即使你设置了文件过滤,这些项目依然会被编译——扫描器需要通过编译过程收集代码的编译信息,只是最终不会把未包含的文件的分析结果上传。

2. 如何加快扫描速度?

(1)使用项目级排除参数sonar.msbuild.excludeProject

这是SonarScanner for MSBuild特有的参数,直接排除整个项目,被排除的项目不会被扫描器处理,也不会被编译,能大幅减少耗时。

在begin命令中添加该参数:

dotnet sonar-scanner-msbuild-5.13.0.66756-net5.0/SonarScanner.MSBuild.dll begin /k:"project_key" /d:sonar.token="token" /v:1 /d:sonar.msbuild.excludeProject="**/monocromo.example.API.slmp.csproj"

排除多个项目用分号分隔:

/d:sonar.msbuild.excludeProject="**/proj1.csproj;**/proj2.csproj"

(2)启用增量扫描

SonarQube 8.9+支持增量扫描,仅扫描有变更的文件和项目,避免重复处理无变更内容。在begin命令中添加:

/d:sonar.incremental=true

注意:不要每次扫描前都执行dotnet clean,否则会丢失MSBuild的增量构建信息,导致增量扫描失效。如果必须清理,仅清理目标项目的输出目录,而非整个解决方案。

(3)优化构建命令

  • 若已提前执行过dotnet restore,在dotnet build时添加--no-restore参数,跳过还原步骤:
    dotnet build solution.sln --no-restore
    
  • 避免不必要的dotnet clean,依赖MSBuild的增量构建特性减少重复编译。

(4)精准设置文件级过滤(可选)

如果需要更细粒度的文件过滤,确保sonar.inclusions规则精准匹配目标文件,例如仅包含特定项目下的C#文件:

/d:sonar.inclusions="**/src/TargetProject1/**/*.cs;**/src/TargetProject2/**/*.cs"

注意:该参数仅减少上传到SonarQube的文件数量,无法减少编译耗时,优先用项目级排除优化编译速度。


内容的提问来源于stack exchange,提问作者FarsoFracico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:46:14