metric_fu 4.1.0 → 4.1.1

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 (62) hide show
  1. data/Gemfile +1 -1
  2. data/HISTORY.md +12 -1
  3. data/README.md +3 -0
  4. data/TODO.md +0 -41
  5. data/lib/metric_fu.rb +9 -1
  6. data/lib/metric_fu/configuration.rb +9 -1
  7. data/lib/metric_fu/initial_requires.rb +11 -11
  8. data/lib/metric_fu/load_files.rb +1 -0
  9. data/lib/metric_fu/metrics/cane/cane.rb +5 -4
  10. data/lib/metric_fu/metrics/cane/cane_bluff_grapher.rb +15 -0
  11. data/lib/metric_fu/metrics/cane/cane_grapher.rb +1 -0
  12. data/lib/metric_fu/metrics/cane/init.rb +1 -0
  13. data/lib/metric_fu/metrics/churn/churn_hotspot.rb +9 -1
  14. data/lib/metric_fu/metrics/flay/flay.rb +0 -2
  15. data/lib/metric_fu/metrics/flay/flay_bluff_grapher.rb +15 -0
  16. data/lib/metric_fu/metrics/flay/flay_gchart_grapher.rb +17 -0
  17. data/lib/metric_fu/metrics/flay/flay_grapher.rb +1 -0
  18. data/lib/metric_fu/metrics/flay/flay_hotspot.rb +18 -1
  19. data/lib/metric_fu/metrics/flay/init.rb +1 -0
  20. data/lib/metric_fu/metrics/flog/flog.rb +6 -4
  21. data/lib/metric_fu/metrics/flog/flog_bluff_grapher.rb +16 -0
  22. data/lib/metric_fu/metrics/flog/flog_gchart_grapher.rb +21 -0
  23. data/lib/metric_fu/metrics/flog/flog_grapher.rb +1 -0
  24. data/lib/metric_fu/metrics/flog/flog_hotspot.rb +13 -1
  25. data/lib/metric_fu/metrics/flog/init.rb +1 -0
  26. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +73 -0
  27. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +116 -0
  28. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +21 -0
  29. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +21 -0
  30. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +81 -0
  31. data/lib/metric_fu/metrics/hotspots/hotspot.rb +29 -0
  32. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +62 -308
  33. data/lib/metric_fu/metrics/hotspots/hotspots.rb +1 -27
  34. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_bluff_grapher.rb +15 -0
  35. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_gchart_grapher.rb +21 -0
  36. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher.rb +1 -0
  37. data/lib/metric_fu/metrics/rcov/rcov_bluff_grapher.rb +15 -0
  38. data/lib/metric_fu/metrics/rcov/rcov_gchart_grapher.rb +17 -0
  39. data/lib/metric_fu/metrics/rcov/rcov_grapher.rb +1 -0
  40. data/lib/metric_fu/metrics/rcov/rcov_hotspot.rb +28 -16
  41. data/lib/metric_fu/metrics/reek/reek_bluff_grapher.rb +20 -0
  42. data/lib/metric_fu/metrics/reek/reek_gchart_grapher.rb +25 -0
  43. data/lib/metric_fu/metrics/reek/reek_grapher.rb +1 -0
  44. data/lib/metric_fu/metrics/reek/reek_hotspot.rb +16 -1
  45. data/lib/metric_fu/metrics/roodi/roodi_bluff_grapher.rb +15 -0
  46. data/lib/metric_fu/metrics/roodi/roodi_gchart_grapher.rb +17 -0
  47. data/lib/metric_fu/metrics/roodi/roodi_grapher.rb +1 -0
  48. data/lib/metric_fu/metrics/roodi/roodi_hotspot.rb +16 -1
  49. data/lib/metric_fu/metrics/saikuro/saikuro_hotspot.rb +13 -1
  50. data/lib/metric_fu/metrics/stats/stats_bluff_grapher.rb +16 -0
  51. data/lib/metric_fu/metrics/stats/stats_gchart_grapher.rb +20 -0
  52. data/lib/metric_fu/metrics/stats/stats_grapher.rb +1 -0
  53. data/lib/metric_fu/metrics/stats/stats_hotspot.rb +1 -1
  54. data/lib/metric_fu/reporting/graphs/engines/bluff.rb +0 -114
  55. data/lib/metric_fu/reporting/graphs/engines/gchart.rb +0 -123
  56. data/lib/metric_fu/run.rb +1 -0
  57. data/lib/metric_fu/version.rb +1 -1
  58. data/metric_fu.gemspec +1 -0
  59. data/spec/metric_fu/metrics/cane/cane_spec.rb +17 -0
  60. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +11 -0
  61. data/spec/metric_fu/metrics/hotspots/hotspots_spec.rb +7 -0
  62. metadata +180 -134
@@ -31,127 +31,4 @@ module MetricFu
31
31
  end
32
32
  end
33
33
 
