SonarQube扫描提示缺少指定文件blame信息报错如何解决?
Sonar Scanner 「Missing blame information」警告排查与解决
警告本质说明
该日志属于WARN级别,不会中断扫描流程,也不代表列出的文件本身存在代码问题:仅说明SonarQube读取版本控制系统(Git/SVN等)的blame信息失败,会导致依赖SCM信息的功能(新代码范围识别、提交人问题责任分配、代码提交历史关联分析等)失效,不会影响代码漏洞、异味、覆盖率等核心扫描结果。
常见产生原因
- 项目未初始化版本控制仓库,本地没有
.git等版本控制元数据目录 - 列出的文件属于未提交的新增/修改文件,还没有生成版本控制提交记录
- 运行Sonar Scanner的账户对
.git目录没有读取权限,无法读取版本控制元数据 - CI/CD环境下拉代码时使用了浅克隆(shallow clone),仅拉取了最近几次提交没有完整历史,无法生成blame信息
- 列出的文件是扫描过程中临时生成的文件,本身不属于版本控制管理范围
排查步骤
- 先确认项目根目录是否存在对应版本控制的元数据目录(如Git对应的
.git文件夹) - 执行
git status查看报错的文件是否属于未提交的变更文件 - 任选一个报错文件执行
git blame <文件路径>(例:git blame src/index.js),确认本地是否可以正常输出blame记录,判断是本地版本控制配置问题还是Sonar Scanner的读取问题 - 若在CI/CD环境下运行扫描,确认拉代码步骤是否配置了浅克隆参数
解决方案
方案1:保留SCM相关功能(推荐)
- 若文件未提交:将所有报错文件执行
git add+git commit提交到版本控制后,重新运行扫描即可 - 若为浅克隆导致:将CI/CD拉代码的策略改为完整克隆,例:GitLab CI/GitHub Actions中设置拉取深度为0拉取完整提交历史
- 若为权限问题:给运行Sonar Scanner的操作系统账户开放
.git目录的读取权限 - 若项目未使用版本控制:先将项目初始化为Git仓库,提交所有文件后再运行扫描
方案2:无需SCM功能可直接关闭警告
如果不需要使用SonarQube的新代码识别、提交人关联等依赖SCM的功能,可直接禁用SCM集成消除警告:
- 命令行启动扫描时追加参数:
-Dsonar.scm.disabled=true - 也可将配置
sonar.scm.disabled=true写入项目根目录的sonar-project.properties配置文件中
内容的提问来源于stack exchange,提问作者Jeremie
相关产品推荐
相关产品推荐

