GitLab流水线.NET项目SonarScanner执行突然报错排查求助
排查解决建议
错误本质为SonarScanner依赖的Java进程无法识别编码异常的文件路径,可按以下优先级逐一排查:
调整执行环境编码配置
首先在流水线Sonar扫描任务的最开头增加编码强制设置指令:
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8该配置需要在
dotnet sonarscanner begin命令执行前生效,确保Java进程启动时读取到正确的UTF-8编码配置,避免路径解析时出现乱码。排查近期新增文件/目录命名
检查最近代码提交是否新增了包含中文、emoji、非拉丁文特殊符号的文件名/目录名,尤其是名称带“输出”、“out”相关的路径,这类特殊命名在编码不兼容时会被Java解析为类似
c???out的乱码,触发报错。找到异常路径后重命名为全ASCII字符即可解决。临时禁用SCM扫描验证
在
dotnet sonarscanner begin命令中追加参数-d:sonar.scm.disabled=true后重新执行流水线,如果扫描恢复正常,即可确认问题出在Sonar的Git文件索引环节,不需要调整其他构建逻辑。锁定SonarScanner版本
若流水线没有固定dotnet-sonarscanner的版本,可能是自动升级到了存在编码兼容问题的新版本,可手动指定历史正常运行的版本安装,示例:
dotnet tool install --global dotnet-sonarscanner --version 5.15.0检查工作目录路径
在流水线中打印当前执行目录
echo $PWD,确认Runner动态生成的工作目录是否包含特殊字符,若存在异常可调整Runner的工作目录命名规则。
内容的提问来源于stack exchange,提问作者user2315104
相关产品推荐
相关产品推荐

