Class: SimpleCov::Formatter::AIFormatter

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/simplecov-ai.rb,
lib/simplecov-ai/version.rb,
lib/simplecov-ai/constants.rb,
lib/simplecov-ai/ast_resolver.rb,
lib/simplecov-ai/configuration.rb,
lib/simplecov-ai/markdown_builder.rb,
lib/simplecov-ai/ast_resolver/semantic_node.rb,
lib/simplecov-ai/markdown_builder/branch_enricher.rb,
lib/simplecov-ai/markdown_builder/bypass_compiler.rb,
lib/simplecov-ai/markdown_builder/deficit_grouper.rb,
lib/simplecov-ai/markdown_builder/deficit_compiler.rb,
lib/simplecov-ai/markdown_builder/deficit_formatter.rb,
lib/simplecov-ai/markdown_builder/snippet_formatter.rb

Overview

Transforms raw simplecov coverage results into an AI-optimized markdown digest. It addresses the context window limitations of LLMs by emitting token-efficient reports and relying on AST-based semantic mapping to pinpoint exact methods or classes with deficient coverage.

Defined Under Namespace

Modules: Constants Classes: ASTResolver, Configuration, MarkdownBuilder

Constant Summary collapse

SUCCESS_LOG_PREFIX =

The standard output prefix used when reporting generation success.

T.let("\n[SimpleCov AI Formatter] Digest written to ", String)
VERSION =

The semantic version identifier for the gem, used for dependency resolution and enforcing compatibility across upgrades.

T.let('0.10.5', String)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configurationObject



34
35
36
# File 'lib/simplecov-ai.rb', line 34

def self.configuration
  @configuration ||= T.let(Configuration.new, T.nilable(Configuration))
end

.configure(&blk) ⇒ Object



44
45
46
# File 'lib/simplecov-ai.rb', line 44

def self.configure(&blk)
  blk&.call(configuration)
end

Instance Method Details

#format(coverage_metrics) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/simplecov-ai.rb', line 56

def format(coverage_metrics)
  config = self.class.configuration
  builder = MarkdownBuilder.new(coverage_metrics, config)
  digest = builder.build

  FileUtils.mkdir_p(File.dirname(config.report_path))
  File.write(config.report_path, digest)

  puts "#{SUCCESS_LOG_PREFIX}#{config.report_path}" if config.output_to_console
end