Exemple #1
0
        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);
        }
Exemple #3
0
        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);
        }