class Rubycrap::Coverage
Attributes
coverage[R]
file[R]
filename[R]
Public Class Methods
new(file)
click to toggle source
# File lib/rubycrap/coverage.rb, line 8 def initialize(file) @file = file @filename = file["filename"] @coverage = file["coverage"] @simplecov_information = [] end
Public Instance Methods
calculate_method_coverage(startline,lastline)
click to toggle source
# File lib/rubycrap/coverage.rb, line 53 def calculate_method_coverage(startline,lastline) total_lines = lastline-startline Rubycrap::logger.debug("Startline #{startline} | Lastline #{lastline} | Total_lines #{total_lines}") coveragelinestotal = coverage coveragelines = coveragelinestotal.slice(startline-1,total_lines) Rubycrap::logger.debug("coveragelines: #{coveragelines}") covered_lines = 0 not_covered_lines = 0 coveragelines.each do |line| if coverage?(line) covered_lines += 1 end if (line.to_s.eql? "0") not_covered_lines += 1 end end valid_total_lines = covered_lines + not_covered_lines method_coverage = covered_lines.to_f / valid_total_lines.to_f Rubycrap::logger.debug("covered_lines: #{covered_lines}") Rubycrap::logger.debug("not_covered_lines: #{not_covered_lines}") Rubycrap::logger.debug("method_coverage: #{method_coverage}") method_coverage end
parse_method_coverage()
click to toggle source
# File lib/rubycrap/coverage.rb, line 22 def parse_method_coverage Parser::CurrentRuby.parse(File.open(filename, "r").read) end
process_simplecov_file()
click to toggle source
# File lib/rubycrap/coverage.rb, line 15 def process_simplecov_file Rubycrap::logger.debug(filename) ast = parse_method_coverage search_methods(ast) @simplecov_information end
search_methods(ast)
click to toggle source
# File lib/rubycrap/coverage.rb, line 26 def search_methods(ast) if (ast.nil?) return nil end if(!ast.respond_to?(:children)) return nil end ast.children.each do |child| if(child.class.to_s == "Parser::AST::Node") Rubycrap::logger.debug("TYPE AST - #{child.type.to_s}") end if(def_method?(child)) methodname = child.children[0].to_s == "(self)" ? child.children[1].to_s : child.children[0].to_s startline = child.loc.line lastline = child.loc.last_line Rubycrap::logger.debug("\nmethodname: #{methodname}") method_coverage = calculate_method_coverage(startline,lastline) @simplecov_information << {:name => methodname, :coverage => method_coverage , :startline => startline, :lastline => lastline} else search_methods(child) end end end
Private Instance Methods
coverage?(line)
click to toggle source
# File lib/rubycrap/coverage.rb, line 83 def coverage?(line) !(line.to_s.eql? "0" or line.to_s.eql? "") end
def_method?(child)
click to toggle source
# File lib/rubycrap/coverage.rb, line 78 def def_method?(child) child.class.to_s == "Parser::AST::Node" && (child.type.to_s == "def" or child.type.to_s == "defs") end