Class: Pronto::RubyCritic::MessageBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/pronto/rubycritic/message_builder.rb

Overview

Builds Pronto::Message objects for smells that overlap with added lines in the current PR. Uses a pre-computed relative-path index so lookup is O(1) per smell, not O(N*M) across patches x smells.

Instance Method Summary collapse

Constructor Details

#initialize(runner:, patches:, severity_level:, formatter: nil) ⇒ MessageBuilder

Returns a new instance of MessageBuilder.



11
12
13
14
15
16
17
# File 'lib/pronto/rubycritic/message_builder.rb', line 11

def initialize(runner:, patches:, severity_level:, formatter: nil)
  @runner         = runner
  @patches        = patches
  @severity_level = severity_level
  @formatter      = formatter || Formatter.detect(severity: severity_level)
  @patch_index    = build_patch_index(patches)
end

Instance Method Details

#call(modules) ⇒ Object



19
20
21
# File 'lib/pronto/rubycritic/message_builder.rb', line 19

def call(modules)
  Array(modules).flat_map { |mod| messages_for(mod) }.compact.uniq
end