【发布时间】:2016-10-05 01:07:17
【问题描述】:
我正在设置我们的 TeamCity 构建以运行对 C# 解决方案的 SonarQube 分析。我已经通过使用-Dsonar.sourceEncoding=UTF-8 让 Sonar 识别我们文件中的 utf-8 BOM 标头来克服一个障碍。我目前的问题与 C# 6.0 语法有关,例如字符串插值,Sonar 似乎无法识别它并给我“解析错误”:
[09:38:39][Step 4/6] 04:38:39.338 ERROR - Unable to parse file: C:\BuildAgent\work\.........\DataLayerTests.cs
[09:38:39][Step 4/6] 04:38:39.338 ERROR - Parse error at line 44 column 46:
[09:38:39][Step 4/6]
[09:38:39][Step 4/6] 43: Assert.IsNotNull(results, "The method returned NULL instead of any results.");
[09:38:39][Step 4/6] --> Assert.AreEqual(1, results.Count, $"The method returned {results.Count} results instead of 1.");
我需要与sonar-runner 一起使用任何其他命令行参数以确保兼容性吗?还是这与我们使用的 C# 插件的版本有关?
我发现了这个other 问题,它只是切线相关的。这个问题是关于使 Roslyn 分析器发现的问题能够流回 SonarQube。我的问题比这更基本,因为我什至还没有到 Sonar 可以完全理解我的语法的阶段!
【问题讨论】:
-
您使用的是哪个版本的 C# 插件?你为什么直接和
sonar-runner打交道?你为什么不使用SonarQube Scanner for MSBuild? -
我们使用 SonarQube 4.5.6 和 3.2 版的 C# 插件。我们正在通过 TeamCity 中的构建步骤调用 SonarQube Runner,因此我引用了
sonar-runner(TeamCity 自动调用它)。 -
我明白了。这是一个非常古老的 C# 插件(Roslyn 之前)。升级到最新(或 3.4+)版本将解决 C# 6 问题。在此处查看版本:jira.sonarsource.com/browse/SONARCS/…
-
完美,谢谢塔马斯!如果您想将其写为答案,请在下面将其标记为正确。
标签: c# sonarqube sonar-runner c#-6.0 string-interpolation