Changeset 340bd709cb5031fcc12fc5f7d3fae191ec716b7c

Show
Ignore:
Timestamp:
04/25/08 13:08:46 (9 months ago)
Author:
David Balmain <dbalmain@…>
Parents:
ea6c371194730654bebe8dce00285a87789ce06a
Children:
53eafd97a7caf432dce29b625005d7e028ae5b62
git-committer:
David Balmain <dbalmain@gmail.com> / 2008-04-25T13:08:46Z+1000
Message:

Updated rake gcov task to print total coverage

Location:
c
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • c/.rake/gcov_results.erb

    rb78e07 r340bd7  
    1616    <h1>Ferret gcov Results</h1> 
    1717    <table cellpadding="0" cellspacing="5"> 
    18     <% $gcov_results.each do |percent, line_cnt, filename| %> 
     18    <% gcov_sorted_keys.each do |fn| %> 
    1919      <tr> 
    20         <th class="filename"><%= filename %></th> 
     20        <th class="filename"><%= fn %></th> 
    2121        <td class="result"> 
    22           <div class="bar" style="width:<%=percent%>%;">&nbsp;<div> 
     22          <div class="bar" style="width:<%=$gcov_results.files[fn].percent%>%;">&nbsp;<div> 
    2323        </td> 
    2424      </tr> 
  • c/Rakefile

    r3d5c1b r340bd7  
    33require 'rake' 
    44require 'rake/clean' 
     5require 'ostruct' 
    56 
    67class String 
     
    105106  basename 
    106107end 
    107 $gcov_results   = [] 
     108 
     109$gcov_results   = OpenStruct.new(:files => {}) 
     110def gcov_sorted_keys 
     111  $gcov_results.files.keys.sort_by {|fn| 
     112      $gcov_results.files[fn].percent 
     113  }.reverse 
     114end 
    108115 
    109116### 
     
    229236task :gcov => :do_gcov do 
    230237  puts "\ngcov Results\n=============\n" 
    231   $gcov_results.each do |percent, line_cnt, fn| 
    232     puts "%25s %6.2f%% (%4d)" % [fn, percent, line_cnt] 
    233   end 
     238  total_lines = 0 
     239  total_lines_covered = 0 
     240  gcov_sorted_keys.each do |fn| 
     241    res = $gcov_results.files[fn] 
     242    puts "%25s %6.2f%% (%4d)" % [fn, res.percent, res.line_count] 
     243  end 
     244  puts "Total Lines:         %s" % $gcov_results.total_lines 
     245  puts "Total Lines covered: %s (%0.2f%%)" %  
     246            [$gcov_results.covered_lines, $gcov_results.percent] 
    234247end 
    235248 
     
    244257  CFLAGS << " -fprofile-arcs -ftest-coverage" 
    245258  run_tests 
    246   gcov_results = [] 
     259  gcov_result_map = {} 
    247260  gcov_scanner = /File '([^']+)'\nLines executed:(\d+.\d+)% of (\d+)/ 
     261  total_lines = covered_lines = 0 
    248262  OBJS.each do |obj| 
    249263    bn = obj.pathmap('%n') 
     
    256270    gcov_cmd = "gcov -o .gcov/ #{obj}" 
    257271    details = IO.popen(gcov_cmd).read.scan(gcov_scanner) 
    258     details.each do |filename, percent, line_cnt| 
     272    details.each do |filename, percent, line_count| 
    259273      next if filename =~ /^\// 
    260       $gcov_results << [percent.to_f, line_cnt, filename] 
    261     end 
    262   end 
    263   $gcov_results = $gcov_results.sort_by{|res| res[0]}.reverse 
     274      line_count = line_count.to_i 
     275      percent = percent.to_f 
     276      $gcov_results.files[filename] = OpenStruct.new(:percent => percent, 
     277                                                     :line_count => line_count) 
     278      total_lines += line_count 
     279      covered_lines += (0.01 * percent * line_count).to_i 
     280    end 
     281  end 
     282  $gcov_results.total_lines = total_lines 
     283  $gcov_results.covered_lines = covered_lines 
     284  $gcov_results.percent = 100.0 * covered_lines /total_lines 
    264285end 
    265286