C# 文件的 SonarQube 分析失败:对文件中不存在的行号的引用

SonarQube analysis of C# file failing: References to a line number not present in the file

当通过 GitLab 的 CI 系统进行 运行 sonarqube 分析时,在 SonarQube 扫描过程的最后发生了一个有趣的故障:

发生此过程的 Gitlab 从机具有以下配置:

使用的SonarQube服务器版本为6.4

Sonar 扫描仪似乎仍在引用旧版本的文件,该文件的行数比新版本多。早些时候,我通过删除在 Gitlab runner 中建立的缓存来解决这个问题,但是这次删除缓存没有任何效果。谷歌搜索这个错误并没有让我到任何地方(或者我的 Google Fu 很弱)。这似乎只是这个特定项目的问题,因为其余 dotnet 核心项目的 SonarQube 分析在同一系统上 运行 很好。

任何 pointers/help/explanation 将不胜感激。

编辑:此问题是由文件编码(带 BOM 的 UTF-8)引起的。将编码更改为 UTF-8 后,错误消失了。非常感谢 SonarSource 团队的 Valeri 解决了这个问题

当项目中的一个或多个文件的编码为 "unexpected" 到 SonarQube 时,通常会发生此错误。最新版本的 SonarC# 将打印破坏分析的文件的名称,您可以使用不同的编码保存它,通常没有 BOM 的 UTF8 效果最好。

这个问题相对少见,但我认为你是对的,它值得在我们的文档中占有一席之地。我将创建一个页面并使用 link.

更新答案