34
- class FlayGchartGrapher < FlayGrapher
35
- def graph!
36
- determine_y_axis_scale(@flay_score)
37
- url = Gchart.line(
38
- :size => GCHART_GRAPH_SIZE,
39
- :title => URI.escape("Flay: duplication"),
40
- :data => @flay_score,
41
- :max_value => @max_value,
42
- :axis_with_labels => 'x,y',
43
- :axis_labels => [@labels.values, @yaxis],
44
- :format => 'file',
45
- :filename => File.join(MetricFu.output_directory, 'flay.png'))
46
- end
47
- end
48
-
49
- class FlogGchartGrapher < FlogGrapher
50
- def graph!
51
- determine_y_axis_scale(@top_five_percent_average + @flog_average)
52
- url = Gchart.line(
53
- :size => GCHART_GRAPH_SIZE,
54
- :title => URI.escape("Flog: code complexity"),
55
- :data => [@flog_average, @top_five_percent_average],
56
- :stacked => false,
57
- :bar_colors => COLORS[0..1],
58
- :legend => ['average', 'top 5% average'],
59
- :custom => "chdlp=t",
60
- :max_value => @max_value,
61
- :axis_with_labels => 'x,y',
62
- :axis_labels => [@labels.values, @yaxis],
63
- :format => 'file',
64
- :filename => File.join(MetricFu.output_directory, 'flog.png'))
65
- end
66
- end
67
-
68
- class RcovGchartGrapher < RcovGrapher
69
- def graph!
70
- url = Gchart.line(
71
- :size => GCHART_GRAPH_SIZE,
72
- :title => URI.escape("Rcov: code coverage"),
73
- :data => self.rcov_percent,
74
- :max_value => 101,
75
- :axis_with_labels => 'x,y',
76
- :axis_labels => [self.labels.values, [0,20,40,60,80,100]],
77
- :format => 'file',
78
- :filename => File.join(MetricFu.output_directory, 'rcov.png')
79
- )
80
- end
81
- end
82
-
83
- class ReekGchartGrapher < ReekGrapher
84
- def graph!
85
- determine_y_axis_scale(@reek_count.values.flatten.uniq)
86
- values = []
87
- legend = @reek_count.keys.sort
88
- legend.collect {|k| values << @reek_count[k]}
89
-
90
- url = Gchart.line(
91
- :size => GCHART_GRAPH_SIZE,
92
- :title => URI.escape("Reek: code smells"),
93
- :data => values,
94
- :stacked => false,
95
- :bar_colors => COLORS,
96
- :legend => legend,
97
- :custom => "chdlp=t",
98
- :max_value => @max_value,
99
- :axis_with_labels => 'x,y',
100
- :axis_labels => [@labels.values, @yaxis],
101
- :format => 'file',
102
- :filename => File.join(MetricFu.output_directory, 'reek.png'))
103
- end
104
- end
105
-
106
- class RoodiGchartGrapher < RoodiGrapher
107
- def graph!
108
- determine_y_axis_scale(@roodi_count)
109
- url = Gchart.line(
110
- :size => GCHART_GRAPH_SIZE,
111
- :title => URI.escape("Roodi: potential design problems"),
112
- :data => @roodi_count,
113
- :max_value => @max_value,
114
- :axis_with_labels => 'x,y',
115
- :axis_labels => [@labels.values, @yaxis],
116
- :format => 'file',
117
- :filename => File.join(MetricFu.output_directory, 'roodi.png'))
118
- end
119
- end
120
-
121
- class StatsGchartGrapher < StatsGrapher
122
- def graph!
123
- determine_y_axis_scale(@loc_counts + @lot_counts)
124
- url = Gchart.line(
125
- :size => GCHART_GRAPH_SIZE,
126
- :title => URI.escape("Stats: LOC & LOT"),
127
- :data => [@loc_counts, @lot_counts],
128
- :bar_colors => COLORS[0..1],
129
- :legend => ['Lines of code', 'Lines of test'],
130
- :custom => "chdlp=t",
131
- :max_value => @max_value,
132
- :axis_with_labels => 'x,y',
133
- :axis_labels => [@labels.values, @yaxis],
134
- :format => 'file',
135
- :filename => File.join(MetricFu.output_directory, 'stats.png'))
136
- end
137
- end
138
-
139
- class RailsBestPracticesGchartGrapher < RailsBestPracticesGrapher
140
- def graph!
141
- determine_y_axis_scale(@rails_best_practices_count)
142
- url = Gchart.line(
143
- :size => GCHART_GRAPH_SIZE,
144
- :title => URI.escape("Rails Best Practices: design problems"),
145
- :data => self.rails_best_practices_count,
146
- :bar_colors => COLORS[0..1],
147
- :legend => ['Problems'],
148
- :custom => "chdlp=t",
149
- :max_value => @max_value,
150
- :axis_with_labels => 'x,y',
151
- :axis_labels => [@labels.values, @yaxis],
152
- :format => 'file',
153
- :filename => File.join(MetricFu.output_directory, 'rails_best_practices.png')
154
- )
155
- end
156
- end
157
34
  end
