metric_fu 1.5.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. data/HISTORY +5 -0
  2. data/MIT-LICENSE +1 -1
  3. data/README +8 -6
  4. data/Rakefile +5 -3
  5. data/TODO +0 -5
  6. data/lib/base/base_template.rb +16 -0
  7. data/lib/base/churn_analyzer.rb +52 -0
  8. data/lib/base/code_issue.rb +97 -0
  9. data/lib/base/configuration.rb +4 -2
  10. data/lib/base/flay_analyzer.rb +50 -0
  11. data/lib/base/flog_analyzer.rb +43 -0
  12. data/lib/base/line_numbers.rb +65 -0
  13. data/lib/base/location.rb +83 -0
  14. data/lib/base/metric_analyzer.rb +404 -0
  15. data/lib/base/ranking.rb +33 -0
  16. data/lib/base/rcov_analyzer.rb +43 -0
  17. data/lib/base/reek_analyzer.rb +114 -0
  18. data/lib/base/roodi_analyzer.rb +37 -0
  19. data/lib/base/saikuro_analyzer.rb +48 -0
  20. data/lib/base/scoring_strategies.rb +29 -0
  21. data/lib/base/stats_analyzer.rb +37 -0
  22. data/lib/base/table.rb +102 -0
  23. data/lib/generators/hotspots.rb +52 -0
  24. data/lib/generators/rcov.rb +41 -0
  25. data/lib/metric_fu.rb +5 -3
  26. data/lib/templates/awesome/hotspots.html.erb +54 -0
  27. data/lib/templates/awesome/index.html.erb +3 -0
  28. data/lib/templates/standard/hotspots.html.erb +54 -0
  29. data/spec/base/line_numbers_spec.rb +62 -0
  30. data/spec/generators/rails_best_practices_spec.rb +52 -0
  31. data/spec/generators/rcov_spec.rb +180 -0
  32. data/spec/generators/roodi_spec.rb +24 -0
  33. data/spec/graphs/rails_best_practices_grapher_spec.rb +61 -0
  34. data/spec/graphs/stats_grapher_spec.rb +68 -0
  35. data/spec/resources/line_numbers/foo.rb +33 -0
  36. data/spec/resources/line_numbers/module.rb +11 -0
  37. data/spec/resources/line_numbers/module_surrounds_class.rb +15 -0
  38. data/spec/resources/line_numbers/two_classes.rb +11 -0
  39. data/spec/resources/yml/metric_missing.yml +1 -0
  40. metadata +51 -11
