2017-02-10 36 views
1

我正在运行SonarQube 5.6版本,我试图将.NET应用程序与Sonar集成。运行声纳运行器后,我收到此警告消息SonarQube编码与.cs源文件问题不匹配

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

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

有没有什么办法可以改变SonarQube的编码?或者有没有其他解决方法。

+0

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

回答

0

目前不可能更改编码。但是,您可以按照以下建议轻松更改所有文件的编码: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); 
} 
+0

这是一个解决方法,但它可能会在文件比较或合并时在TFS中得到一些问题。不确定这一点。理想情况下,必须有一种方法来改变项目的SonarQube编码。 – Kshitiz

+0

你说得对,应该有办法,我相信SonarSource正在处理这个问题(参见[ScanBuilder for MsBuild]中的DEFAULT-PROJECT-ENCODING分支(https://github.com/SonarSource -VisualStudio/sonar-scanner-msbuild)),但是现在UTF-8是硬编码的。 – Tamas