data/lib/metric_fu/run.rb CHANGED
@@ -59,6 +59,7 @@ module MetricFu
59
59
  load file if File.exist?(file)
60
60
  end
61
61
  def disable_metrics(options)
62
+ return if options.size == 0
62
63
  report_metrics.each do |metric|
63
64
  if options[metric.to_sym]
64
65
  mf_debug "using metric #{metric}"
@@ -1,3 +1,3 @@
1
1
  module MetricFu
2
- VERSION = "4.1.0"
2
+ VERSION = "4.1.1"
3
3
  end
data/metric_fu.gemspec CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  "ruby2ruby" => ["= #{MetricFu::MetricVersion.ruby2ruby}"],
37
37
  "parallel" => ["= #{MetricFu::MetricVersion.parallel}"],
38
38
  "activesupport" => [">= 2.0.0"], # ok
39
+ 'redcard' => [],
39
40
  "coderay" => [],
40
41
  "fattr" => ["= 2.2.1"],
41
42
  "arrayfields" => ["= 4.7.4"],
@@ -59,6 +59,23 @@ describe Cane do
59
59
  end
60
60
  end
61
61
 
62
+ describe "parse cane empty output" do
63
+ before :each do
64
+ MetricFu::Configuration.run {}
65
+ File.stub!(:directory?).and_return(true)
66
+ @cane = MetricFu::Cane.new('base_dir')
67
+ @cane.instance_variable_set(:@output, '')
68
+ end
69
+
70
+ describe "analyze method" do
71
+
72
+ it "should find total violations" do
73
+ @cane.analyze
74
+ @cane.total_violations.should == 0
75
+ end
76
+ end
77
+ end
78
+
62
79
  describe "parse cane output" do
63
80
  before :each do
64
81
  lines = sample_cane_output
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe "MetricFu::Hotspot" do
4
+ it "returns an array of of the analyzers that subclass it" do
5
+ expected_analyzers = [ReekHotspot, RoodiHotspot,
6
+ FlogHotspot, ChurnHotspot, SaikuroHotspot,
7
+ FlayHotspot, StatsHotspot, RcovHotspot]
8
+
9
+ MetricFu::Hotspot.analyzers.size.should == expected_analyzers.size
10
+ end
11
+ end
@@ -81,6 +81,13 @@ END
81
81
  expected = JSON.parse("{\"methods\":[{\"location\":{\"class_name\":\"Client\",\"method_name\":\"Client#client_requested_sync\",\"file_path\":\"lib/client/client.rb\",\"hash\":7919384682,\"simple_method_name\":\"#client_requested_sync\"},\"details\":{\"reek\":\"found 1 code smells\",\"flog\":\"complexity is 37.9\"}}],\"classes\":[{\"location\":{\"class_name\":\"Client\",\"method_name\":null,\"file_path\":\"lib/client/client.rb\",\"hash\":7995629750},\"details\":{\"reek\":\"found 2 code smells\",\"flog\":\"complexity is 37.9\"}}],\"files\":[{\"location\":{\"class_name\":null,\"method_name\":null,\"file_path\":\"lib/client/client.rb\",\"hash\":-5738801681},\"details\":{\"reek\":\"found 2 code smells\",\"flog\":\"complexity is 37.9\",\"churn\":\"detected high level of churn (changed 54 times)\"}},{\"location\":{\"class_name\":null,\"method_name\":null,\"file_path\":\"lib/client/foo.rb\",\"hash\":-7081271905},\"details\":{\"churn\":\"detected high level of churn (changed 52 times)\"}}]}")
82
82
  compare_hashes(JSON.parse(hotspots.to_h[:hotspots].to_json), expected)
83
83
  end
84
+ # really testing the output of analyzed_problems#worst_items
85
+ it "should return the worst item granularities: files, classes, methods" do
86
+ hotspots = MetricFu::Hotspots.new
87
+ analyzer = HotspotAnalyzer.new(@yaml)
88
+ hotspots.instance_variable_set(:@analyzer, analyzer)
89
+ hotspots.analyze.keys.should =~ [:files, :classes, :methods]
90
+ end
84
91
  end
85
92
  end
86
93
  def compare_hashes(got,expected)
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
5
- prerelease:
4
+ prerelease:
5
+ version: 4.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jake Scruggs
@@ -11,328 +11,351 @@ authors:
11
11
  - Petrik de Heus
12
12
  - Grant McInnes
13
13
  - Nick Quaranto
14
- - Édouard Brière
14
+ - "Édouard Brière"
15
15
  - Carl Youngblood
16
16
  - Richard Huang
17
17
  - Dan Mayer
18
18
  - Benjamin Fleischer
