【问题标题】:SonarQube encoding mismatch with .cs source file issueSonarQube 编码与 .cs 源文件问题不匹配
【发布时间】:2017-06-28 15:14:49
【问题描述】:

我正在运行 SonarQube 5.6 版本,并且正在尝试将 .NET 应用程序与 Sonar 集成。运行 sonar-runner 后,我收到此警告消息

Roslyn 检测到的编码和 SonarQu 使用的编码 与文件 xxx 不匹配。 SonarQube 编码为“windows-1252”,Roslyn 编码为“UTF-8”。文件将被跳过。

这将导致 0 分析,因为所有文件都被跳过。使其工作的一种方法是将 .cs 文件编码从 Visual Studio 一对一更改为 windows-1252。这是不可行的,因为我有超过 1000 个文件的大型项目。

有什么方法可以更改 SonarQube 的编码?或者有没有其他方法可以解决这个问题。

【问题讨论】:

  • 我们有同样的问题。有没有办法为 SonarQube 或 Roslyn 设置不同的编码,以便它们同步?它阻止了我们的项目产生任何有意义的分析结果,所以它对我们来说是一个阻碍。

标签: c# encoding sonarqube


【解决方案1】:

目前无法更改编码。但是,您可以按照以下建议轻松更改所有文件的编码:https://stackoverflow.com/a/850751/1410281

foreach (var f in new DirectoryInfo(@"...").GetFiles("*.cs", SearchOption.AllDirectories)) {
  string s = File.ReadAllText(f.FullName);
  File.WriteAllText (f.FullName, s, Encoding.UTF8);
}

【讨论】:

  • 这是一种解决方法,但在文件比较或合并时可能会在 TFS 中出现一些问题。不确定这一点。理想情况下,必须有一种方法可以更改项目的 SonarQube 编码。
  • 你说得对,应该有办法,而且我确信 SonarSource 正在解决这个问题(请参阅 Scanner for MsBuild 中的 DEFAULT-PROJECT-ENCODING 分支),但现在 UTF-8 是硬编码。
猜你喜欢
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多