SonarQube7.9.1通过Jenkins扫描.NET项目无法识别.cs、.sql文件如何解决
问题根因
- 扫描工具选型错误:普通的sonar-scanner无法识别.NET项目结构、也无法联动Roslyn执行C#代码分析,是.cs文件无法被扫描的核心原因,日志中给出的两个警告也直接来源于该错误用法。
- 配置限制了扫描语言:
sonar-project.properties中指定了sonar.language=cs,仅允许扫描C#语言文件,.sql文件会被直接过滤,因此无法被识别。 - 扫描流程缺失编译步骤:C#代码分析依赖编译阶段生成的产物,直接调用sonar-scanner没有执行项目编译,无法生成Roslyn分析报告,因此无法加载C#代码的分析结果。
解决步骤
- 替换扫描工具:卸载当前使用的2.x版本普通sonar-scanner,下载适配SonarQube 7.9.1 LTS的SonarScanner for .NET 4.x版本(原SonarQube Scanner for MSBuild),部署到Jenkins执行节点。
- 调整配置文件:删除
sonar-project.properties中的sonar.language=cs配置项,让SonarQube自动识别项目中的多语言文件;若要明确指定扫描范围,可修改为sonar.language=cs,sql,同时确认SonarQube服务端已经安装SQL语言分析插件。 - 修改Jenkins扫描流程:将原有的单步sonar-scanner调用改为.NET项目标准的三步扫描流程,示例脚本如下:
# 1. 初始化扫描参数 /path/to/SonarScanner.MSBuild.exe begin /k:"MSProject" /n:"MSProject" /v:"1.0" /d:sonar.sourceEncoding=UTF-8 # 2. 全量编译项目,可根据项目类型替换为dotnet build等编译命令 MSBuild.exe /t:Rebuild # 3. 提交扫描结果 /path/to/SonarScanner.MSBuild.exe end
如果是Linux节点运行的.NET Core/.NET 5+项目,将上述命令替换为dotnet sonarscanner对应的指令即可。
- 确认规则配置:登录SonarQube控制台检查对应项目的质量配置,确保C#、SQL对应的扫描规则已经开启,避免规则未启用导致扫描结果无展示。
内容的提问来源于stack exchange,提问作者SVD
相关产品推荐
相关产品推荐