19
- autorequire:
19
+ autorequire:
20
20
  bindir: bin
21
21
  cert_chain: []
22
- date: 2013-03-06 00:00:00.000000000 Z
22
+ date: 2013-04-17 00:00:00.000000000 Z
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
25
  name: rails_best_practices
26
- requirement: !ruby/object:Gem::Requirement
27
- none: false
26
+ version_requirements: !ruby/object:Gem::Requirement
28
27
  requirements:
29
28
  - - '='
30
29
  - !ruby/object:Gem::Version
31
30
  version: 1.13.2
32
- type: :runtime
33
- prerelease: false
34
- version_requirements: !ruby/object:Gem::Requirement
35
31
  none: false
32
+ requirement: !ruby/object:Gem::Requirement
36
33
  requirements:
37
34
  - - '='
38
35
  - !ruby/object:Gem::Version
39
36
  version: 1.13.2
37
+ none: false
38
+ prerelease: false
39
+ type: :runtime
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: japgolly-Saikuro
42
- requirement: !ruby/object:Gem::Requirement
43
- none: false
42
+ version_requirements: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - ! '>='
44
+ - - ">="
46
45
  - !ruby/object:Gem::Version
47
46
  version: 1.1.1.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
47
  none: false
48
+ requirement: !ruby/object:Gem::Requirement
52
49
  requirements:
53
- - - ! '>='
50
+ - - ">="
54
51
  - !ruby/object:Gem::Version
55
52
  version: 1.1.1.0
53
+ none: false
54
+ prerelease: false
55
+ type: :runtime
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: metric_fu-roodi
58
- requirement: !ruby/object:Gem::Requirement
59
- none: false
58
+ version_requirements: !ruby/object:Gem::Requirement
60
59
  requirements:
61
- - - ! '>='
60
+ - - ">="
62
61
  - !ruby/object:Gem::Version
63
62
  version: 2.2.1
64
- type: :runtime
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
63
  none: false
64
+ requirement: !ruby/object:Gem::Requirement
68
65
  requirements:
69
- - - ! '>='
66
+ - - ">="
70
67
  - !ruby/object:Gem::Version
71
68
  version: 2.2.1
69
+ none: false
70
+ prerelease: false
71
+ type: :runtime
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: flay
74
- requirement: !ruby/object:Gem::Requirement
75
- none: false
74
+ version_requirements: !ruby/object:Gem::Requirement
76
75
  requirements:
77
76
  - - '='
78
77
  - !ruby/object:Gem::Version
79
78
  version: 2.0.1
80
- type: :runtime
81
- prerelease: false
82
- version_requirements: !ruby/object:Gem::Requirement
83
79
  none: false
80
+ requirement: !ruby/object:Gem::Requirement
84
81
  requirements:
85
82
  - - '='
86
83
  - !ruby/object:Gem::Version
87
84
  version: 2.0.1
85
+ none: false
86
+ prerelease: false
87
+ type: :runtime
88
88
  - !ruby/object:Gem::Dependency
89
89
  name: flog
90
- requirement: !ruby/object:Gem::Requirement
91
- none: false
90
+ version_requirements: !ruby/object:Gem::Requirement
92
91
  requirements:
93
92
  - - '='
94
93
  - !ruby/object:Gem::Version
95
94
  version: 3.2.2
96
- type: :runtime
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
95
  none: false
96
+ requirement: !ruby/object:Gem::Requirement
100
97
  requirements:
101
98
  - - '='
102
99
  - !ruby/object:Gem::Version
103
100
  version: 3.2.2
101
+ none: false
102
+ prerelease: false
103
+ type: :runtime
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: reek
106
- requirement: !ruby/object:Gem::Requirement
107
- none: false
106
+ version_requirements: !ruby/object:Gem::Requirement
108
107
  requirements:
109
108
  - - '='
110
109
  - !ruby/object:Gem::Version
111
110
  version: 1.3.1
112
- type: :runtime
113
- prerelease: false
114
- version_requirements: !ruby/object:Gem::Requirement
115
111
  none: false
112
+ requirement: !ruby/object:Gem::Requirement
116
113
  requirements:
117
114
  - - '='
118
115
  - !ruby/object:Gem::Version
119
116
  version: 1.3.1
117
+ none: false
118
+ prerelease: false
119
+ type: :runtime
120
120
  - !ruby/object:Gem::Dependency
121
121
  name: churn
122
- requirement: !ruby/object:Gem::Requirement
123
- none: false
122
+ version_requirements: !ruby/object:Gem::Requirement
124
123
  requirements:
125
124
  - - '='
126
125
  - !ruby/object:Gem::Version
127
126
  version: 0.0.28
128
- type: :runtime
129
- prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
127
  none: false
128
+ requirement: !ruby/object:Gem::Requirement
132
129
  requirements:
133
130
  - - '='
134
131
  - !ruby/object:Gem::Version
135
132
  version: 0.0.28
