【问题标题】:SonarQube analysis of C# file failing: References to a line number not present in the fileC# 文件失败的 SonarQube 分析:对文件中不存在的行号的引用
【发布时间】:2018-04-16 10:42:16
【问题描述】:

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

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

  • 操作系统:Windows Server 12 R2(64 位)
  • 适用于 MSBuild 版本的声纳扫描仪:3.0.1.635
  • MSBuild 版本:15(使用 Visual Studio 2017)
  • SonarC# 版本:6.1.0.2359

使用的SonarQube服务器版本是6.4

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

任何指针/帮助/解释将不胜感激。

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

【问题讨论】:

  • edit您的问题包括SonarQube实例上安装的SonarC#版本(管理>系统>更新中心)
  • 这通常发生在您项目中的文件之一的编码“意外”时。最新版本的 SonarC# 应在日志中打印文件名。最好使用 UTF8 无 BOM 编码。
  • @Valeri-SonarSourceTeam:这行得通。该文件具有带有BOM编码的UTF-8,将其更改为UTF-8后,错误消失了。非常感谢!这是否包含在某处的官方文档中?或者你能在这里回答这个问题,以便我可以将其标记为这个问题的答案吗?

标签: c# msbuild sonarqube sonarqube-scan


【解决方案1】:

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

这个问题比较少见,但我认为你是对的,它应该在我们的文档中占有一席之地。我将创建一个页面并使用链接更新答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2018-06-29
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2019-11-27
    • 2018-06-25
    相关资源
    最近更新 更多