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.
- data/Gemfile +1 -1
- data/HISTORY.md +12 -1
- data/README.md +3 -0
- data/TODO.md +0 -41
- data/lib/metric_fu.rb +9 -1
- data/lib/metric_fu/configuration.rb +9 -1
- data/lib/metric_fu/initial_requires.rb +11 -11
- data/lib/metric_fu/load_files.rb +1 -0
- data/lib/metric_fu/metrics/cane/cane.rb +5 -4
- data/lib/metric_fu/metrics/cane/cane_bluff_grapher.rb +15 -0
- data/lib/metric_fu/metrics/cane/cane_grapher.rb +1 -0
- data/lib/metric_fu/metrics/cane/init.rb +1 -0
- data/lib/metric_fu/metrics/churn/churn_hotspot.rb +9 -1
- data/lib/metric_fu/metrics/flay/flay.rb +0 -2
- data/lib/metric_fu/metrics/flay/flay_bluff_grapher.rb +15 -0
- data/lib/metric_fu/metrics/flay/flay_gchart_grapher.rb +17 -0
- data/lib/metric_fu/metrics/flay/flay_grapher.rb +1 -0
- data/lib/metric_fu/metrics/flay/flay_hotspot.rb +18 -1
- data/lib/metric_fu/metrics/flay/init.rb +1 -0
- data/lib/metric_fu/metrics/flog/flog.rb +6 -4
- data/lib/metric_fu/metrics/flog/flog_bluff_grapher.rb +16 -0
- data/lib/metric_fu/metrics/flog/flog_gchart_grapher.rb +21 -0
- data/lib/metric_fu/metrics/flog/flog_grapher.rb +1 -0
- data/lib/metric_fu/metrics/flog/flog_hotspot.rb +13 -1
- data/lib/metric_fu/metrics/flog/init.rb +1 -0
- data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +73 -0
- data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +116 -0
- data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +21 -0
- data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +21 -0
- data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +81 -0
- data/lib/metric_fu/metrics/hotspots/hotspot.rb +29 -0
- data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +62 -308
- data/lib/metric_fu/metrics/hotspots/hotspots.rb +1 -27
- data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_bluff_grapher.rb +15 -0
- data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_gchart_grapher.rb +21 -0
- data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher.rb +1 -0
- data/lib/metric_fu/metrics/rcov/rcov_bluff_grapher.rb +15 -0
- data/lib/metric_fu/metrics/rcov/rcov_gchart_grapher.rb +17 -0
- data/lib/metric_fu/metrics/rcov/rcov_grapher.rb +1 -0
- data/lib/metric_fu/metrics/rcov/rcov_hotspot.rb +28 -16
- data/lib/metric_fu/metrics/reek/reek_bluff_grapher.rb +20 -0
- data/lib/metric_fu/metrics/reek/reek_gchart_grapher.rb +25 -0
- data/lib/metric_fu/metrics/reek/reek_grapher.rb +1 -0
- data/lib/metric_fu/metrics/reek/reek_hotspot.rb +16 -1
- data/lib/metric_fu/metrics/roodi/roodi_bluff_grapher.rb +15 -0
- data/lib/metric_fu/metrics/roodi/roodi_gchart_grapher.rb +17 -0
- data/lib/metric_fu/metrics/roodi/roodi_grapher.rb +1 -0
- data/lib/metric_fu/metrics/roodi/roodi_hotspot.rb +16 -1
- data/lib/metric_fu/metrics/saikuro/saikuro_hotspot.rb +13 -1
- data/lib/metric_fu/metrics/stats/stats_bluff_grapher.rb +16 -0
- data/lib/metric_fu/metrics/stats/stats_gchart_grapher.rb +20 -0
- data/lib/metric_fu/metrics/stats/stats_grapher.rb +1 -0
- data/lib/metric_fu/metrics/stats/stats_hotspot.rb +1 -1
- data/lib/metric_fu/reporting/graphs/engines/bluff.rb +0 -114
- data/lib/metric_fu/reporting/graphs/engines/gchart.rb +0 -123
- data/lib/metric_fu/run.rb +1 -0
- data/lib/metric_fu/version.rb +1 -1
- data/metric_fu.gemspec +1 -0
- data/spec/metric_fu/metrics/cane/cane_spec.rb +17 -0
- data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +11 -0
- data/spec/metric_fu/metrics/hotspots/hotspots_spec.rb +7 -0
- 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
data/lib/metric_fu/version.rb
CHANGED
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
|
-
|
5
|
-
|
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-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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:
|
240
|
-
|
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:
|
246
|
-
|
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:
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
305
|
-
none: false
|
324
|
+
version_requirements: !ruby/object:Gem::Requirement
|
306
325
|
requirements:
|
307
|
-
- -
|
326
|
+
- - ">="
|
308
327
|
- !ruby/object:Gem::Version
|
309
|
-
version:
|
310
|
-
|
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:
|
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
|
-
|
321
|
-
none: false
|
342
|
+
version_requirements: !ruby/object:Gem::Requirement
|
322
343
|
requirements:
|
323
|
-
- -
|
344
|
+
- - ">="
|
324
345
|
- !ruby/object:Gem::Version
|
325
|
-
version:
|
326
|
-
|
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:
|
334
|
-
|
335
|
-
|
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
|