133
+ none: false
134
+ prerelease: false
135
+ type: :runtime
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: cane
138
- requirement: !ruby/object:Gem::Requirement
139
- none: false
138
+ version_requirements: !ruby/object:Gem::Requirement
140
139
  requirements:
141
140
  - - '='
142
141
  - !ruby/object:Gem::Version
143
142
  version: 2.5.2
144
- type: :runtime
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
143
  none: false
144
+ requirement: !ruby/object:Gem::Requirement
148
145
  requirements:
149
146
  - - '='
150
147
  - !ruby/object:Gem::Version
151
148
  version: 2.5.2
149
+ none: false
150
+ prerelease: false
151
+ type: :runtime
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: ruby_parser
154
- requirement: !ruby/object:Gem::Requirement
155
- none: false
154
+ version_requirements: !ruby/object:Gem::Requirement
156
155
  requirements:
157
- - - ~>
156
+ - - "~>"
158
157
  - !ruby/object:Gem::Version
159
158
  version: '3.0'
160
- - - ! '>='
159
+ - - ">="
161
160
  - !ruby/object:Gem::Version
162
161
  version: 3.1.1
163
- type: :runtime
164
- prerelease: false
165
- version_requirements: !ruby/object:Gem::Requirement
166
162
  none: false
163
+ requirement: !ruby/object:Gem::Requirement
167
164
  requirements:
168
- - - ~>
165
+ - - "~>"
169
166
  - !ruby/object:Gem::Version
170
167
  version: '3.0'
171
- - - ! '>='
168
+ - - ">="
172
169
  - !ruby/object:Gem::Version
173
170
  version: 3.1.1
171
+ none: false
172
+ prerelease: false
173
+ type: :runtime
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: sexp_processor
176
- requirement: !ruby/object:Gem::Requirement
177
- none: false
176
+ version_requirements: !ruby/object:Gem::Requirement
178
177
  requirements:
179
- - - ~>
178
+ - - "~>"
180
179
  - !ruby/object:Gem::Version
181
180
  version: '4.0'
182
- type: :runtime
183
- prerelease: false
184
- version_requirements: !ruby/object:Gem::Requirement
185
181
  none: false
182
+ requirement: !ruby/object:Gem::Requirement
186
183
  requirements:
187
- - - ~>
184
+ - - "~>"
188
185
  - !ruby/object:Gem::Version
189
186
  version: '4.0'
187
+ none: false
188
+ prerelease: false
189
+ type: :runtime
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: ruby2ruby
192
- requirement: !ruby/object:Gem::Requirement
193
- none: false
192
+ version_requirements: !ruby/object:Gem::Requirement
194
193
  requirements:
195
194
  - - '='
196
195
  - !ruby/object:Gem::Version
197
196
  version: 2.0.2
198
- type: :runtime
199
- prerelease: false
200
- version_requirements: !ruby/object:Gem::Requirement
201
197
  none: false
198
+ requirement: !ruby/object:Gem::Requirement
202
199
  requirements:
203
200
  - - '='
204
201
  - !ruby/object:Gem::Version
205
202
  version: 2.0.2
203
+ none: false
204
+ prerelease: false
205
+ type: :runtime
206
206
  - !ruby/object:Gem::Dependency
207
207
  name: parallel
208
- requirement: !ruby/object:Gem::Requirement
209
- none: false
208
+ version_requirements: !ruby/object:Gem::Requirement
210
209
  requirements:
211
210
  - - '='
212
211
  - !ruby/object:Gem::Version
213
212
  version: 0.6.2
214
- type: :runtime
215
- prerelease: false
216
- version_requirements: !ruby/object:Gem::Requirement
217
213
  none: false
214
+ requirement: !ruby/object:Gem::Requirement
218
215
  requirements:
219
216
  - - '='
220
217
  - !ruby/object:Gem::Version
221
218
  version: 0.6.2
219
+ none: false
220
+ prerelease: false
221
+ type: :runtime
222
222
  - !ruby/object:Gem::Dependency
223
223
  name: activesupport
224
- requirement: !ruby/object:Gem::Requirement
225
- none: false
224
+ version_requirements: !ruby/object:Gem::Requirement
226
225
  requirements:
227
- - - ! '>='
226
+ - - ">="
228
227
  - !ruby/object:Gem::Version
229
228
  version: 2.0.0
230
- type: :runtime
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
229
  none: false
230
+ requirement: !ruby/object:Gem::Requirement
234
231
  requirements:
235
- - - ! '>='
232
+ - - ">="
236
233
  - !ruby/object:Gem::Version
237
234
  version: 2.0.0
235
+ none: false
236
+ prerelease: false
237
+ type: :runtime
238
238
  - !ruby/object:Gem::Dependency
239
- name: coderay
240
- requirement: !ruby/object:Gem::Requirement
239
+ name: redcard
240
+ version_requirements: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: !binary |-
245
+ MA==
241
246
  none: false
