public void FilterRules()

in src/Analyzer.JsonRuleEngine/JsonRuleEngine.cs [62:94]


        public void FilterRules(ConfigurationDefinition configuration)
        {
            if (configuration == null)
                throw new ArgumentNullException(nameof(configuration));

            if (configuration.InclusionsConfigurationDefinition?.Severity != null
                || configuration.InclusionsConfigurationDefinition?.Ids != null)
            {
                var includeSeverities = configuration.InclusionsConfigurationDefinition.Severity;
                var includeIds = configuration.InclusionsConfigurationDefinition.Ids;

                RuleDefinitions = RuleDefinitions.Where(r => (includeSeverities != null && includeSeverities.Contains(r.Severity)) ||
                    (includeIds != null && includeIds.Contains(r.Id))).ToList().AsReadOnly();
            }
            else if (configuration.ExclusionsConfigurationDefinition?.Severity != null
                || configuration.ExclusionsConfigurationDefinition?.Ids != null)
            {
                var excludeSeverities = configuration.ExclusionsConfigurationDefinition.Severity;
                var excludeIds = configuration.ExclusionsConfigurationDefinition.Ids;

                RuleDefinitions = RuleDefinitions.Where(r => !(excludeSeverities != null && excludeSeverities.Contains(r.Severity)) &&
                    !(excludeIds != null && excludeIds.Contains(r.Id))).ToList().AsReadOnly();
            }

            if (configuration.SeverityOverrides != null)
            {                
                var ruleSubset = RuleDefinitions.Where(r => configuration.SeverityOverrides.Keys.Contains(r.Id));
                foreach (RuleDefinition rule in ruleSubset)
                {
                    rule.Severity = configuration.SeverityOverrides[rule.Id];
                }
            }
        }