metric_fu 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.md CHANGED
@@ -1,11 +1,36 @@
1
1
  === master ===
2
2
 
3
- * Add commandline behavior to `metric_fu`. Now there are options -v, -r, and -h
4
- * Clean up global ivars a bit in Configuration
3
+ == MetricFu 3.0.1 / 2013-03-01
4
+
5
+ * Fixed typo in Flay generator (Sathish, pull request #47)
6
+
7
+ === MetricFu 3.0.0 / 2013-02-07
8
+
9
+ Features
10
+ * Included metrics: churn, flay, flog, roodi, saikuro, reek, 'coverage', rails stats, rails_best_practices, hotspots.
11
+ * Works with ruby 1.9 syntax.
12
+ * Can be configured just like metrical, with a .metrics file.
13
+ * Add commandline behavior to `metric_fu`. Try `metric_fu --help`.
14
+ * Does not require rake to run. Can be run directly from the commandline.
15
+ * Is tested to run on rbx-19 and jruby-19 in addition to cruby-19 and cruby-18.
16
+ * churn options include :minimum-churn-count and :start-date, see https://github.com/metricfu/metric_fu/blob/master/lib/metric_fu/metrics/churn/init.rb
17
+ * Installation and running it have less dependency issues.
18
+ * Can either load external coverage metrics (rcov or simplecov) or run rcov directly.
19
+
20
+ Notes:
21
+ * Rcov is not included in the gem, and is off by default.
22
+ * Rails best practices is not available in ruby 1.8.
23
+ * Version 2.1.3.7.18.1 is currently the last version fully compatible with 1.8.
24
+ * Metrical is no longer necessary. Its functionality has been merged into metric_fu.
25
+
26
+ Other work
5
27
  * Re-organized test files - Michael Stark
6
28
  * Rspec2 - Michael Stark
7
- * Unify verbose logging
8
- * Modularize
29
+ * Unify verbose logging with the MF_DEBUG=true commandline flag
30
+ * Begin to isolate each metric code. Each metric configures itself
31
+ * Clean up global ivars a bit in Configuration
32
+ * Thanks to Dan Mayer for helping with churn compatibility
33
+ * Thanks to Timo Rößner and Matijs van Zuijlen for their work on maintaining reek
9
34
 
10
35
  === MetricFu 2.1.3.7.18.1 / 2013-01-09
11
36
 
@@ -66,6 +91,8 @@
66
91
 
67
92
  === MetricFu 2.1.0 / 2011-03-1
68
93
 
94
+ In 2.1.0 there are a lot of bug fixes. There's a verbose mode (config.verbose = true) that's helpful for debugging (from Dan Sinclair), the ability to opt out of TextMate (from Kakutani Shintaro) opening your files (config.darwin_txmt_protocol_no_thanks = true), and super cool annotations on the Hotspots page so you can see your code problems in-line with the file contents (also from Dan Sinclair).
95
+
69
96
  * Flog gemspec version was >= 2.2.0, which was too early and didn't work. Changed to >= 2.3.0 - Chris Griego
70
97
  * RCov generator now uses a regex with begin and end line anchor to avoid splitting on comments with equal signs in source files - Andrew Selder
71
98
  * RCov generator now always strips the 3 leading characters from the lines when reconstruction source files so that heredocs and block comments parse successfully - Andrew Selder
@@ -86,6 +113,12 @@
86
113
 
87
114
  === MetricFu 2.0.0 / 2010-11-10
88
115
 
116
+ In 2.0.0 the big new feature is Hotspots. The Hotspots report combines Flog, Flay, Rcov, Reek, Roodi, and Churn numbers into one report so you see parts of your code that have multiple problems like so:
117
+
118
+ ![Hotspots](http://metric-fu.rubyforge.org/hotspot.gif "That is one terrible method")
119
+
120
+ Big thanks to Dan Mayer and Ben Brinckerhoff for the Hotspots code and for helping me integrate it with RCov.
121
+
89
122
  * Hotspots - Dan Mayer, Ben Brinckerhoff, Jake Scruggs
90
123
  * Rcov integration with Hotspots - Jake Scruggs, Tony Castiglione, Rob Meyer
91
124
 
Binary file
Binary file
Binary file
Binary file
data/home_page/index.html CHANGED
@@ -11,12 +11,12 @@
11
11
  <div id="main">
12
12
  <!-- header begins -->
13
13
  <div id="header">
14
-
14
+
15
15
  <div id="logo"><a href="#">metric_fu</a></div>
16
16
  <div id="buttons">
17
17
  <ul><li>A Ruby Gem for Easy Metric Report Generation</li></ul>
18
18
  </div>
19
-
19
+
20
20
  </div>
21
21
  <!-- header ends -->
22
22
  <!-- content begins -->
@@ -31,16 +31,21 @@
31
31
  Google Group
32
32
  </a>
33
33
  </li>
34
- <li><a href="http://github.com/jscruggs/metric_fu">
34
+ <li><a href="http://github.com/metricfu/metric_fu">
35
35
  SCM
36
36
  </a>
37
37
  </li>
38
- <li><a href="http://github.com/jscruggs/metric_fu/issues">
38
+ <li><a href="http://github.com/metricfu/metric_fu/issues">
39
39
  Issue Tracker
40
40
  </a>
41
41
  </li>
42
+ </li>
43
+ <li><a href="http://benjaminfleischer.com">
44
+ Benjamin Fleischer's page (lead developer)
45
+ </a>
46
+ </li>
42
47
  <li><a href="http://jakescruggs.blogspot.com/">
43
- Jake Scruggs' Blog (lead developer)
48
+ Jake Scruggs' Blog (original lead developer)
44
49
  </a>
45
50
  </li>
46
51
  </ul>
@@ -50,53 +55,23 @@
50
55
  <!-- end #sidebar -->
51
56
  </div>
52
57
  <div id="left">
53
- <h1>About metric_fu 2.1.1</h1>
58
+ <h1>About metric_fu</h1>
54
59
  <div>
55
60
  <p><br/>
56
- Metric_fu is a set of rake tasks that make it easy to generate metrics reports. It uses
57
- <a href="http://saikuro.rubyforge.org/">Saikuro</a>,
58
- <a href="http://ruby.sadi.st/Flog.html">Flog</a>,
59
- <a href="http://ruby.sadi.st/Flay.html">Flay</a>,
60
- <a href="http://eigenclass.org/hiki.rb?rcov">Rcov</a>,
61
- <a href="http://github.com/kevinrutherford/reek">Reek</a>,
62
- <a href="http://github.com/martinjandrews/roodi">Roodi</a>,
63
- <a href="http://github.com/danmayer/churn">Churn</a>,
64
- <a href="http://rubygems.org/gems/rails_best_practices">RailsBestPractices</a>,
65
- <a href="http://subversion.tigris.org/">Subversion</a>,
66
- <a href="http://git.or.cz/">Git</a>, and
67
- <a href="http://www.rubyonrails.org/">Rails</a>
68
- built-in stats task to create a series of reports. It's designed to integrate easily with
69
- <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a>
61
+ Metric_fu is a set of metric tools that make it easy to generate metrics reports. See <a href="https://github.com/metricfu/metric_fu/tree/master/lib/metric_fu/metrics">the list of metrics the gem includes</a>
62
+ It's designed to integrate easily with
63
+ <a href="http://cruisecontrolrb.thoughtworks.com/">CruiseControl.rb</a>
70
64
  by placing files in the Custom Build Artifacts folder.
71
65
  </p>
72
66
  <br/>
73
67
  <p>
74
- In 2.1.0 there are a lot of bug fixes, Check the <a href="http://github.com/jscruggs/metric_fu/blob/master/HISTORY">HISTORY</a> file for complete details. There's a verbose mode (config.verbose = true) that's helpful for debugging (from Dan Sinclair), the ability to opt out of TextMate (from Kakutani Shintaro) opening your files (config.darwin_txmt_protocol_no_thanks = true), and super cool annotations on the Hotspots page so you can see your code problems in-line with the file contents (also from Dan Sinclair).
75
- </p>
76
- <br/>
77
- <p>
78
- In 2.0.0 the big new feature is Hotspots. The Hotspots report combines Flog, Flay, Rcov, Reek, Roodi, and Churn numbers into one report so you see parts of your code that have multiple problems like so:
79
- </p>
80
- <img src="hotspot.gif" width="359">
81
- <p>
82
- That is one terrible method.<br/>
83
- Big thanks to Dan Mayer and Ben Brinckerhoff for the Hotspots code and for helping me integrate it with RCov.
84
- </p>
85
- <br/>
68
+ <h2>For up to date information</h2>
69
+ For the most frequently updated project information see the <a href="https://github.com/metricfu/metric_fu">github project page</a> or follow the gem on <a href="https://rubygems.org/gems/metric_fu">rubygems.org</a>. This page is no longer up to date.
86
70
 
87
- <p>
88
- In 1.5.0 I re-wrote the Flog parsing engine to use Flog programmatically instead of parsing the command line output. This will hopefully stop minor changes in Flog's output from breaking metric_fu.
71
+ See the <a href="https://github.com/metricfu/metric_fu/blob/master/HISTORY.md">Change log</a>
89
72
  </p>
90
-
91
- <h2>Installation:</h2>
92
- <pre>gem install metric_fu</pre>
93
- <br/>
94
- <p>Then in your Rakefile:</p>
95
- <br/>
96
- <pre>require 'metric_fu'</pre>
97
- <br/>
98
-
99
- <h2>Output:</h2>
73
+ <br>
74
+ <h2>Example Output:</h2>
100
75
  <table>
101
76
  <tr>
102
77
  <td><a href="flog.gif"><img src="flog.gif" width="250"></a></td>
@@ -114,175 +89,33 @@ Big thanks to Dan Mayer and Ben Brinckerhoff for the Hotspots code and for helpi
114
89
  <td><a href="stats.gif"><img src="stats.gif" width="250"></a></td>
115
90
  </tr>
116
91
  </table>
117
- <p><br/>
118
- <h2>Usage:</h2>
119
- Out of the box metric_fu provides this tasks:
120
- <ul>
121
- <li>rake metrics:all # Generate coverage, cyclomatic complexity, flog, flay, reek, roodi, stats... </li>
122
- </ul>
123
- <br/>
124
- I recommend using CruiseControl.rb to set up a metrics build. See the CruiseControl.rb online docs for more info on how to set up cc.rb and, once you've got that figured out, change the cruise_config.rb file inside your project to have these lines:
125
- <br/><br/>
126
- <pre>project.rake_task = 'metrics:all'</pre>
127
- <pre>project.scheduler.polling_interval = 24.hours</pre>
128
- <br/>
129
- Which will check for updates every 24 hours and run all the metric_fu rake tasks (migrating your test db first). The output will be visible from an individual build's detail page.
130
- </p>
131
- <br/>
132
-
133
- <h2>Configuration:</h2>
134
- <p>The definitive source for configuration is, of course, the source: <a href="http://github.com/jscruggs/metric_fu/blob/master/lib/base/configuration.rb#L99">lib/base/configuration.rb</a>
135
- <p>Metric_fu can be customized to your liking by altering the defaults in your Rakefile:</p>
136
- <pre>
137
- MetricFu::Configuration.run do |config|
138
- #define which metrics you want to use
139
- config.metrics = [:churn, :saikuro, :stats, :flog, :flay]
140
- config.graphs = [:flog, :flay, :stats]
141
- # ...
142
- end
143
- </pre>
144
- Note: if you don't want one of the metrics to run (like rcov), make sure you don't try to graph it (which will explode). Set config.graphs to exactly the graphs you want. Set config.graphs to an empty array (config.graphs = []) if you want no graphing at all.
145
- </p>
146
92
 
147
- <p><br/>
148
- <h2>Graphing</h2>
149
- MetricFu uses Bluff for graphing (a Javascript library) by default. If you'd rather use Google Charts you can set 'config.graph_engine = :gchart' in the config. You'll have to install the googlecharts gem, of course.
150
- </p>
151
-
152
- <p><br/>
153
- <h2>Notes on Rails 3</h2>
154
- If you use RSpec, you'll need to add this to one of your rake files:
155
- <pre>
156
- require 'metric_fu'
157
- MetricFu::Configuration.run do |config|
158
- config.rcov[:test_files] = ['spec/**/*_spec.rb']
159
- config.rcov[:rcov_opts] &lt;&lt; "-Ispec" # Needed to find spec_helper
160
- end
161
- </pre>
162
- If you're using default Rails testing, then you can do this:
163
- <pre>
164
- require 'metric_fu'
165
- MetricFu::Configuration.run do |config|
166
- config.rcov[:rcov_opts] &lt;&lt; "-Itest" # Needed to find test_helper
167
- end
168
- </pre>
169
93
  <br/>
170
-
171
- <p><br/>
172
- <h2>Notes on metrics:coverage</h2>
173
- When creating a coverage report, metric_fu runs all the tests in the test folder and specs in spec folder using Rcov. You can configure what files it should run and the RAILS_ENV (by setting 'environment') it runs under. Default config for rcov:
174
- <pre>
175
- config.rcov = { :environment => 'test',
176
- :test_files => ['test/**/*_test.rb',
177
- 'spec/**/*_spec.rb'],
178
- :rcov_opts => ["--sort coverage",
179
- "--no-html",
180
- "--text-coverage",
181
- "--no-color",
182
- "--profile",
183
- "--rails",
184
- "--exclude /gems/,/Library/,/usr/,spec"],
185
- :external => nil
186
- }
187
- </pre>
188
- By far, Rcov is the most troublesome report in metric_fu. This is not because of Rcov itself, but because the Rcov report has to actually execute your tests and test suites can be very tricky things. MetricFu naively shells out to the command line, runs rcov on your tests/specs, and captures the output. This does not always work well. If you are having problems with metric_fu, try turning off Rcov (see the above Configuration section).
189
- </p>
190
- <p><br/>
191
- <h2>Notes on metrics:saikuro</h2>
192
- Saikuro measures cyclomatic complexity for Ruby. Default config for Saikuro:
193
- <pre>
194
- config.saikuro = { :output_directory => 'tmp/metirc_fu/saikuro',
195
- :input_directory => ['app', 'lib'],
196
- :cyclo => "",
197
- :filter_cyclo => "0",
198
- :warn_cyclo => "5",
199
- :error_cyclo => "7",
200
- :formater => "text"}
201
- </pre>
202
- <br/><br/>
203
- </p>
204
- <p><br/>
205
- <h2>Notes on metrics:flay</h2>
206
- Flay analyzes ruby code for structural similarities.
207
- You can configure which directories need to be flayed.
208
- The defaults are 'lib' for non Rails projects and ['app', 'lib'] for Rails projects.
209
- By default, metric_fu ignores scores under 100. You can configure the minimum_score. Default config for Flay:
210
- <pre>
211
- config.flay ={:dirs_to_flay => ['app', 'lib'],
212
- :minimum_score => 100,
213
- :filetypes => ['rb'] }
214
- </pre>
215
- </p>
216
-
217
- <p><br/>
218
- <h2>Notes on metrics:flog</h2>
219
- <br/>
220
- Flog is another way of measuring complexity (or tortured code as the Flog authors like to put it). You should check out the awesome, and a little scary, <a href="http://ruby.sadi.st/Flog.html">Flog website</a> for more info. Default config for Flog:
221
- <pre>
222
- config.flog = { :dirs_to_flog => ['app', 'lib'] }
223
- </pre>
224
- </p>
225
- <p><br/>
226
- <h2>Notes on metrics:reek</h2>
227
- Reek detects common code smells in ruby code.
228
- You can configure which directories need to be checked.
229
- The defaults are 'lib' for non Rails projects and ['app', 'lib'] for Rails projects. Default config for Reek:
230
- <pre>
231
- config.reek = { :dirs_to_reek => ['app', 'lib'] }
232
- </pre>
233
- </p>
234
-
94
+ <p>Metric_fu began its life as a plugin for Rails that generated code metrics reports. As of version 0.7.0, metric_fu is a gem (owing to the excellent work done by Sean Soper) and is hosted on GitHub at <a href="http://github.com/metricfu/metric_fu">http://github.com/metricfu/metric_fu</a>. </p>
235
95
  <p><br/>
236
- <h2>Notes on metrics:roodi</h2>
237
- Roodi parses your Ruby code and warns you about design issues you have based on the checks that is has configured.
238
- You can configure which directories need to be checked.
239
- The defaults are 'lib' for non Rails projects and ['app', 'lib'] for Rails projects. Default config for Roodi:
240
- <pre>
241
- config.roodi = { :dirs_to_roodi => ['app', 'lib'] }
242
- </pre>
243
- </p>
244
- <p><br/>
245
- <h2>Notes on metrics:rails_best_practices</h2>
246
- Rails Best Practices checks your rails files for violations of... Well the name says it all. The gem was inspired by ihower's presentation <a href="http://www.slideshare.net/ihower/rails-best-practices">Rails Best Practices</a>
247
- </p>
248
- <p><br/>
249
- <h2>Notes on metrics:stats</h2>
250
- This is just 'rake stats' put into a file. On my projects I like to be able to look at CruiseControl and get stats about the app at different points in time.
251
- </p>
252
- <p><br/>
253
- <h2>Notes on metrics:churn</h2>
254
- Files that change a lot in your project may be bad a sign. This task uses svn or git's log to identify those files and put them in a report.
255
- <br/>
256
- <br/>
257
- </p>
258
-
259
-
260
- <br/>
261
- <p>Metric_fu began its life as a plugin for Rails that generated code metrics reports. As of version 0.7.0, metric_fu is a gem (owing to the excellent work done by Sean Soper) and is hosted on GitHub at <a href="http://github.com/jscruggs/metric_fu">http://github.com/jscruggs/metric_fu</a>. </p>
262
- <p><br/>
263
96
  <h2>Questions?</h2>
264
97
  <p>Use the Google Group: <a href="http://groups.google.com/group/metric_fu">http://groups.google.com/group/metric_fu</a></p>
265
98
  <br/>
266
99
  <h2>Thanks</h2>
267
- I'd like to thank the authors of Saikuro, Subversion, Flog, Rcov, CruiseControl.rb, and Rails for creating such excellent open source products. Also many thanks go to
268
- <a href="http://arko.net/">Andre Arko</a>,
269
- <a href="http://deheus.net/petrik">Petrik de Heus</a>,
270
- <a href="http://seansoper.com/">Sean Soper</a>,
271
- <a href="http://www.perilled.com/">Erik St Martin</a>,
272
- <a href="http://gregorowicz.blogspot.com/">Andy Gregorowicz</a>,
273
- <a href="http://github.com/bastien/">Bastien</a>,
274
- <a href="http://schubert.cx/">Michael Schubert</a>,
275
- <a href="http://kseebaldt.blogspot.com/">Kurtis Seebaldt</a>,
276
- <a href="http://www.workingwithrails.com/person/11263-toby-tripp">Toby Tripp</a>,
277
- <a href="http://www.aliaghareza.com">Ali Aghareza</a>,
278
- <a href="http://www.pgrs.net/">Paul Gross</a>, and
279
- <a href="http://chirdeepshetty.net/">Chirdeep Shetty</a>
100
+ I'd like to thank the authors of Saikuro, Subversion, Flog, Rcov, CruiseControl.rb, and Rails for creating such excellent open source products. Also many thanks go to
101
+ <a href="http://arko.net/">Andre Arko</a>,
102
+ <a href="http://deheus.net/petrik">Petrik de Heus</a>,
103
+ <a href="http://seansoper.com/">Sean Soper</a>,
104
+ <a href="http://www.perilled.com/">Erik St Martin</a>,
105
+ <a href="http://gregorowicz.blogspot.com/">Andy Gregorowicz</a>,
106
+ <a href="http://github.com/bastien/">Bastien</a>,
107
+ <a href="http://schubert.cx/">Michael Schubert</a>,
108
+ <a href="http://kseebaldt.blogspot.com/">Kurtis Seebaldt</a>,
109
+ <a href="http://www.workingwithrails.com/person/11263-toby-tripp">Toby Tripp</a>,
110
+ <a href="http://www.aliaghareza.com">Ali Aghareza</a>,
111
+ <a href="http://www.pgrs.net/">Paul Gross</a>, and
112
+ <a href="http://chirdeepshetty.net/">Chirdeep Shetty</a>
280
113
  for their contributions to metric_fu.
281
114
  </p>
282
115
  </div>
283
116
 
284
- </div>
285
-
117
+ </div>
118
+
286
119
  </div>
287
120
  </div>
288
121
  <!-- content ends -->
data/home_page/reek.gif CHANGED
Binary file
@@ -0,0 +1,5 @@
1
+ User-agent: *
2
+ Disallow: /softwaremap/ # This is an infinite virtual URL space
3
+ Disallow: /statcvs/ # This is an infinite virtual URL space
4
+ Disallow: /usage/ # This is an infinite virtual URL space
5
+ Disallow: /wiki/ # This is an infinite virtual URL space
data/home_page/roodi.gif CHANGED
Binary file
data/home_page/stats.gif CHANGED
Binary file
@@ -5,9 +5,9 @@ module MetricFu
5
5
  class Flay < Generator
6
6
 
7
7
  def emit
8
- mimimum_score_parameter = MetricFu.flay[:minimum_score] ? "--mass #{MetricFu.flay[:minimum_score]} " : ""
8
+ minimum_score_parameter = MetricFu.flay[:minimum_score] ? "--mass #{MetricFu.flay[:minimum_score]} " : ""
9
9
 
10
- command = %Q(mf-flay #{mimimum_score_parameter} #{MetricFu.flay[:dirs_to_flay].join(" ")})
10
+ command = %Q(mf-flay #{minimum_score_parameter} #{MetricFu.flay[:dirs_to_flay].join(" ")})
11
11
  mf_debug "** #{command}"
12
12
  @output = `#{command}`
13
13
  end
@@ -1,3 +1,3 @@
1
1
  module MetricFu
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -19,7 +19,7 @@ authors:
19
19
  autorequire:
20
20
  bindir: bin
21
21
  cert_chain: []
22
- date: 2013-02-07 00:00:00.000000000 Z
22
+ date: 2013-03-01 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: rails_best_practices
@@ -334,9 +334,13 @@ files:
334
334
  - bin/mf-stats
335
335
  - config/roodi_config.yml
336
336
  - home_page/back_all.jpg
337
+ - home_page/cc.rb.gif
337
338
  - home_page/churn.gif
339
+ - home_page/cruise_control_1.gif
340
+ - home_page/cyclomatic.gif
338
341
  - home_page/flay.gif
339
342
  - home_page/flog.gif
343
+ - home_page/flog2.gif
340
344
  - home_page/footer.gif
341
345
  - home_page/header.jpg
342
346
  - home_page/hotspot.gif
@@ -344,6 +348,7 @@ files:
344
348
  - home_page/index.html
345
349
  - home_page/rcov.gif
346
350
  - home_page/reek.gif
351
+ - home_page/robots.txt
347
352
  - home_page/roodi.gif
348
353
  - home_page/saikuro.gif
349
354
  - home_page/stats.gif
@@ -516,7 +521,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
516
521
  version: 1.3.6
517
522
  requirements: []
518
523
  rubyforge_project: metric_fu
519
- rubygems_version: 1.8.24
524
+ rubygems_version: 1.8.25
520
525
  signing_key:
521
526
  specification_version: 3
522
527
  summary: A fistful of code metrics, with awesome templates and graphs