public string WriteSolutionBinding(BoundSonarQubeProject binding) { if (binding == null) { throw new ArgumentNullException(nameof(binding)); } ISourceControlledFileSystem sccFileSystem = this.serviceProvider.GetService <ISourceControlledFileSystem>(); sccFileSystem.AssertLocalServiceIsNotNull(); string configFile = this.GetSonarQubeConfigurationFilePath(); if (string.IsNullOrWhiteSpace(configFile)) { return(null); } sccFileSystem.QueueFileWrite(configFile, () => { if (this.WriteBindingInformation(configFile, binding)) { this.AddSolutionItemFile(configFile); this.RemoveSolutionItemFile(configFile); return(true); } return(false); }); return(configFile); }
private void OnFixConflicts(IEnumerable <ProjectRuleSetConflict> conflicts) { if (this.OnFixConflictsStatus(conflicts)) { var componentModel = host.GetService <SComponentModel, IComponentModel>(); TelemetryLoggerAccessor.GetLogger(componentModel)?.ReportEvent(TelemetryEvent.FixConflictsCommandCalled); IRuleSetInspector inspector = this.host.GetService <IRuleSetInspector>(); inspector.AssertLocalServiceIsNotNull(); ISourceControlledFileSystem sccFileSystem = this.host.GetService <ISourceControlledFileSystem>(); sccFileSystem.AssertLocalServiceIsNotNull(); IRuleSetSerializer ruleSetSerializer = this.host.GetService <IRuleSetSerializer>(); ruleSetSerializer.AssertLocalServiceIsNotNull(); var fixedConflictsMap = new Dictionary <RuleSetInformation, FixedRuleSetInfo>(); foreach (RuleSetInformation ruleSetInfo in conflicts.Select(c => c.RuleSetInfo)) { FixedRuleSetInfo fixInfo = inspector.FixConflictingRules(ruleSetInfo.BaselineFilePath, ruleSetInfo.RuleSetFilePath, ruleSetInfo.RuleSetDirectories); Debug.Assert(fixInfo != null); fixedConflictsMap[ruleSetInfo] = fixInfo; sccFileSystem.QueueFileWrite(fixInfo.FixedRuleSet.FilePath, () => { ruleSetSerializer.WriteRuleSetFile(fixInfo.FixedRuleSet, fixInfo.FixedRuleSet.FilePath); return(true); }); } this.WriteFixSummaryToOutputWindow(fixedConflictsMap); if (sccFileSystem.WriteQueuedFiles()) { this.Clear(); } else { Debug.Fail("Failed to write one or more of the queued files"); } } }