Class: Mxrb::Semantic::Analyzer
- Inherits:
-
Object
- Object
- Mxrb::Semantic::Analyzer
- Defined in:
- lib/mxrb/semantic/analyzer.rb
Overview
Static analysis for an opened Mendix project. The result is plain, immutable Ruby data and can be filtered or extended without a query DSL.
Constant Summary collapse
- DEFAULT_UNREFERENCED_KINDS =
%i[microflow nanoflow workflow page].freeze
Instance Method Summary collapse
- #analyze(unreferenced_kinds: DEFAULT_UNREFERENCED_KINDS, rules: []) ⇒ Object
-
#initialize(project) ⇒ Analyzer
constructor
A new instance of Analyzer.
Constructor Details
#initialize(project) ⇒ Analyzer
Returns a new instance of Analyzer.
23 24 25 26 |
# File 'lib/mxrb/semantic/analyzer.rb', line 23 def initialize(project) @project = project @index = project.semantic_index end |
Instance Method Details
#analyze(unreferenced_kinds: DEFAULT_UNREFERENCED_KINDS, rules: []) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/mxrb/semantic/analyzer.rb', line 28 def analyze(unreferenced_kinds: DEFAULT_UNREFERENCED_KINDS, rules: []) cycles = call_cycles unreferenced = unreferenced_artifacts(unreferenced_kinds) unresolved = unresolved_references diagnostics = cycle_diagnostics(cycles) + unresolved_diagnostics(unresolved) + unreferenced_diagnostics(unreferenced) + quality_diagnostics + custom_diagnostics(rules) Report.new( diagnostics.sort_by { [_1.severity == :error ? 0 : 1, _1.] }.freeze, unreferenced.freeze, unresolved.freeze, cycles.freeze, module_dependencies.freeze ) end |