247
+ requirement: !ruby/object:Gem::Requirement
242
248
  requirements:
243
- - - ! '>='
249
+ - - ">="
244
250
  - !ruby/object:Gem::Version
245
- version: '0'
246
- type: :runtime
251
+ version: !binary |-
252
+ MA==
253
+ none: false
247
254
  prerelease: false
255
+ type: :runtime
256
+ - !ruby/object:Gem::Dependency
257
+ name: coderay
248
258
  version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: !binary |-
263
+ MA==
249
264
  none: false
265
+ requirement: !ruby/object:Gem::Requirement
250
266
  requirements:
251
- - - ! '>='
267
+ - - ">="
252
268
  - !ruby/object:Gem::Version
253
- version: '0'
269
+ version: !binary |-
270
+ MA==
271
+ none: false
272
+ prerelease: false
273
+ type: :runtime
254
274
  - !ruby/object:Gem::Dependency
255
275
  name: fattr
256
- requirement: !ruby/object:Gem::Requirement
257
- none: false
276
+ version_requirements: !ruby/object:Gem::Requirement
258
277
  requirements:
259
278
  - - '='
260
279
  - !ruby/object:Gem::Version
261
280
  version: 2.2.1
262
- type: :runtime
263
- prerelease: false
264
- version_requirements: !ruby/object:Gem::Requirement
265
281
  none: false
282
+ requirement: !ruby/object:Gem::Requirement
266
283
  requirements:
267
284
  - - '='
268
285
  - !ruby/object:Gem::Version
269
286
  version: 2.2.1
287
+ none: false
288
+ prerelease: false
289
+ type: :runtime
270
290
  - !ruby/object:Gem::Dependency
271
291
  name: arrayfields
272
- requirement: !ruby/object:Gem::Requirement
273
- none: false
292
+ version_requirements: !ruby/object:Gem::Requirement
274
293
  requirements:
275
294
  - - '='
276
295
  - !ruby/object:Gem::Version
277
296
  version: 4.7.4
278
- type: :runtime
279
- prerelease: false
280
- version_requirements: !ruby/object:Gem::Requirement
281
297
  none: false
298
+ requirement: !ruby/object:Gem::Requirement
282
299
  requirements:
283
300
  - - '='
284
301
  - !ruby/object:Gem::Version
285
302
  version: 4.7.4
303
+ none: false
304
+ prerelease: false
305
+ type: :runtime
286
306
  - !ruby/object:Gem::Dependency
287
307
  name: map
288
- requirement: !ruby/object:Gem::Requirement
289
- none: false
308
+ version_requirements: !ruby/object:Gem::Requirement
290
309
  requirements:
291
310
  - - '='
292
311
  - !ruby/object:Gem::Version
293
312
  version: 6.2.0
294
- type: :runtime
295
- prerelease: false
296
- version_requirements: !ruby/object:Gem::Requirement
297
313
  none: false
314
+ requirement: !ruby/object:Gem::Requirement
298
315
  requirements:
299
316
  - - '='
300
317
  - !ruby/object:Gem::Version
301
318
  version: 6.2.0
319
+ none: false
320
+ prerelease: false
321
+ type: :runtime
302
322
  - !ruby/object:Gem::Dependency
303
323
  name: bluff
304
- requirement: !ruby/object:Gem::Requirement
305
- none: false
324
+ version_requirements: !ruby/object:Gem::Requirement
306
325
  requirements:
307
- - - ! '>='
326
+ - - ">="
308
327
  - !ruby/object:Gem::Version
309
- version: '0'
310
- type: :runtime
311
- prerelease: false
312
- version_requirements: !ruby/object:Gem::Requirement
328
+ version: !binary |-
329
+ MA==
313
330
  none: false
331
+ requirement: !ruby/object:Gem::Requirement
314
332
  requirements:
315
- - - ! '>='
333
+ - - ">="
316
334
  - !ruby/object:Gem::Version
317
- version: '0'
335
+ version: !binary |-
336
+ MA==
337
+ none: false
338
+ prerelease: false
339
+ type: :runtime
318
340
  - !ruby/object:Gem::Dependency
319
341
  name: googlecharts
320
- requirement: !ruby/object:Gem::Requirement
321
- none: false
342
+ version_requirements: !ruby/object:Gem::Requirement
322
343
  requirements:
323
- - - ! '>='
344
+ - - ">="
324
345
  - !ruby/object:Gem::Version
325
- version: '0'
326
- type: :runtime
327
- prerelease: false
328
- version_requirements: !ruby/object:Gem::Requirement
346
+ version: !binary |-
347
+ MA==
329
348
  none: false
349
+ requirement: !ruby/object:Gem::Requirement
330
350
  requirements:
331
- - - ! '>='
351
+ - - ">="
332
352
  - !ruby/object:Gem::Version
