Class: SimpleCov::SourceFile::Statistics
- Inherits:
-
Object
- Object
- SimpleCov::SourceFile::Statistics
- Defined in:
- lib/simplecov/source_file/statistics.rb,
sig/simplecov.rbs
Overview
Builds the CoverageStatistics triple (:line/:branch/:method) for a SourceFile; disabled or empty criteria collapse to 0/0/0.
Instance Method Summary collapse
- #branch_statistics ⇒ Hash[criterion, CoverageStatistics]
- #call ⇒ Hash[criterion, CoverageStatistics]
-
#initialize(source_file) ⇒ Statistics
constructor
A new instance of Statistics.
- #line_statistics ⇒ Hash[criterion, CoverageStatistics]
- #method_statistics ⇒ Hash[criterion, CoverageStatistics]
Constructor Details
#initialize(source_file) ⇒ Statistics
Returns a new instance of Statistics.
10 11 12 |
# File 'lib/simplecov/source_file/statistics.rb', line 10 def initialize(source_file) @source_file = source_file end |
Instance Method Details
#branch_statistics ⇒ Hash[criterion, CoverageStatistics]
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/simplecov/source_file/statistics.rb', line 36 def branch_statistics sf = @source_file # Files added via track_files but never loaded/required have no # branch data. Report 0% instead of misleading 100% (see #902). if sf.not_loaded? && sf.covered_branches.empty? && sf.missed_branches.empty? return {branch: CoverageStatistics.new(covered: 0, missed: 0, percent: 0.0)} end {branch: CoverageStatistics.new(covered: sf.covered_branches.size, missed: sf.missed_branches.size)} end |
#call ⇒ Hash[criterion, CoverageStatistics]
14 15 16 17 18 19 20 |
# File 'lib/simplecov/source_file/statistics.rb', line 14 def call { **line_statistics, **branch_statistics, **method_statistics } end |
#line_statistics ⇒ Hash[criterion, CoverageStatistics]
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/simplecov/source_file/statistics.rb', line 24 def line_statistics sf = @source_file { line: CoverageStatistics.new( total_strength: sf.lines.sum { |line| line.coverage.to_i }, covered: sf.covered_lines.size, missed: sf.missed_lines.size, omitted: sf.never_lines.size ) } end |
#method_statistics ⇒ Hash[criterion, CoverageStatistics]
47 48 49 50 51 52 53 54 |
# File 'lib/simplecov/source_file/statistics.rb', line 47 def method_statistics sf = @source_file if sf.not_loaded? && sf.covered_methods.empty? && sf.missed_methods.empty? return {method: CoverageStatistics.new(covered: 0, missed: 0, percent: 0.0)} end {method: CoverageStatistics.new(covered: sf.covered_methods.size, missed: sf.missed_methods.size)} end |