26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/route_guard/analyzer.rb', line 26
def self.analyze(routes, enabled_rules, options = {})
report = Models::Report.new(routes)
start_time = Time.now
if enabled_rules.include?(:statistics)
stat_rule = Rules::Statistics.new(options)
stat_rule.analyze(routes, report)
end
issues = []
lint_rules = %i[duplicate_routes shadowed_routes unreachable_routes duplicate_helpers duplicate_resources unused_routes]
(lint_rules & enabled_rules).each do |rule_sym|
rule_class = RULE_MAPPING[rule_sym]
next unless rule_class
rule = rule_class.new(options)
rule_issues = rule.analyze(routes, report)
issues.concat(rule_issues) if rule_issues.is_a?(Array)
end
report.issues = issues
if report.stats && report.stats.any?
report.stats[:duplicate_paths] = issues.count { |i| i.rule_name == :duplicate_routes }
report.stats[:shadowed_routes] = issues.count { |i| i.rule_name == :shadowed_routes }
end
if enabled_rules.include?(:complexity)
comp_rule = Rules::Complexity.new(options)
comp_issues = comp_rule.analyze(routes, report)
issues.concat(comp_issues) if comp_issues.is_a?(Array)
end
report.issues = issues
report.duration = Time.now - start_time
report
end
|