edouard-metric_fu 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/README +1 -1
  2. data/Rakefile +4 -4
  3. data/spec/base/configuration_spec.rb +1 -1
  4. data/spec/base/generator_spec.rb +0 -22
  5. data/spec/generators/churn_spec.rb +7 -7
  6. data/spec/generators/flay_spec.rb +0 -3
  7. data/spec/generators/flog_spec.rb +1 -9
  8. data/spec/generators/reek_spec.rb +0 -1
  9. data/spec/generators/saikuro_spec.rb +11 -21
  10. metadata +18 -56
  11. data/lib/base/base_template.rb +0 -134
  12. data/lib/base/configuration.rb +0 -207
  13. data/lib/base/generator.rb +0 -160
  14. data/lib/base/graph.rb +0 -37
  15. data/lib/base/md5_tracker.rb +0 -52
  16. data/lib/base/report.rb +0 -100
  17. data/lib/generators/churn.rb +0 -91
  18. data/lib/generators/flay.rb +0 -34
  19. data/lib/generators/flog.rb +0 -133
  20. data/lib/generators/rcov.rb +0 -87
  21. data/lib/generators/reek.rb +0 -37
  22. data/lib/generators/roodi.rb +0 -31
  23. data/lib/generators/saikuro.rb +0 -209
  24. data/lib/generators/stats.rb +0 -43
  25. data/lib/graphs/flay_grapher.rb +0 -34
  26. data/lib/graphs/flog_grapher.rb +0 -37
  27. data/lib/graphs/rcov_grapher.rb +0 -34
  28. data/lib/graphs/reek_grapher.rb +0 -44
  29. data/lib/graphs/roodi_grapher.rb +0 -34
  30. data/lib/metric_fu.rb +0 -24
  31. data/lib/templates/awesome/awesome_template.rb +0 -30
  32. data/lib/templates/awesome/churn.html.erb +0 -19
  33. data/lib/templates/awesome/default.css +0 -66
  34. data/lib/templates/awesome/flay.html.erb +0 -27
  35. data/lib/templates/awesome/flog.html.erb +0 -46
  36. data/lib/templates/awesome/index.html.erb +0 -28
  37. data/lib/templates/awesome/layout.html.erb +0 -27
  38. data/lib/templates/awesome/rcov.html.erb +0 -36
  39. data/lib/templates/awesome/reek.html.erb +0 -34
  40. data/lib/templates/awesome/roodi.html.erb +0 -21
  41. data/lib/templates/awesome/saikuro.html.erb +0 -71
  42. data/lib/templates/awesome/stats.html.erb +0 -41
  43. data/lib/templates/standard/churn.html.erb +0 -31
  44. data/lib/templates/standard/default.css +0 -64
  45. data/lib/templates/standard/flay.html.erb +0 -34
  46. data/lib/templates/standard/flog.html.erb +0 -53
  47. data/lib/templates/standard/index.html.erb +0 -38
  48. data/lib/templates/standard/rcov.html.erb +0 -43
  49. data/lib/templates/standard/reek.html.erb +0 -42
  50. data/lib/templates/standard/roodi.html.erb +0 -29
  51. data/lib/templates/standard/saikuro.html.erb +0 -84
  52. data/lib/templates/standard/standard_template.rb +0 -26
  53. data/lib/templates/standard/stats.html.erb +0 -55
  54. data/tasks/metric_fu.rake +0 -19
  55. data/tasks/railroad.rake +0 -39
  56. data/vendor/_fonts/monaco.ttf +0 -0
  57. data/vendor/saikuro/saikuro.rb +0 -1214
