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

时间:2017-11-03 16:17:10

标签: c# msbuild sonarqube sonarqube-scan

在通过GitLab的CI系统运行sonarqube分析时,SonarQube扫描过程结束时发生了一个有趣的失败:

enter image description here

进行此过程的Gitlab从机具有以下配置:

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

使用的SonarQube服务器版本为6.4

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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