333
- version: '0'
334
- description: Code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Rails' stats
335
- task and Rails Best Practices, and optionally RCov
353
+ version: !binary |-
354
+ MA==
355
+ none: false
356
+ prerelease: false
357
+ type: :runtime
358
+ description: Code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Rails' stats task and Rails Best Practices, and optionally RCov
336
359
  email: github@benjaminfleischer.com
337
360
  executables:
338
361
  - metric_fu
@@ -346,10 +369,10 @@ executables:
346
369
  extensions: []
347
370
  extra_rdoc_files: []
348
371
  files:
349
- - .gitignore
350
- - .metrics
351
- - .rspec
352
- - .travis.yml
372
+ - ".gitignore"
373
+ - ".metrics"
374
+ - ".rspec"
375
+ - ".travis.yml"
353
376
  - CONTRIBUTING.md
354
377
  - Gemfile
355
378
  - HISTORY.md
@@ -403,6 +426,7 @@ files:
403
426
  - lib/metric_fu/logging/mf_debugger.rb
404
427
  - lib/metric_fu/metrics/base_template.rb
405
428
  - lib/metric_fu/metrics/cane/cane.rb
429
+ - lib/metric_fu/metrics/cane/cane_bluff_grapher.rb
406
430
  - lib/metric_fu/metrics/cane/cane_grapher.rb
407
431
  - lib/metric_fu/metrics/cane/init.rb
408
432
  - lib/metric_fu/metrics/cane/template_awesome/cane.html.erb
@@ -414,12 +438,16 @@ files:
414
438
  - lib/metric_fu/metrics/churn/template_awesome/churn.html.erb
415
439
  - lib/metric_fu/metrics/churn/template_standard/churn.html.erb
416
440
  - lib/metric_fu/metrics/flay/flay.rb
441
+ - lib/metric_fu/metrics/flay/flay_bluff_grapher.rb
442
+ - lib/metric_fu/metrics/flay/flay_gchart_grapher.rb
417
443
  - lib/metric_fu/metrics/flay/flay_grapher.rb
418
444
  - lib/metric_fu/metrics/flay/flay_hotspot.rb
419
445
  - lib/metric_fu/metrics/flay/init.rb
420
446
  - lib/metric_fu/metrics/flay/template_awesome/flay.html.erb
421
447
  - lib/metric_fu/metrics/flay/template_standard/flay.html.erb
422
448
  - lib/metric_fu/metrics/flog/flog.rb
449
+ - lib/metric_fu/metrics/flog/flog_bluff_grapher.rb
450
+ - lib/metric_fu/metrics/flog/flog_gchart_grapher.rb
423
451
  - lib/metric_fu/metrics/flog/flog_grapher.rb
424
452
  - lib/metric_fu/metrics/flog/flog_hotspot.rb
425
453
  - lib/metric_fu/metrics/flog/init.rb
@@ -427,12 +455,18 @@ files:
427
455
  - lib/metric_fu/metrics/flog/template_standard/flog.html.erb
428
456
  - lib/metric_fu/metrics/generator.rb
429
457
  - lib/metric_fu/metrics/graph.rb
458
+ - lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb
459
+ - lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb
430
460
  - lib/metric_fu/metrics/hotspots/analysis/code_issue.rb
431
461
  - lib/metric_fu/metrics/hotspots/analysis/grouping.rb
462
+ - lib/metric_fu/metrics/hotspots/analysis/groupings.rb
463
+ - lib/metric_fu/metrics/hotspots/analysis/problems.rb
432
464
  - lib/metric_fu/metrics/hotspots/analysis/ranking.rb
465
+ - lib/metric_fu/metrics/hotspots/analysis/rankings.rb
433
466
  - lib/metric_fu/metrics/hotspots/analysis/record.rb
434
467
  - lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb
435
468
  - lib/metric_fu/metrics/hotspots/analysis/table.rb
469
+ - lib/metric_fu/metrics/hotspots/hotspot.rb
436
470
  - lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb
437
471
  - lib/metric_fu/metrics/hotspots/hotspots.rb
438
472
  - lib/metric_fu/metrics/hotspots/init.rb
@@ -440,23 +474,31 @@ files:
440
474
  - lib/metric_fu/metrics/hotspots/template_standard/hotspots.html.erb
441
475
  - lib/metric_fu/metrics/rails_best_practices/init.rb
442
476
  - lib/metric_fu/metrics/rails_best_practices/rails_best_practices.rb
477
+ - lib/metric_fu/metrics/rails_best_practices/rails_best_practices_bluff_grapher.rb
478
+ - lib/metric_fu/metrics/rails_best_practices/rails_best_practices_gchart_grapher.rb
443
479
  - lib/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher.rb
444
480
  - lib/metric_fu/metrics/rails_best_practices/template_awesome/rails_best_practices.html.erb
445
481
  - lib/metric_fu/metrics/rails_best_practices/template_standard/rails_best_practices.html.erb
