Changeset 340bd709cb5031fcc12fc5f7d3fae191ec716b7c
- 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:
-
Legend:
- Unmodified
- Added
- Removed
-
|
rb78e07
|
r340bd7
|
|
| 16 | 16 | <h1>Ferret gcov Results</h1> |
| 17 | 17 | <table cellpadding="0" cellspacing="5"> |
| 18 | | <% $gcov_results.each do |percent, line_cnt, filename| %> |
| | 18 | <% gcov_sorted_keys.each do |fn| %> |
| 19 | 19 | <tr> |
| 20 | | <th class="filename"><%= filename %></th> |
| | 20 | <th class="filename"><%= fn %></th> |
| 21 | 21 | <td class="result"> |
| 22 | | <div class="bar" style="width:<%=percent%>%;"> <div> |
| | 22 | <div class="bar" style="width:<%=$gcov_results.files[fn].percent%>%;"> <div> |
| 23 | 23 | </td> |
| 24 | 24 | </tr> |
-
|
r3d5c1b
|
r340bd7
|
|
| 3 | 3 | require 'rake' |
| 4 | 4 | require 'rake/clean' |
| | 5 | require 'ostruct' |
| 5 | 6 | |
| 6 | 7 | class String |
| … |
… |
|
| 105 | 106 | basename |
| 106 | 107 | end |
| 107 | | $gcov_results = [] |
| | 108 | |
| | 109 | $gcov_results = OpenStruct.new(:files => {}) |
| | 110 | def gcov_sorted_keys |
| | 111 | $gcov_results.files.keys.sort_by {|fn| |
| | 112 | $gcov_results.files[fn].percent |
| | 113 | }.reverse |
| | 114 | end |
| 108 | 115 | |
| 109 | 116 | ### |
| … |
… |
|
| 229 | 236 | task :gcov => :do_gcov do |
| 230 | 237 | 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] |
| 234 | 247 | end |
| 235 | 248 | |
| … |
… |
|
| 244 | 257 | CFLAGS << " -fprofile-arcs -ftest-coverage" |
| 245 | 258 | run_tests |
| 246 | | gcov_results = [] |
| | 259 | gcov_result_map = {} |
| 247 | 260 | gcov_scanner = /File '([^']+)'\nLines executed:(\d+.\d+)% of (\d+)/ |
| | 261 | total_lines = covered_lines = 0 |
| 248 | 262 | OBJS.each do |obj| |
| 249 | 263 | bn = obj.pathmap('%n') |
| … |
… |
|
| 256 | 270 | gcov_cmd = "gcov -o .gcov/ #{obj}" |
| 257 | 271 | 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| |
| 259 | 273 | 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 |
| 264 | 285 | end |
| 265 | 286 | |