Class: Piggly::Compiler::LineCoverage
- Defined in:
- lib/piggly/compiler/line_coverage.rb
Overview
Calculates line-level coverage from tagged parse tree nodes.
Instance Method Summary collapse
-
#calculate(procedure, profile) ⇒ Hash
Calculate line coverage for a procedure.
-
#initialize(config) ⇒ LineCoverage
constructor
A new instance of LineCoverage.
-
#summary(coverage) ⇒ Hash
Calculate summary statistics from coverage data.
Constructor Details
#initialize(config) ⇒ LineCoverage
Returns a new instance of LineCoverage.
8 9 10 |
# File 'lib/piggly/compiler/line_coverage.rb', line 8 def initialize(config) @config = config end |
Instance Method Details
#calculate(procedure, profile) ⇒ Hash
Calculate line coverage for a procedure
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/piggly/compiler/line_coverage.rb', line 16 def calculate(procedure, profile) Parser.parser compiler = TraceCompiler.new(@config) # Let compile() handle staleness - it will recompile if needed data = compiler.compile(procedure) # Return empty if compilation failed (tree is nil) tree = data[:tree] return {} if tree.nil? source = procedure.source(@config) coverage = {} traverse(tree, profile, source, coverage) coverage end |
#summary(coverage) ⇒ Hash
Calculate summary statistics from coverage data
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/piggly/compiler/line_coverage.rb', line 38 def summary(coverage) return { count: 0, percent: nil } if coverage.empty? total_lines = coverage.size covered_lines = coverage.count { |_, v| v[:covered] } { count: total_lines, percent: total_lines > 0 ? (covered_lines.to_f / total_lines * 100) : nil } end |