@@ -0,0 +1,24 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Roodi do
4
+ describe "emit" do
5
+ it "should add config options when present" do
6
+ MetricFu::Configuration.run do |config|
7
+ config.roodi = {:roodi_config => 'lib/config/roodi_config.yml', :dirs_to_roodi => []}
8
+ end
9
+ roodi = MetricFu::Roodi.new
10
+ roodi.should_receive(:`).with(/-config=lib\/config\/roodi_config\.yml/).and_return("")
11
+ roodi.emit
12
+ end
13
+
14
+ it "should NOT add config options when NOT present" do
15
+ MetricFu::Configuration.run do |config|
16
+ config.roodi = {:dirs_to_roodi => []}
17
+ end
18
+ roodi = MetricFu::Roodi.new
19
+ roodi.stub(:`)
20
+ roodi.should_receive(:`).with(/-config/).never
21
+ roodi.emit
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe RailsBestPracticesGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::RailsBestPracticesGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to rails_best_practices_count and labels" do
10
+ @stats_grapher.should respond_to(:rails_best_practices_count)
11
+ @stats_grapher.should respond_to(:labels)
12
+ end
13
+
14
+ describe "responding to #initialize" do
15
+ it "should initialise rails_best_practices_count and labels" do
16
+ @stats_grapher.rails_best_practices_count.should == []
17
+ @stats_grapher.labels.should == {}
18
+ end
19
+ end
20
+
21
+ describe "responding to #get_metrics" do
22
+ context "when metrics were not generated" do
23
+ before(:each) do
24
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
25
+ @date = "01022003"
26
+ end
27
+
28
+ it "should not push to rails_best_practices_count" do
29
+ @stats_grapher.rails_best_practices_count.should_not_receive(:push)
30
+ @stats_grapher.get_metrics(@metrics, @date)
31
+ end
32
+
33
+ it "should not update labels with the date" do
34
+ @stats_grapher.labels.should_not_receive(:update)
35
+ @stats_grapher.get_metrics(@metrics, @date)
36
+ end
37
+ end
38
+
39
+ context "when metrics have been generated" do
40
+ before(:each) do
41
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
42
+ @date = "01022003"
43
+ end
44
+
45
+ it "should push to rails_best_practices_count" do
46
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(2)
47
+ @stats_grapher.get_metrics(@metrics, @date)
48
+ end
49
+
50
+ it "should push 0 to rails_best_practices_count when no problems were found" do
51
+ @stats_grapher.rails_best_practices_count.should_receive(:push).with(0)
52
+ @stats_grapher.get_metrics({ :rails_best_practices => {} }, @date)
53
+ end
54
+
55
+ it "should update labels with the date" do
56
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
57
+ @stats_grapher.get_metrics(@metrics, @date)
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe StatsGrapher do
4
+ before :each do
5
+ @stats_grapher = MetricFu::StatsGrapher.new
6
+ MetricFu.configuration
7
+ end
8
+
9
+ it "should respond to loc_counts and lot_counts and labels" do
10
+ @stats_grapher.should respond_to(:loc_counts)
11
+ @stats_grapher.should respond_to(:lot_counts)
12
+ @stats_grapher.should respond_to(:labels)
13
+ end
14
+
15
+ describe "responding to #initialize" do
16
+ it "should initialise loc_counts and lot_counts and labels" do
17
+ @stats_grapher.loc_counts.should == []
18
+ @stats_grapher.lot_counts.should == []
19
+ @stats_grapher.labels.should == {}
20
+ end
21
+ end
22
+
23
+ describe "responding to #get_metrics" do
24
+ context "when metrics were not generated" do
25
+ before(:each) do
26
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "metric_missing.yml")))
27
+ @date = "01022003"
28
+ end
29
+
30
+ it "should not push to loc_counts" do
31
+ @stats_grapher.loc_counts.should_not_receive(:push)
32
+ @stats_grapher.get_metrics(@metrics, @date)
33
+ end
34
+
35
+ it "should not push to lot_counts" do
36
+ @stats_grapher.lot_counts.should_not_receive(:push)
37
+ @stats_grapher.get_metrics(@metrics, @date)
38
+ end
39
+
40
+ it "should not update labels with the date" do
41
+ @stats_grapher.labels.should_not_receive(:update)
42
+ @stats_grapher.get_metrics(@metrics, @date)
43
+ end
44
+ end
45
+
46
+ context "when metrics have been generated" do
47
+ before(:each) do
48
+ @metrics = YAML::load(File.open(File.join(File.dirname(__FILE__), "..", "resources", "yml", "20090630.yml")))
49
+ @date = "01022003"
50
+ end
51
+
52
+ it "should push to loc_counts" do
53
+ @stats_grapher.loc_counts.should_receive(:push).with(15935)
54
+ @stats_grapher.get_metrics(@metrics, @date)
55
+ end
56
+
57
+ it "should push to lot_counts" do
58
+ @stats_grapher.lot_counts.should_receive(:push).with(7438)
59
+ @stats_grapher.get_metrics(@metrics, @date)
60
+ end
61
+
62
+ it "should update labels with the date" do
63
+ @stats_grapher.labels.should_receive(:update).with({ 0 => "01022003" })
64
+ @stats_grapher.get_metrics(@metrics, @date)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,33 @@
1
+ class Foo
2
+
3
+ def self.awesome
4
+ 1 + 1
5
+ end
6
+
7
+ def what
8
+ 12
9
+ end
10
+
11
+ def hello
12
+ puts "Hi There"
13
+ end
14
+
15
+
16
+ def awesome
17
+ 3+4
18
+ end
19
+
20
+ class << self
21
+ def neat
22
+ "23 skido"
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def whoop
29
+ "w00t"
30
+ end
31
+ end
32
+
33
+ #comment
@@ -0,0 +1,11 @@
1
+ module KickAss
2
+
3
+ def get_beat_up?
4
+ [1,2,3].inject {|m,o| m = m + o}
5
+ true
6
+ end
7
+
8
+ def fight
9
+ "poorly"
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ module StuffModule
2
+
3
+ class ThingClass
4
+
5
+ def do_it
6
+ "do it"
7
+ end
8
+
9
+ end
10
+
11
+ def blah
12
+ "blah blah"
13
+ end
14
+
15
+ end
@@ -0,0 +1,11 @@
1
+ class Foo
2
+ def stuff
3
+ 5
4
+ end
5
+ end
6
+
7
+ class Bar
8
+ def stuff
9
+ 1
10
+ end
11
+ end
@@ -0,0 +1 @@
1
+ ---
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
- - 1
8
- - 5
9
- - 1
10
- version: 1.5.1
7
+ - 2
8
+ - 0
9
+ - 0
10
+ version: 2.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jake Scruggs
@@ -24,7 +24,7 @@ autorequire:
24
24
  bindir: bin
25
25
  cert_chain: []
26
26
 
27
- date: 2010-07-28 00:00:00 -05:00
27
+ date: 2010-11-10 00:00:00 -06:00
28
28
  default_executable:
29
29
  dependencies:
30
30
  - !ruby/object:Gem::Dependency
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirement: &id007 !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
133
- - - ">="
133
+ - - ~>
134
134
  - !ruby/object:Gem::Version
135
135
  hash: 17
136
136
  segments:
@@ -194,14 +194,14 @@ dependencies:
194
194
  requirement: &id011 !ruby/object:Gem::Requirement
195
195
  none: false
196
196
  requirements:
197
- - - ">="
197
+ - - "="
198
198
  - !ruby/object:Gem::Version
199
- hash: 31
199
+ hash: 27
200
200
  segments:
201
201
  - 1
202
- - 2
202
+ - 3
203
203
  - 0
204
- version: 1.2.0
204
+ version: 1.3.0
205
205
  type: :development
206
206
  version_requirements: *id011
207
207
  - !ruby/object:Gem::Dependency
@@ -249,14 +249,30 @@ files:
249
249
  - MIT-LICENSE
250
250
  - Rakefile
251
251
  - lib/base/base_template.rb
252
+ - lib/base/churn_analyzer.rb
253
+ - lib/base/code_issue.rb
252
254
  - lib/base/configuration.rb
255
+ - lib/base/flay_analyzer.rb
256
+ - lib/base/flog_analyzer.rb
253
257
  - lib/base/generator.rb
254
258
  - lib/base/graph.rb
259
+ - lib/base/line_numbers.rb
260
+ - lib/base/location.rb
255
261
  - lib/base/md5_tracker.rb
262
+ - lib/base/metric_analyzer.rb
263
+ - lib/base/ranking.rb
264
+ - lib/base/rcov_analyzer.rb
265
+ - lib/base/reek_analyzer.rb
256
266
  - lib/base/report.rb
267
+ - lib/base/roodi_analyzer.rb
268
+ - lib/base/saikuro_analyzer.rb
269
+ - lib/base/scoring_strategies.rb
270
+ - lib/base/stats_analyzer.rb
271
+ - lib/base/table.rb
257
272
  - lib/generators/churn.rb
258
273
  - lib/generators/flay.rb
259
274
  - lib/generators/flog.rb
275
+ - lib/generators/hotspots.rb
260
276
  - lib/generators/rails_best_practices.rb
261
277
  - lib/generators/rcov.rb
262
278
  - lib/generators/reek.rb
@@ -282,6 +298,7 @@ files:
282
298
  - lib/templates/awesome/css/reset.css
283
299
  - lib/templates/awesome/flay.html.erb
284
300
  - lib/templates/awesome/flog.html.erb
301
+ - lib/templates/awesome/hotspots.html.erb
285
302
  - lib/templates/awesome/index.html.erb
286
303
  - lib/templates/awesome/layout.html.erb
287
304
  - lib/templates/awesome/rails_best_practices.html.erb
@@ -297,6 +314,7 @@ files:
297
314
  - lib/templates/standard/default.css
298
315
  - lib/templates/standard/flay.html.erb
299
316
  - lib/templates/standard/flog.html.erb
317
+ - lib/templates/standard/hotspots.html.erb
300
318
  - lib/templates/standard/index.html.erb
301
319
  - lib/templates/standard/rails_best_practices.html.erb
302
320
  - lib/templates/standard/rcov.html.erb
@@ -310,26 +328,37 @@ files:
310
328
  - spec/base/configuration_spec.rb
311
329
  - spec/base/generator_spec.rb
312
330
  - spec/base/graph_spec.rb
331
+ - spec/base/line_numbers_spec.rb
313
332
  - spec/base/md5_tracker_spec.rb
314
333
  - spec/base/report_spec.rb
315
334
  - spec/generators/churn_spec.rb
316
335
  - spec/generators/flay_spec.rb
317
336
  - spec/generators/flog_spec.rb
337
+ - spec/generators/rails_best_practices_spec.rb
338
+ - spec/generators/rcov_spec.rb
318
339
  - spec/generators/reek_spec.rb
340
+ - spec/generators/roodi_spec.rb
319
341
  - spec/generators/saikuro_spec.rb
320
342
  - spec/generators/stats_spec.rb
321
343
  - spec/graphs/engines/bluff_spec.rb
322
344
  - spec/graphs/engines/gchart_spec.rb
323
345
  - spec/graphs/flay_grapher_spec.rb
324
346
  - spec/graphs/flog_grapher_spec.rb
347
+ - spec/graphs/rails_best_practices_grapher_spec.rb
325
348
  - spec/graphs/rcov_grapher_spec.rb
326
349
  - spec/graphs/reek_grapher_spec.rb
327
350
  - spec/graphs/roodi_grapher_spec.rb
351
+ - spec/graphs/stats_grapher_spec.rb
352
+ - spec/resources/line_numbers/foo.rb
353
+ - spec/resources/line_numbers/module.rb
354
+ - spec/resources/line_numbers/module_surrounds_class.rb
355
+ - spec/resources/line_numbers/two_classes.rb
328
356
  - spec/resources/saikuro/app/controllers/sessions_controller.rb_cyclo.html
329
357
  - spec/resources/saikuro/app/controllers/users_controller.rb_cyclo.html
330
358
  - spec/resources/saikuro/index_cyclo.html
331
359
  - spec/resources/saikuro_sfiles/thing.rb_cyclo.html
332
360
  - spec/resources/yml/20090630.yml
361
+ - spec/resources/yml/metric_missing.yml
333
362
  - spec/spec.opts
334
363
  - spec/spec_helper.rb
335
364
  has_rdoc: true
@@ -371,25 +400,36 @@ test_files:
371
400
  - spec/base/configuration_spec.rb
372
401
  - spec/base/generator_spec.rb
373
402
  - spec/base/graph_spec.rb
403
+ - spec/base/line_numbers_spec.rb
374
404
  - spec/base/md5_tracker_spec.rb
375
405
  - spec/base/report_spec.rb
376
406
  - spec/generators/churn_spec.rb
377
407
  - spec/generators/flay_spec.rb
378
408
  - spec/generators/flog_spec.rb
409
+ - spec/generators/rails_best_practices_spec.rb
410
+ - spec/generators/rcov_spec.rb
379
411
  - spec/generators/reek_spec.rb
412
+ - spec/generators/roodi_spec.rb
380
413
  - spec/generators/saikuro_spec.rb
381
414
  - spec/generators/stats_spec.rb
382
415
  - spec/graphs/engines/bluff_spec.rb
383
416
  - spec/graphs/engines/gchart_spec.rb
384
417
  - spec/graphs/flay_grapher_spec.rb
385
418
  - spec/graphs/flog_grapher_spec.rb
419
+ - spec/graphs/rails_best_practices_grapher_spec.rb
386
420
  - spec/graphs/rcov_grapher_spec.rb
387
421
  - spec/graphs/reek_grapher_spec.rb
388
422
  - spec/graphs/roodi_grapher_spec.rb
423
+ - spec/graphs/stats_grapher_spec.rb
424
+ - spec/resources/line_numbers/foo.rb
425
+ - spec/resources/line_numbers/module.rb
426
+ - spec/resources/line_numbers/module_surrounds_class.rb
427
+ - spec/resources/line_numbers/two_classes.rb
389
428
  - spec/resources/saikuro/app/controllers/sessions_controller.rb_cyclo.html
390
429
  - spec/resources/saikuro/app/controllers/users_controller.rb_cyclo.html
391
430
  - spec/resources/saikuro/index_cyclo.html
392
431
  - spec/resources/saikuro_sfiles/thing.rb_cyclo.html
393
432
  - spec/resources/yml/20090630.yml
433
+ - spec/resources/yml/metric_missing.yml
394
434
  - spec/spec.opts
395
435
  - spec/spec_helper.rb