metric_fu 4.1.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
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