Module: ArchSpec::Analyzer
Defined Under Namespace
Modules: SuppressionParser Classes: SyntaxOverlay
Instance Method Summary collapse
Instance Method Details
#analyze(definition, root:) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/archspec/analyzer.rb', line 10 def analyze(definition, root:) root = File.(root) graph = Graph.new(root) paths = ruby_files(definition, root) syntax = SyntaxOverlay.new paths.each do |path| result = Prism.parse_file(path) graph.add_file( path: path, parse_errors: parse_errors_for(path, result.errors), suppressions: suppressions_for(result.comments) ) syntax.scan(path, result.value) if result.value end method_names = definition.rules.grep(Rules::CannotCallRule).flat_map(&:method_names) index = RubydexIndex.new(paths, syntax: syntax, method_names: method_names) index.populate(graph) syntax.apply(graph, call_resolutions: index.call_resolutions) graph.assign_components(definition.component_specs.values) graph end |