private static ImmutableList <RuleParameterValues> ParseParameters(XDocument xml) { var builder = ImmutableList.CreateBuilder <RuleParameterValues>(); foreach (var rule in xml.Descendants("Rule").Where(e => e.Elements("Parameters").Any())) { var analyzerId = rule.Elements("Key").Single().Value; var parameterValues = rule .Elements("Parameters").Single() .Elements("Parameter") .Select(e => new RuleParameterValue { ParameterKey = e.Elements("Key").Single().Value, ParameterValue = e.Elements("Value").Single().Value }); var pvs = new RuleParameterValues { RuleId = analyzerId }; pvs.ParameterValues.AddRange(parameterValues); builder.Add(pvs); } return(builder.ToImmutable()); }
//todo: this can become private when we remove the template rule public static ImmutableList<RuleParameterValues> ParseParameters(XContainer xml) { var builder = ImmutableList.CreateBuilder<RuleParameterValues>(); foreach (var rule in xml.Descendants("Rule").Where(e => e.Elements("Parameters").Any())) { var analyzerId = rule.Elements("Key").Single().Value; var parameterValues = rule .Elements("Parameters").Single() .Elements("Parameter") .Select(e => new RuleParameterValue { ParameterKey = e.Elements("Key").Single().Value, ParameterValue = e.Elements("Value").Single().Value }); var pvs = new RuleParameterValues { RuleId = analyzerId }; pvs.ParameterValues.AddRange(parameterValues); builder.Add(pvs); } return builder.ToImmutable(); }
public Configuration(XContainer xml, AnalyzerLanguage language) { this.language = language; nonTemplateAnalyzers = ImmutableArray.Create(GetNonTemplateAnalyzers(language).ToArray()); var settings = ParseSettings(xml); IgnoreHeaderComments = "true".Equals(settings["sonar.cs.ignoreHeaderComments"]); Files = xml.Descendants("File").Select(e => e.Value).ToImmutableList(); AnalyzerIds = xml.Descendants("Rule").Select(e => e.Elements("Key").Single().Value).ToImmutableHashSet(); var builder = ImmutableList.CreateBuilder <RuleParameterValues>(); foreach (var rule in xml.Descendants("Rule").Where(e => e.Elements("Parameters").Any())) { var analyzerId = rule.Elements("Key").Single().Value; var parameterValues = rule .Elements("Parameters").Single() .Elements("Parameter") .Select(e => new RuleParameterValue { ParameterKey = e.Elements("Key").Single().Value, ParameterValue = e.Elements("Value").Single().Value }); var pvs = new RuleParameterValues { RuleId = analyzerId }; pvs.ParameterValues.AddRange(parameterValues); builder.Add(pvs); } parameters = builder.ToImmutable(); }
public Configuration(XContainer xml, AnalyzerLanguage language) { this.language = language; nonTemplateAnalyzers = ImmutableArray.Create(GetNonTemplateAnalyzers(language).ToArray()); var settings = ParseSettings(xml); IgnoreHeaderComments = "true".Equals(settings["sonar.cs.ignoreHeaderComments"]); Files = xml.Descendants("File").Select(e => e.Value).ToImmutableList(); AnalyzerIds = xml.Descendants("Rule").Select(e => e.Elements("Key").Single().Value).ToImmutableHashSet(); var builder = ImmutableList.CreateBuilder<RuleParameterValues>(); foreach (var rule in xml.Descendants("Rule").Where(e => e.Elements("Parameters").Any())) { var analyzerId = rule.Elements("Key").Single().Value; var parameterValues = rule .Elements("Parameters").Single() .Elements("Parameter") .Select(e => new RuleParameterValue { ParameterKey = e.Elements("Key").Single().Value, ParameterValue = e.Elements("Value").Single().Value }); var pvs = new RuleParameterValues { RuleId = analyzerId }; pvs.ParameterValues.AddRange(parameterValues); builder.Add(pvs); } parameters = builder.ToImmutable(); }