从命令行运行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)
非常感谢任何建议。
答案 0 :(得分:2)
实际上,我想我可能有答案。我相信问题是他们在最新版本中添加了这个新的sonaranalyzer-cs.analyzerId密钥。如果我是对的,你就像我一样,正在运行较旧版本的sonarqube服务器,但你下载了最新版本的扫描仪。因此,旧版本的服务器不会发送密钥,而较新版本的扫描程序需要将其作为强制服务器设置。
当我切换到使用服务器附带的扫描仪版本时,它都按预期工作。我相信我也可以升级我们的服务器,但当时不在路线图上。