internal /* for testing */ static bool ShouldMergeAnalysisSettings(string language, AnalysisConfig config, Common.ILogger logger) { Debug.Assert(!string.IsNullOrEmpty(language)); Debug.Assert(config != null); // See https://github.com/SonarSource/sonar-scanner-msbuild/issues/561 // Legacy behaviour is to overwrite. // The new (SQ 7.4+) behaviour is to merge only if sonar.[LANGUAGE].roslyn.ignoreIssues is false. var serverVersion = config?.FindServerVersion(); if (serverVersion == null || serverVersion < new Version("7.4")) { logger.LogInfo(Resources.AnalyzerSettings_ExternalIssueNotSupported, SonarProduct.GetSonarProductToLog(config?.SonarQubeHostUrl)); return(false); } var settingName = $"sonar.{language}.roslyn.ignoreIssues"; var settingInFile = config.GetSettingOrDefault(settingName, includeServerSettings: true, defaultValue: "false"); if (bool.TryParse(settingInFile, out var ignoreExternalRoslynIssues)) { logger.LogDebug(Resources.AnalyzerSettings_ImportAllSettingValue, settingName, ignoreExternalRoslynIssues.ToString().ToLowerInvariant()); return(!ignoreExternalRoslynIssues); } else { logger.LogWarning(Resources.AnalyzerSettings_InvalidValueForImportAll, settingName, settingInFile); return(false); } }