Class: SimpleCov::Formatter::AIFormatter::MarkdownBuilder::DeficitFormatter

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Includes:
SnippetFormatter
Defined in:
lib/simplecov-ai/markdown_builder/deficit_formatter.rb

Overview

Handles the formatting of line and branch deficits into markdown.

Constant Summary collapse

ERROR_AST_FAILED =

Error message for AST parsing failures

T.let("  - **ERROR:** AST Parsing Failed. Showing raw line numbers instead.\n", String)
NODE_HEADING_TEMPLATE =

Template for node-level deficit headings

T.let('- `%s`', String)
DEFICIT_COARSE =

Coarse-grained deficit summary message

T.let('  - **Deficit:** Contains unexecuted lines or branches.', String)
LINE_DEFICIT_TMPL =

Template for a specific line deficit

T.let('  - **Line Deficit:** [L%d] `%s` %s', String)
BRANCH_DEFICIT_TMPL =

Template for a specific branch deficit

T.let('  - **Branch Deficit:** [L%s] Missing coverage for `%s` branch: `%s` %s', String)

Constants included from SnippetFormatter

SnippetFormatter::ESTIMATED_CHARS_PER_LINE, SnippetFormatter::OCCURRENCE_TEMPLATE, SnippetFormatter::TRUNCATION_ELLIPSIS

Instance Method Summary collapse

Methods included from SnippetFormatter

#calculate_occurrence, #count_snippet_occurrences, #fetch_snippet_text, #truncate_snippet

Constructor Details

#initialize(buffer, config) ⇒ DeficitFormatter

Returns a new instance of DeficitFormatter.



25
26
27
28
# File 'lib/simplecov-ai/markdown_builder/deficit_formatter.rb', line 25

def initialize(buffer, config)
  @buffer = buffer
  @config = config
end

Instance Method Details

#format_raw_deficits(file, source_lines) ⇒ Object



31
32
33
34
35
36
# File 'lib/simplecov-ai/markdown_builder/deficit_formatter.rb', line 31

def format_raw_deficits(file, source_lines)
  @buffer.puts ERROR_AST_FAILED
  deficit_group = MarkdownBuilder::DeficitGroup.new(lines: file.missed_lines, branches: file.missed_branches)
  format_deficit_group(deficit_group, source_lines)
  @buffer.puts ''
end

#process_deficits(file, nodes, safe_readlines_proc) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/simplecov-ai/markdown_builder/deficit_formatter.rb', line 42

def process_deficits(file, nodes, safe_readlines_proc)
  node_deficits = DeficitGrouper.build(file, nodes)
  source_lines = T.let(nil, T.nilable(T::Array[String]))

  node_deficits.each do |node_name, deficit_group|
    source_lines ||= safe_readlines_proc.call
    format_node_deficit(node_name, deficit_group, source_lines)
  end

  @buffer.puts ''
end