Exemplo n.º 1
0
        private void RegisterLocalServices()
        {
            this.localServices.Add(typeof(ISolutionRuleSetsInformationProvider), new Lazy <ILocalService>(() => new SolutionRuleSetsInformationProvider(this, Logger)));
            this.localServices.Add(typeof(IRuleSetSerializer), new Lazy <ILocalService>(() => new RuleSetSerializer()));
            this.localServices.Add(typeof(ICredentialStoreService), new Lazy <ILocalService>(() => new CredentialStore(new SecretStore("SonarLint.VisualStudio.Integration"))));
            this.localServices.Add(typeof(IConfigurationProvider), new Lazy <ILocalService>(() =>
            {
                var solution = this.GetService <SVsSolution, IVsSolution>();
                var connectedModeConfigPathProvider = new ConnectedModeSolutionBindingPathProvider(solution);
                var legacyConfigPathProvider        = new LegacySolutionBindingPathProvider(this);
                var legacyPostSaveOperation         = new LegacySolutionBindingPostSaveOperation(this);

                var store             = this.GetService <ICredentialStoreService>();
                var credentialsLoader = new SolutionBindingCredentialsLoader(store);
                var bindingFileLoader = new SolutionBindingFileLoader(Logger);

                var sccFileSystem = this.GetService <ISourceControlledFileSystem>();

                var bindingSerializer = new SolutionBindingSerializer(sccFileSystem, bindingFileLoader, credentialsLoader);

                return(new ConfigurationProvider(legacyConfigPathProvider, connectedModeConfigPathProvider, bindingSerializer, legacyPostSaveOperation));
            }));

            var projectNameTestProjectIndicator = new Lazy <ILocalService>(() => new ProjectNameTestProjectIndicator(Logger));

            this.localServices.Add(typeof(ITestProjectRegexSetter), projectNameTestProjectIndicator);

            this.localServices.Add(typeof(IProjectSystemHelper), new Lazy <ILocalService>(() => new ProjectSystemHelper(this)));
            this.localServices.Add(typeof(IRuleSetInspector), new Lazy <ILocalService>(() => new RuleSetInspector(this, Logger)));
            this.localServices.Add(typeof(IRuleSetConflictsController), new Lazy <ILocalService>(() => new RuleSetConflictsController(this, new ConflictsManager(this, Logger))));
            this.localServices.Add(typeof(IProjectSystemFilter), new Lazy <ILocalService>(() =>
            {
                var testProjectIndicators = new List <ITestProjectIndicator>
                {
                    new BuildPropertyTestProjectIndicator(this),
                    new ProjectKindTestProjectIndicator(this),
                    new ProjectCapabilityTestProjectIndicator(this),
                    new ServiceGuidTestProjectIndicator(Logger),
                    projectNameTestProjectIndicator.Value as ITestProjectIndicator,
                };

                var testProjectIndicator = new TestProjectIndicator(testProjectIndicators);

                return(new ProjectSystemFilter(this, testProjectIndicator));
            }));
            this.localServices.Add(typeof(IErrorListInfoBarController), new Lazy <ILocalService>(() => new ErrorListInfoBarController(this, new UnboundProjectFinder(this))));

            // Use Lazy<object> to avoid creating instances needlessly, since the interfaces are serviced by the same instance
            var sccFs = new Lazy <ILocalService>(() => new SourceControlledFileSystem(this, Logger));

            this.localServices.Add(typeof(ISourceControlledFileSystem), sccFs);

            Debug.Assert(SupportedLocalServices.Length == this.localServices.Count, "Unexpected number of local services");
            Debug.Assert(SupportedLocalServices.All(t => this.localServices.ContainsKey(t)), "Not all the LocalServices are registered");
        }
        private ILocalService GetConfigurationPersister()
        {
            var connectedModeConfigPathProvider = new ConnectedModeSolutionBindingPathProvider(this);
            var legacyConfigPathProvider        = new LegacySolutionBindingPathProvider(this);
            var legacyConfigFolderItemAdder     = new LegacyConfigFolderItemAdder(this);

            var credentialsLoader = new SolutionBindingCredentialsLoader(credentialStoreService);
            var bindingFileLoader = new SolutionBindingFileLoader(Logger);

            var sccFileSystem = this.GetService <ISourceControlledFileSystem>();

            var solutionBindingDataWriter = new SolutionBindingDataWriter(sccFileSystem, bindingFileLoader, credentialsLoader);

            return(new ConfigurationPersister(legacyConfigPathProvider, connectedModeConfigPathProvider, solutionBindingDataWriter, legacyConfigFolderItemAdder));
        }
        public void TestInitialize()
        {
            logger     = new Mock <ILogger>();
            fileSystem = new Mock <IFileSystem>();

            testSubject = new SolutionBindingFileLoader(logger.Object, fileSystem.Object);

            fileSystem.Setup(x => x.Directory.Exists(MockDirectory)).Returns(true);

            boundProject = new BoundSonarQubeProject(
                new Uri("http://xxx.www.zzz/yyy:9000"),
                "MyProject Key",
                "projectName")
            {
                Profiles = new Dictionary <Language, ApplicableQualityProfile>
                {
                    {
                        Language.CSharp,
                        new ApplicableQualityProfile
                        {
                            ProfileKey = "sonar way", ProfileTimestamp = DateTime.Parse("2020-02-25T08:57:54+0000")
                        }
                    }
                }
            };

            serializedProject = @"{
  ""ServerUri"": ""http://xxx.www.zzz/yyy:9000"",
  ""Organization"": null,
  ""ProjectKey"": ""MyProject Key"",
  ""ProjectName"": ""projectName"",
  ""Profiles"": {
    ""CSharp"": {
      ""ProfileKey"": ""sonar way"",
      ""ProfileTimestamp"": ""2020-02-25T08:57:54Z""
    }
  }
}";
        }