@@ -1,34 +0,0 @@
1
- require 'gruff'
2
- module MetricFu
3
-
4
- class RoodiGrapher
5
-
6
- attr_accessor :roodi_count, :labels
7
-
8
- def initialize
9
- self.roodi_count = []
10
- self.labels = {}
11
- end
12
-
13
- def get_metrics(metrics, date)
14
- self.roodi_count.push(metrics[:roodi][:problems].size)
15
- self.labels.update( { self.labels.size => date })
16
- end
17
-
18
- def graph!
19
- g = Gruff::Line.new(MetricFu.graph_size)
20
- g.title = "Roodi: design problems"
21
- g.theme = MetricFu.graph_theme
22
- g.font = MetricFu.graph_font
23
- g.data('roodi', self.roodi_count)
24
- g.labels = self.labels
25
- g.title_font_size = MetricFu.graph_title_font_size
26
- g.legend_box_size = MetricFu.graph_legend_box_size
27
- g.legend_font_size = MetricFu.graph_legend_font_size
28
- g.marker_font_size = MetricFu.graph_marker_font_size
29
- g.write(File.join(MetricFu.output_directory, 'roodi.png'))
30
- end
31
-
32
- end
33
-
34
- end
data/lib/metric_fu.rb DELETED
@@ -1,24 +0,0 @@
1
- # Load a few things to make our lives easier elsewhere.
2
- module MetricFu
3
- LIB_ROOT = File.dirname(__FILE__)
4
- end
5
- base_dir = File.join(MetricFu::LIB_ROOT, 'base')
6
- generator_dir = File.join(MetricFu::LIB_ROOT, 'generators')
7
- template_dir = File.join(MetricFu::LIB_ROOT, 'templates')
8
- graph_dir = File.join(MetricFu::LIB_ROOT, 'graphs')
9
-
10
- # We need to require these two things first because our other classes
11
- # depend on them.
12
- require File.join(base_dir, 'report')
13
- require File.join(base_dir, 'generator')
14
- require File.join(base_dir, 'graph')
15
-
16
- # Load the rakefile so users of the gem get the default metric_fu task
17
- load File.join(MetricFu::LIB_ROOT, '..', 'tasks', 'metric_fu.rake')
18
-
19
- # Now load everything else that's in the directory
20
- Dir[File.join(base_dir, '*.rb')].each{|l| require l }
21
- Dir[File.join(generator_dir, '*.rb')].each {|l| require l }
22
- Dir[File.join(template_dir, 'standard/*.rb')].each {|l| require l}
23
- Dir[File.join(template_dir, 'awesome/*.rb')].each {|l| require l}
24
- Dir[File.join(graph_dir, '*.rb')].each {|l| require l}
@@ -1,30 +0,0 @@
1
- class AwesomeTemplate < MetricFu::Template
2
-
3
- def write
4
- # Getting rid of the crap before and after the project name from integrity
5
- @name = File.basename(Dir.pwd).gsub(/^\w+-|-\w+$/, "")
6
-
7
- report.each_pair do |section, contents|
8
- if template_exists?(section)
9
- create_instance_var(section, contents)
10
- @html = erbify(section)
11
- html = erbify('layout')
12
- fn = output_filename(section)
13
- MetricFu.report.save_output(html, MetricFu.output_directory, fn)
14
- end
15
- end
16
-
17
- # Instance variables we need should already be created from above
18
- if template_exists?('index')
19
- @html = erbify('index')
20
- html = erbify('layout')
21
- fn = output_filename('index')
22
- MetricFu.report.save_output(html, MetricFu.output_directory, fn)
23
- end
24
- end
25
-
26
- def this_directory
27
- File.dirname(__FILE__)
28
- end
29
- end
30
-
@@ -1,19 +0,0 @@
1
- <h3>Source Control Churn Results</h3>
2
- <p>Files that change a lot in your project may be bad a sign.
3
- This task uses your source control log to identify those files.
4
- </p>
5
- <table>
6
- <tr>
7
- <th>File Path</th>
8
- <th>Times Changed</th>
9
- </tr>
10
- <% count = 0 %>
11
- <% @churn[:changes].each do |change| %>
12
- <tr>
13
- <td><%= change[:file_path] %></td>
14
- <td><%= change[:times_changed] %></td>
15
- </tr>
16
- <% count += 1 %>
17
- <% end %>
18
- </table>
19
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,66 +0,0 @@
1
- table {
2
- margin-top: 20px;
3
- border-collapse: collapse;
4
- border: 1px solid #666;
5
- background: #fff;
6
- margin-bottom: 20px;
7
- }
8
-
9
- table tr.light {
10
- background: #fff;
11
- }
12
-
13
- table tr.dark {
14
- background: #f9f9f9;
15
- }
16
-
17
- table tr:hover {
18
- background: #FFFFC0;
19
- }
20
-
21
- table td, table th {
22
- padding: 4px;
23
- font-size: 11px;
24
- }
25
- table th {
26
- text-align: center;
27
- color: #337022;
28
- background: #DDFFCC;
29
- font-weight: bold;
30
- border: #99D688 1px solid;
31
- }
32
-
33
- table td {
34
- border: #d0d0d0 1px solid;
35
- }
36
-
37
- table td.score {
38
- text-align: right;
39
- }
40
-
41
- .warning {
42
- background: yellow;
43
- }
44
- .rcov_code td {
45
- border-bottom: 1px solid #ddd ;
46
- padding: 0;
47
- margin: 0;
48
- }
49
- .rcov_code tr {
50
- border: 0px;
51
- padding:0px;
52
- margin: 0px;
53
- }
54
- .rcov_code pre {
55
- border: 0px;
56
- padding: 0px;
57
- margin: 0px;
58
- }
59
- .rcov_run {}
60
- .rcov_not_run {
61
- background-color: #d88;
62
- }
63
- .rcov_overflow {
64
- overflow: auto;
65
- font-size: 50%;
66
- }
@@ -1,27 +0,0 @@
1
- <h3>Flay Results</h3>
2
-
3
- <p><a href='http://ruby.sadi.st/Flay.html'>Flay</a> analyzes ruby code for structural similarities.</p>
4
-
5
- <img src="flay.png?<%= Time.now %>">
6
-
7
- <h4>Total Score (lower is better): <%= @flay[:total_score] %></h4>
8
-
9
- <table>
10
- <tr>
11
- <th>Files</th>
12
- <th>Matches</th>
13
- </tr>
14
- <% count = 0 %>
15
- <% @flay[:matches].each do |match| %>
16
- <tr class='<%= cycle("light", "dark", count) %>'>
17
- <td>
18
- <% match[:matches].each do |file| %>
19
- <%= file[:name] %>:<%= file[:line] %><br />
20
- <% end %>
21
- </td>
22
- <td><%= match[:reason] %></td>
23
- </tr>
24
- <% count += 1 %>
25
- <% end %>
26
- </table>
27
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,46 +0,0 @@
1
- <h3>Flog Results</h3>
2
- <p><a href='http://ruby.sadi.st/Flog.html'>Flog</a> measures code complexity.</p>
3
-
4
- <img src="flog.png?<%= Time.now %>">
5
-
6
- <h2>Total Flog score for all methods: <%= @flog[:total]%></h2>
7
- <h2>Average Flog score for all methods: <%= @flog[:average]%></h2>
8
-
9
- <table>
10
- <tr>
11
- <th>File</th>
12
- <th>Total score</th>
13
- <th>Methods</th>
14
- <th>Average score</th>
15
- <th>Highest score</th>
16
- </tr>
17
- <% @flog[:pages].each do |page| %>
18
- <tr>
19
- <td><a href="#<%= page[:path].gsub(/[^a-z]+/, '_') %>"><%= page[:path] %></a></td>
20
- <td><%= page[:score].round %></td>
21
- <td><%= page[:scanned_methods].length %></td>
22
- <td><%= page[:average_score].round %></td>
23
- <td><%= page[:highest_score].round %></td>
24
- </tr>
25
- <% end %>
26
- </table>
27
-
28
- <% @flog[:pages].each do |page| %>
29
- <h2 id="<%= page[:path].gsub(/[^a-z]+/, '_') %>"><%= page[:path] %></h2>
30
- <% page[:scanned_methods].each do |sm| %>
31
- <p><%= sm[:name] %></p>
32
- <table>
33
- <tr>
34
- <th>Score</th>
35
- <th>Operator</th>
36
- </tr>
37
- <% sm[:operators].each do |operator| %>
38
- <tr>
39
- <td><%= operator[:score] %></td>
40
- <td><%= operator[:operator] %></td>
41
- </tr>
42
- <% end %>
43
- </table>
44
- <% end %>
45
- <% end %>
46
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,28 +0,0 @@
1
- <h3>Metric Fu Results</h3>
2
- <ul id='projects'>
3
- <% if @churn %>
4
- <li class='even failure'><a href="churn.html">Churn</a></li>
5
- <% end %>
6
- <% if @flay %>
7
- <li class='even failure'><a href="flay.html">Flay</a></li>
8
- <% end %>
9
- <% if @flog %>
10
- <li class='even failure'><a href="flog.html">Flog</a></li>
11
- <% end %>
12
- <% if @rcov %>
13
- <li class='even failure'><a href="rcov.html">Rcov</a></li>
14
- <% end %>
15
- <% if @reek %>
16
- <li class='even failure'><a href="reek.html">Reek</a></li>
17
- <% end %>
18
- <% if @roodi %>
19
- <li class='even failure'><a href="roodi.html">Roodi</a></li>
20
- <% end %>
21
- <% if @saikuro %>
22
- <li class='even failure'><a href="saikuro.html">Saikuro</a></li>
23
- <% end %>
24
- <% if @stats %>
25
- <li class='even failure'><a href="stats.html">Stats</a></li>
26
- <% end %>
27
- </ul>
28
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,27 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
3
- <head>
4
- <meta content='text/html; charset=utf-8' http-equiv='Content-Type' />
5
- <meta content='en' http-equiv='Content-Language' />
6
- <title>metrics</title>
7
- <link href='/reset.css' rel='stylesheet' type='text/css' />
8
- <link href='/buttons.css' rel='stylesheet' type='text/css' />
9
- <link href='/integrity.css' rel='stylesheet' type='text/css' />
10
- <style>
11
- <%= inline_css("default.css") %>
12
- </style>
13
- <link REL="SHORTCUT ICON" HREF="/favicon.ico">
14
- </head>
15
- <body>
16
- <div id='header'>
17
- <h1><a href="/">metrics</a> | <a href="index.html"><%= @name %></a></h1>
18
- <address class='watermark'>
19
- built with
20
- <a href='http://metric-fu.rubyforge.org/'>metric-fu</a>
21
- </address>
22
- </div>
23
- <div id='content'>
24
- <%= @html %>
25
- </div>
26
- </body>
27
- </html>
@@ -1,36 +0,0 @@
1
- <h3>Rcov Code Coverage Results</h3>
2
-
3
- <p>C0 code coverage information.</p>
4
-
5
- <img src="rcov.png?<%= Time.now %>">
6
-
7
- <p>Total Coverage: <%= @rcov.delete(:global_percent_run) %>% </p>
8
- <table>
9
- <tr>
10
- <th>File Path</th>
11
- <th>Percent run</th>
12
- </tr>
13
- <% count = 0 %>
14
- <% @rcov.sort_by{ |k,v| v[:percent_run] }.each do |fname, file| %>
15
- <tr>
16
- <td><a href="#<%= fname.gsub(/[^a-z]+/, '_') %>"><%= fname %></a></td>
17
- <td><%= file[:percent_run] %></td>
18
- </tr>
19
- <% count += 1 %>
20
- <% end %>
21
- </table>
22
-
23
- <% @rcov.sort_by{ |k,v| v[:percent_run] }.each do |fname, file| %>
24
- <h2 id="<%= fname.gsub(/[^a-z]+/, '_') %>"> <%= fname %></h2>
25
- <div class="rcov_overflow">
26
- <table class="rcov_code">
27
- <% file[:lines].each do |line| %>
28
- <tr>
29
- <% css_class = line[:was_run] ? "rcov_run" : "rcov_not_run" %>
30
- <td class="<%= css_class %>"><pre><%= line[:content] %></pre></td>
31
- </tr>
32
- <% end %>
33
- </table>
34
- </div>
35
- <% end %>
36
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,34 +0,0 @@
1
- <h3>Reek Results</h3>
2
-
3
- <p><a href="http://reek.rubyforge.org/">Reek</a> detects common code smells in ruby code.</p>
4
-
5
- <img src="reek.png?<%= Time.now %>">
6
-
7
- <table>
8
- <tr>
9
- <th>File Path</th>
10
- <th>Method</th>
11
- <th>Description</th>
12
- <th>Type</th>
13
- </tr>
14
- <% count = 0 %>
15
- <% @reek[:matches].each do |match| %>
16
- <% match[:code_smells].each do |smell| %>
17
- <tr class='<%= cycle("light", "dark", count) %>'>
18
- <td><%= match[:file_path] %></td>
19
- <td>
20
- <%= smell[:method] %>
21
- </td>
22
- <td>
23
- <%= smell[:message] %>
24
- </td>
25
- <td>
26
- <%= smell[:type] %>
27
- </td>
28
- </tr>
29
- <% count += 1 %>
30
- <% end %>
31
- <% end %>
32
-
33
- </table>
34
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,21 +0,0 @@
1
- <h3>Roodi Results</h3>
2
-
3
- <p><a href="http://roodi.rubyforge.org/">Roodi</a> parses your Ruby code and warns you about design issues you have based on the checks that is has configured.</p>
4
-
5
- <img src="roodi.png?<%= Time.now %>">
6
-
7
- <table>
8
- <tr>
9
- <th>File Path</th>
10
- <th>Warning</th>
11
- </tr>
12
- <% count = 0 %>
13
- <% @roodi[:problems].each do |problem| %>
14
- <tr class='<%= cycle("light", "dark", count) %>'>
15
- <td><%= problem[:file] %>:<%= problem[:line] %></td>
16
- <td><%= problem[:problem] %></td>
17
- </tr>
18
- <% count += 1 %>
19
- <% end %>
20
- </table>
21
- <p>Generated on <%= Time.now.localtime %></p>
@@ -1,71 +0,0 @@
1
- <h3>Saikuro Results</h3>
2
- <p><a href='http://saikuro.rubyforge.org/'>Saikuro</a> analyzes ruby code for cyclomatic complexity.</p>
3
-
4
- <h2>Analyzed Methods</h2>
5
- <table>
6
- <tr>
7
- <th>Method Name</th>
8
- <th>Complexity</th>
9
- <th># Lines</th>
10
- </tr>
11
- <% @saikuro[:methods].each do |method| %>
12
- <tr>
13
- <td><%= method[:name] %></td>
14
- <td><%= method[:complexity] %></td>
15
- <td><%= method[:lines] %></td>
16
- </tr>
17
- <% end %>
18
- </table>
19
-
20
-
21
-
22
- <h2>Analyzed Classes</h2>
23
- <table>
24
- <tr>
25
- <th>Class Name</th>
26
- <th>Complexity</th>
27
- <th># Lines</th>
28
- </tr>
29
- <% @saikuro[:classes].each do |klass| %>
30
- <tr>
31
- <td><%= klass[:name] %></td>
32
- <td><%= klass[:complexity] %></td>
33
- <td><%= klass[:lines] %></td>
34
- </tr>
35
- <% end %>
36
- </table>
37
-
38
-
39
- <h2>Analyzed Files</h2>
40
- <% @saikuro[:files].each do |file| %>
41
- <% file[:classes].each do |klass| %>
42
- <% if !klass[:methods].empty? %>
43
- <h3><%= file[:filename] %></h3>
44
- <h4>Class : <%= klass[:class_name] %></h4>
45
- <h5>Total complexity : <%= klass[:complexity] %></h5>
46
- <h5>Total lines : <%= klass[:lines] %></h5>
47
- <table>
48
- <tr>
49
- <th>Method</th>
50
- <th>Complexity</th>
51
- <th># Lines</th>
52
- </tr>
53
- <% klass[:methods].each do |method| %>
54
- <tr>
55
- <td>
56
- <%= method[:name] %>
57
- </td>
58
- <td>
59
- <%= method[:complexity] %>
60
- </td>
61
- <td>
62
- <%= method[:lines] %>
63
- </td>
64
- </tr>
65
- <% end %>
66
- </table>
67
- <% end %>
68
- <% end %>
69
- <% end %>
70
-
71
- <p>Generated on <%= Time.now.localtime %></p>