Class: SimpleCov::Formatter::AIFormatter::MarkdownBuilder::DeficitCompiler
- Inherits:
-
Object
- Object
- SimpleCov::Formatter::AIFormatter::MarkdownBuilder::DeficitCompiler
- Extended by:
- T::Sig
- Defined in:
- lib/simplecov-ai/markdown_builder/deficit_compiler.rb
Overview
Selects the files with coverage deficits, orders them lowest-coverage first and writes each one's semantic-node fragments through the budget. A file whose coverage data SimpleCov cannot decode counts as a deficit file: it is listed first of all, and its only entry is the error line the decode guard produces.
Constant Summary collapse
- HEADING =
Header for the coverage deficits section
T.let("## Coverage Deficits\n\n", String)
- UNDECODABLE_COVERAGE =
Sort figure of a file whose coverage SimpleCov cannot decode: below any real percentage, so the file precedes every decodable deficit file.
T.let(-1.0, Float)
Instance Method Summary collapse
-
#initialize(coverage_metrics, config, builder) ⇒ DeficitCompiler
constructor
A new instance of DeficitCompiler.
- #write_deficits(budget) ⇒ Object
Constructor Details
#initialize(coverage_metrics, config, builder) ⇒ DeficitCompiler
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/simplecov-ai/markdown_builder/deficit_compiler.rb', line 22 def initialize(coverage_metrics, config, builder) @coverage_metrics = coverage_metrics @config = config @builder = builder # When the aggregate cannot be decoded the answer is unknowable; the header then shows # an N/A method line, matched here by listing the method deficits of every file that # still decodes. measured = DecodeGuard.attempt(true) { MethodDeficit.measured?(coverage_metrics) } @method_coverage_measured = T.let(measured, T::Boolean) end |
Instance Method Details
#write_deficits(budget) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/simplecov-ai/markdown_builder/deficit_compiler.rb', line 39 def write_deficits(budget) writer = SectionWriter.new(budget, HEADING) deficit_files = find_deficit_files deficit_files.each do |file| break if writer.closed? writer.write_file_block(SectionWriter.file_heading(file), render_file(file)) end deficit_files.size - writer.written_blocks end |