private RuleSet GetSolutionRuleSet(BindingConfiguration binding, Language language) { // If solution is not bound/is missing a rules configuration file, no need to go further var slnLevelBindingConfigFilepath = CSharpVBBindingConfigProvider.GetSolutionRuleSetFilePath(language, binding); // Projects that required project-level binding should be using RuleSets for configuration, // so we assume that the solution-level config file is a ruleset. return(fileSystem.File.Exists(slnLevelBindingConfigFilepath) ? ruleSetSerializer.LoadRuleSet(slnLevelBindingConfigFilepath) : null); }
internal static /* for testing purposes */ IBindingProcess CreateBindingProcess(IHost host, BindCommandArgs bindingArgs) { // Choose the type of binding var configProvider = host.GetService <IConfigurationProviderService>(); configProvider.AssertLocalServiceIsNotNull(); var currentConfiguration = configProvider.GetConfiguration(); SonarLintMode modeToBind; INuGetBindingOperation nugetBindingOp; // If we are currently in standalone then the project is being bound for the first time. // Otherwise, we are updating an existing binding var isFirstBinding = currentConfiguration.Mode == SonarLintMode.Standalone; if (currentConfiguration.Mode == SonarLintMode.LegacyConnected) { host.Logger.WriteLine(Strings.Bind_UpdatingLegacyBinding); modeToBind = SonarLintMode.LegacyConnected; nugetBindingOp = new NuGetBindingOperation(host, host.Logger); } else { host.Logger.WriteLine( isFirstBinding ? Strings.Bind_FirstTimeBinding : Strings.Bind_UpdatingNewStyleBinding); modeToBind = SonarLintMode.Connected; nugetBindingOp = new NoOpNuGetBindingOperation(host.Logger); } var solutionBindingOp = new SolutionBindingOperation( host, modeToBind, host.Logger); var unboundProjectFinder = new UnboundProjectFinder(host, host.Logger); var cSharpVBBindingConfigProvider = new CSharpVBBindingConfigProvider(host.SonarQubeService, nugetBindingOp, host.Logger); var cppConfigProvider = new CFamilyBindingConfigProvider(host.SonarQubeService, host.Logger); var ruleConfigProvider = new CompositeBindingConfigProvider(cSharpVBBindingConfigProvider, cppConfigProvider); var bindingProcess = new BindingProcessImpl(host, bindingArgs, solutionBindingOp, nugetBindingOp, unboundProjectFinder, ruleConfigProvider, modeToBind, isFirstBinding); return(bindingProcess); }
private bool IsSolutionBound(BindingConfiguration binding, Language language, out string solutionRuleSetFilePath, out string additionalFilePath) { solutionRuleSetFilePath = null; additionalFilePath = CSharpVBBindingConfigProvider.GetSolutionAdditionalFilePath(language, binding); if (!fileSystem.File.Exists(additionalFilePath)) { return(false); } var solutionRuleSet = GetSolutionRuleSet(binding, language); solutionRuleSetFilePath = solutionRuleSet?.FilePath; return(solutionRuleSet != null); }