private RuleSetInformation[] GetAggregatedSolutionRuleSets()
{
var solutionBinding = this.serviceProvider.GetService<ISolutionBindingSerializer>();
solutionBinding.AssertLocalServiceIsNotNull();
BoundSonarQubeProject bindingInfo = solutionBinding.ReadSolutionBinding();
if (bindingInfo == null)
{
return new RuleSetInformation[0];
}
var projectSystem = this.serviceProvider.GetService<IProjectSystemHelper>();
projectSystem.AssertLocalServiceIsNotNull();
var ruleSetInfoProvider = this.serviceProvider.GetService<ISolutionRuleSetsInformationProvider>();
ruleSetInfoProvider.AssertLocalServiceIsNotNull();
var fileSystem = this.serviceProvider.GetService<IFileSystem>();
fileSystem.AssertLocalServiceIsNotNull();
var projectRuleSetAggregation = new Dictionary<string, RuleSetInformation>(StringComparer.OrdinalIgnoreCase);
foreach (Project project in projectSystem.GetFilteredSolutionProjects())
{
string baselineRuleSet = ruleSetInfoProvider.CalculateSolutionSonarQubeRuleSetFilePath(
bindingInfo.ProjectKey,
Language.ForProject(project));
if (!fileSystem.FileExist(baselineRuleSet))
{
this.WriteWarning(Strings.ExpectedRuleSetNotFound, baselineRuleSet, project.FullName);
continue;
}
foreach (RuleSetDeclaration declaration in ruleSetInfoProvider.GetProjectRuleSetsDeclarations(project))
{
string projectRuleSet = CalculateProjectRuleSetFullPath(ruleSetInfoProvider, project, declaration);
this.AddOrUpdateAggregatedRuleSetInformation(projectRuleSetAggregation, baselineRuleSet, declaration, projectRuleSet);
}
}
return projectRuleSetAggregation.Values.ToArray();
}