446
482
  - lib/metric_fu/metrics/rcov/init.rb
447
483
  - lib/metric_fu/metrics/rcov/rcov.rb
484
+ - lib/metric_fu/metrics/rcov/rcov_bluff_grapher.rb
485
+ - lib/metric_fu/metrics/rcov/rcov_gchart_grapher.rb
448
486
  - lib/metric_fu/metrics/rcov/rcov_grapher.rb
449
487
  - lib/metric_fu/metrics/rcov/rcov_hotspot.rb
450
488
  - lib/metric_fu/metrics/rcov/template_awesome/rcov.html.erb
451
489
  - lib/metric_fu/metrics/rcov/template_standard/rcov.html.erb
452
490
  - lib/metric_fu/metrics/reek/init.rb
453
491
  - lib/metric_fu/metrics/reek/reek.rb
492
+ - lib/metric_fu/metrics/reek/reek_bluff_grapher.rb
493
+ - lib/metric_fu/metrics/reek/reek_gchart_grapher.rb
454
494
  - lib/metric_fu/metrics/reek/reek_grapher.rb
455
495
  - lib/metric_fu/metrics/reek/reek_hotspot.rb
456
496
  - lib/metric_fu/metrics/reek/template_awesome/reek.html.erb
457
497
  - lib/metric_fu/metrics/reek/template_standard/reek.html.erb
458
498
  - lib/metric_fu/metrics/roodi/init.rb
459
499
  - lib/metric_fu/metrics/roodi/roodi.rb
500
+ - lib/metric_fu/metrics/roodi/roodi_bluff_grapher.rb
501
+ - lib/metric_fu/metrics/roodi/roodi_gchart_grapher.rb
460
502
  - lib/metric_fu/metrics/roodi/roodi_grapher.rb
461
503
  - lib/metric_fu/metrics/roodi/roodi_hotspot.rb
462
504
  - lib/metric_fu/metrics/roodi/template_awesome/roodi.html.erb
@@ -468,6 +510,8 @@ files:
468
510
  - lib/metric_fu/metrics/saikuro/template_standard/saikuro.html.erb
469
511
  - lib/metric_fu/metrics/stats/init.rb
470
512
  - lib/metric_fu/metrics/stats/stats.rb
513
+ - lib/metric_fu/metrics/stats/stats_bluff_grapher.rb
514
+ - lib/metric_fu/metrics/stats/stats_gchart_grapher.rb
471
515
  - lib/metric_fu/metrics/stats/stats_grapher.rb
472
516
  - lib/metric_fu/metrics/stats/stats_hotspot.rb
473
517
  - lib/metric_fu/metrics/stats/template_awesome/stats.html.erb
@@ -512,6 +556,7 @@ files:
512
556
  - spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb
513
557
  - spec/metric_fu/metrics/hotspots/analysis/table_spec.rb
514
558
  - spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb
559
+ - spec/metric_fu/metrics/hotspots/hotspot_spec.rb
515
560
  - spec/metric_fu/metrics/hotspots/hotspots_spec.rb
516
561
  - spec/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher_spec.rb
517
562
  - spec/metric_fu/metrics/rails_best_practices/rails_best_practices_spec.rb
@@ -544,26 +589,26 @@ files:
544
589
  homepage: http://github.com/metricfu/metric_fu
545
590
  licenses:
546
591
  - MIT
547
- post_install_message:
592
+ post_install_message:
548
593
  rdoc_options: []
549
594
  require_paths:
550
595
  - lib
551
596
  required_ruby_version: !ruby/object:Gem::Requirement
552
- none: false
553
597
  requirements:
554
- - - ! '>='
598
+ - - ">="
555
599
  - !ruby/object:Gem::Version
556
600
  version: 1.8.7
557
- required_rubygems_version: !ruby/object:Gem::Requirement
558
601
  none: false
602
+ required_rubygems_version: !ruby/object:Gem::Requirement
559
603
  requirements:
560
- - - ! '>='
604
+ - - ">="
561
605
  - !ruby/object:Gem::Version
562
606
  version: 1.3.6
607
+ none: false
563
608
  requirements: []
564
609
  rubyforge_project: metric_fu
565
610
  rubygems_version: 1.8.24
566
- signing_key:
611
+ signing_key:
567
612
  specification_version: 3
568
613
  summary: A fistful of code metrics, with awesome templates and graphs
569
614
  test_files:
@@ -583,6 +628,7 @@ test_files:
583
628
  - spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb
584
629
  - spec/metric_fu/metrics/hotspots/analysis/table_spec.rb
585
630
  - spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb
631
+ - spec/metric_fu/metrics/hotspots/hotspot_spec.rb
586
632
  - spec/metric_fu/metrics/hotspots/hotspots_spec.rb
587
633
  - spec/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher_spec.rb
588
634
  - spec/metric_fu/metrics/rails_best_practices/rails_best_practices_spec.rb