Unhandled Exception的原因是什么:System.ArgumentException:key不存在:sonaranalyzer-cs.analyzerId?

时间:2016-11-11 13:11:25

标签: sonarqube

从命令行运行MSBuild Scanner的2.0.24版会产生以下错误。

同样的分析在2.0版本中取得了成功,文档没有描述这个密钥 - 无论是强制还是扩展。

扫描程序抛出异常,并在命令行上传递强制参数,包括版本,密钥和名称。

使用MSBuild 14.0和SonarQube 5.6版构建项目LTS与C#插件的5.1版一起使用。版本矩阵表明此版本的MSBuild Scanner支持4.5或更高版本。没有安装VB插件,因为没有项目由VB代码组成。

[1] - Unhandled Exception: System.ArgumentException: key doesn't exist: sonaranalyzer-cs.analyzerId  
[2] - at SonarQube.TeamBuild.PreProcessor.Roslyn.Model.RoslynRuleSetGenerator.mandatoryPropertyValue(String propertyKey)  
[3] - at SonarQube.TeamBuild.PreProcessor.Roslyn.Model.RoslynRuleSetGenerator.generate(IEnumerable 1 activeRules, IEnumerable 1 inactiveRules, String language)  
[4] - at SonarQube.TeamBuild.PreProcessor.Roslyn.RoslynAnalyzerProvider.ConfigureAnalyzer(String language, IEnumerable 1 activeRules, IEnumerable 1 inactiveRules)  
[5]
- at SonarQube.TeamBuild.PreProcessor.Roslyn.RoslynAnalyzerProvider.SetupAnalyzer (TeamBuildSettings settings, IDictionary 2 serverSettings, IEnumerable 1 activeRules, IEnumerable 1 inactiveRules, String language)  
[6] - at SonarQube.TeamBuild.PreProcessor.TeamBuildPreProcessor.FetchArgumentsAndRulesets(ISonarQubeServer server, ProcessedArgs args, TeamBuildSettings settings, IDictionary 2& serverSettings, List 1& analyzersSettings)  
[7] - at SonarQube.TeamBuild.PreProcessor.TeamBuildPreProcessor.DoExecute(ProcessedArgs args)  
[8] - at SonarQube.TeamBuild.PreProcessor.TeamBuildPreProcessor.Execute(String[] args)  
[9] - at SonarQube.Bootstrapper.BootstrapperClass.PreProcess()  
[10] - at SonarQube.Bootstrapper.BootstrapperClass.Execute() 
[11] - at SonarQube.Bootstrapper.Program.Main(String[] args) 
[12] - at SonarQube.Old.Bootstrapper.Program.Main(String[] args)

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

实际上,我想我可能有答案。我相信问题是他们在最新版本中添加了这个新的sonaranalyzer-cs.analyzerId密钥。如果我是对的,你就像我一样,正在运行较旧版本的sonarqube服务器,但你下载了最新版本的扫描仪。因此,旧版本的服务器不会发送密钥,而较新版本的扫描程序需要将其作为强制服务器设置。

当我切换到使用服务器附带的扫描仪版本时,它都按预期工作。我相信我也可以升级我们的服务器,但当时不在路线图上。