jscruggs-metric_fu 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +7 -0
- data/lib/base/configuration.rb +1 -21
- data/lib/generators/churn.rb +0 -1
- data/lib/generators/flay.rb +0 -1
- data/lib/generators/flog.rb +1 -1
- data/lib/graphs/flog_grapher.rb +18 -4
- data/lib/graphs/grapher.rb +2 -2
- data/lib/metric_fu.rb +1 -0
- data/spec/base/configuration_spec.rb +1 -48
- data/spec/graphs/flog_grapher_spec.rb +6 -5
- metadata +1 -1
data/HISTORY
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
=== MetricFu 1.1.3 / 2009-7-10
|
2
|
+
|
3
|
+
* MetricFu is now Ruby 1.9x compatible
|
4
|
+
* Removed the check for deprecated ways of configuring metric_fu as the tests were causing Ruby 1.9x problems and it's been forever since they were supported.
|
5
|
+
* Removed total flog score from graph (which will always go up and so doesn't mean much) and replacing it with top_five_percent_average which is an average of the worst 5 percent of your methods.
|
6
|
+
* Sort Flog by highest score in the class which I feel is more important than the total flog flog score.
|
7
|
+
|
1
8
|
=== MetricFu 1.1.2 / 2009-7-09
|
2
9
|
|
3
10
|
* Removed dependency on gruff and rmagick (unless the user wants graphs, of course).
|
data/lib/base/configuration.rb
CHANGED
@@ -51,7 +51,6 @@ module MetricFu
|
|
51
51
|
class Configuration
|
52
52
|
|
53
53
|
def initialize #:nodoc:#
|
54
|
-
warn_about_deprecated_config_options
|
55
54
|
reset
|
56
55
|
add_attr_accessors_to_self
|
57
56
|
add_class_methods_to_metric_fu
|
@@ -82,25 +81,6 @@ module MetricFu
|
|
82
81
|
end
|
83
82
|
end
|
84
83
|
|
85
|
-
# Check if certain constants that are deprecated have been
|
86
|
-
# assigned. If so, warn the user about them, and the
|
87
|
-
# fact that they will have no effect.
|
88
|
-
def warn_about_deprecated_config_options
|
89
|
-
if defined?(::MetricFu::CHURN_OPTIONS)
|
90
|
-
raise("Use config.churn instead of MetricFu::CHURN_OPTIONS")
|
91
|
-
end
|
92
|
-
if defined?(::MetricFu::DIRECTORIES_TO_FLOG)
|
93
|
-
raise("Use config.flog[:dirs_to_flog] "+
|
94
|
-
"instead of MetricFu::DIRECTORIES_TO_FLOG")
|
95
|
-
end
|
96
|
-
if defined?(::MetricFu::SAIKURO_OPTIONS)
|
97
|
-
raise("Use config.saikuro instead of MetricFu::SAIKURO_OPTIONS")
|
98
|
-
end
|
99
|
-
if defined?(SAIKURO_OPTIONS)
|
100
|
-
raise("Use config.saikuro instead of SAIKURO_OPTIONS")
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
84
|
# This allows us to have a nice syntax like:
|
105
85
|
#
|
106
86
|
# MetricFu.run do |config|
|
@@ -197,7 +177,7 @@ module MetricFu
|
|
197
177
|
end
|
198
178
|
|
199
179
|
def platform #:nodoc:
|
200
|
-
return
|
180
|
+
return RUBY_PLATFORM
|
201
181
|
end
|
202
182
|
|
203
183
|
def is_cruise_control_rb?
|
data/lib/generators/churn.rb
CHANGED
data/lib/generators/flay.rb
CHANGED
data/lib/generators/flog.rb
CHANGED
@@ -62,7 +62,7 @@ module MetricFu
|
|
62
62
|
def to_h
|
63
63
|
number_of_methods = @pages.inject(0) {|count, page| count += page.scanned_methods.size}
|
64
64
|
total_flog_score = @pages.inject(0) {|total, page| total += page.score}
|
65
|
-
sorted_pages = @pages.sort_by {|page| page.
|
65
|
+
sorted_pages = @pages.sort_by {|page| page.highest_score }.reverse
|
66
66
|
{:flog => { :total => total_flog_score,
|
67
67
|
:average => average_score(total_flog_score, number_of_methods),
|
68
68
|
:pages => sorted_pages.map {|page| page.to_h}}}
|
data/lib/graphs/flog_grapher.rb
CHANGED
@@ -2,17 +2,17 @@ module MetricFu
|
|
2
2
|
|
3
3
|
class FlogGrapher < Grapher
|
4
4
|
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :flog_average, :labels, :top_five_percent_average
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
super
|
9
|
-
self.flog_total = []
|
10
9
|
self.flog_average = []
|
11
10
|
self.labels = {}
|
11
|
+
self.top_five_percent_average =[]
|
12
12
|
end
|
13
13
|
|
14
14
|
def get_metrics(metrics, date)
|
15
|
-
self.
|
15
|
+
self.top_five_percent_average.push(calc_top_five_percent_average(metrics))
|
16
16
|
self.flog_average.push(metrics[:flog][:average])
|
17
17
|
self.labels.update( { self.labels.size => date })
|
18
18
|
end
|
@@ -22,7 +22,7 @@ module MetricFu
|
|
22
22
|
g.title = "Flog: code complexity"
|
23
23
|
g.theme = MetricFu.graph_theme
|
24
24
|
g.font = MetricFu.graph_font
|
25
|
-
g.data('
|
25
|
+
g.data('top five percent average', self.top_five_percent_average)
|
26
26
|
g.data('flog average', self.flog_average)
|
27
27
|
g.labels = self.labels
|
28
28
|
g.title_font_size = MetricFu.graph_title_font_size
|
@@ -32,6 +32,20 @@ module MetricFu
|
|
32
32
|
g.write(File.join(MetricFu.output_directory, 'flog.png'))
|
33
33
|
end
|
34
34
|
|
35
|
+
private
|
36
|
+
|
37
|
+
def calc_top_five_percent_average(metrics)
|
38
|
+
methods = metrics[:flog][:pages].inject([]) {|methods, page| methods << page[:scanned_methods]}
|
39
|
+
methods.flatten!
|
40
|
+
|
41
|
+
methods = methods.sort_by {|method| method[:score]}.reverse
|
42
|
+
|
43
|
+
number_of_methods_that_is_five_percent = (methods.size * 0.05).ceil
|
44
|
+
|
45
|
+
total_for_five_percent = methods[0...number_of_methods_that_is_five_percent].inject(0) {|total, method| total += method[:score]}
|
46
|
+
total_for_five_percent / number_of_methods_that_is_five_percent.to_f
|
47
|
+
end
|
48
|
+
|
35
49
|
end
|
36
50
|
|
37
51
|
end
|
data/lib/graphs/grapher.rb
CHANGED
@@ -8,8 +8,8 @@ module MetricFu
|
|
8
8
|
require 'gruff'
|
9
9
|
rescue LoadError
|
10
10
|
puts "#"*99 + "\n" +
|
11
|
-
"If you want to use metric_fu's graphing features then you'll need to install the gems
|
12
|
-
"(and rmagick requires ImageMagick). "+
|
11
|
+
"If you want to use metric_fu's graphing features then you'll need to install the gems " +
|
12
|
+
"'topfunky-gruff' (or 'umang-gruff' if you use 1.9x) and 'rmagick' (and rmagick requires ImageMagick). "+
|
13
13
|
"If you don't want to deal with that, then make sure you set config.graphs = [] (see the metric_fu's homepage for more details) "+
|
14
14
|
"to indicate that you don't want graphing." +
|
15
15
|
"\n" + "#"*99
|
data/lib/metric_fu.rb
CHANGED
@@ -30,53 +30,6 @@ describe MetricFu::Configuration do
|
|
30
30
|
@config.instance_variable_get(:@metric_fu_root_directory)
|
31
31
|
end
|
32
32
|
|
33
|
-
describe '#warn_about_deprecated_config_options' do
|
34
|
-
|
35
|
-
def get_new_config_and_raise_runtime_error
|
36
|
-
lambda { get_new_config }.should raise_error
|
37
|
-
end
|
38
|
-
|
39
|
-
describe 'when ::MetricFu::CHURN_OPTIONS is present' do
|
40
|
-
before(:each) { ::MetricFu::CHURN_OPTIONS = 'option' }
|
41
|
-
after(:each) { ::MetricFu.send(:remove_const, 'CHURN_OPTIONS') }
|
42
|
-
|
43
|
-
it 'should raise a RuntimeError with "Use config.churn '+
|
44
|
-
'instead of MetricFu::CHURN_OPTIONS"' do
|
45
|
-
get_new_config_and_raise_runtime_error
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe 'when ::MetricFu::DIRECTORIES_TO_FLOG is present' do
|
50
|
-
before(:each) { ::MetricFu::DIRECTORIES_TO_FLOG = 'option' }
|
51
|
-
after(:each) { ::MetricFu.send(:remove_const,'DIRECTORIES_TO_FLOG')}
|
52
|
-
|
53
|
-
it 'should raise a RuntimeError with "Use config.flog '+
|
54
|
-
'[:dirs_to_flog] instead of MetricFu::DIRECTORIES_TO_FLOG' do
|
55
|
-
get_new_config_and_raise_runtime_error
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe 'when ::MetricFu::SAIKURO_OPTIONS is present' do
|
60
|
-
before(:each) { ::MetricFu::SAIKURO_OPTIONS = 'option' }
|
61
|
-
after(:each) { ::MetricFu.send(:remove_const,'SAIKURO_OPTIONS')}
|
62
|
-
|
63
|
-
it 'should raise a RuntimeError with "Use config.saikuro '+
|
64
|
-
'instead of MetricFu::SAIKURO_OPTIONS' do
|
65
|
-
get_new_config_and_raise_runtime_error
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe 'when SAIKURO_OPTIONS is present' do
|
70
|
-
before(:each) { SAIKURO_OPTIONS = 'option' }
|
71
|
-
after(:each) { Object.send(:remove_const,'SAIKURO_OPTIONS')}
|
72
|
-
|
73
|
-
it 'should raise a RuntimeError with "Use config.saikuro '+
|
74
|
-
'instead of SAIKURO_OPTIONS' do
|
75
|
-
get_new_config_and_raise_runtime_error
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
33
|
describe "#reset" do
|
81
34
|
|
82
35
|
before(:each) { get_new_config }
|
@@ -318,7 +271,7 @@ describe MetricFu::Configuration do
|
|
318
271
|
before(:each) { get_new_config }
|
319
272
|
|
320
273
|
it 'should return the value of the PLATFORM constant' do
|
321
|
-
this_platform =
|
274
|
+
this_platform = RUBY_PLATFORM
|
322
275
|
@config.platform.should == this_platform
|
323
276
|
end
|
324
277
|
end
|
@@ -7,16 +7,16 @@ describe MetricFu::FlogGrapher do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should respond to flog_total, flog_average and labels" do
|
10
|
-
@flog_grapher.should respond_to(:flog_total)
|
11
10
|
@flog_grapher.should respond_to(:flog_average)
|
12
11
|
@flog_grapher.should respond_to(:labels)
|
12
|
+
@flog_grapher.should respond_to(:top_five_percent_average)
|
13
13
|
end
|
14
14
|
|
15
15
|
describe "responding to #initialize" do
|
16
|
-
it "should initialize
|
17
|
-
@flog_grapher.flog_total.should == []
|
16
|
+
it "should initialize top_five_percent_average, flog_average and labels" do
|
18
17
|
@flog_grapher.flog_average.should == []
|
19
18
|
@flog_grapher.labels.should == {}
|
19
|
+
@flog_grapher.top_five_percent_average.should == []
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -26,8 +26,9 @@ describe MetricFu::FlogGrapher do
|
|
26
26
|
@date = "01022003"
|
27
27
|
end
|
28
28
|
|
29
|
-
it "should push
|
30
|
-
|
29
|
+
it "should push to top_five_percent_average" do
|
30
|
+
average = (73.6 + 68.5 + 66.1 + 46.6 + 44.8 + 44.1 + 41.2 + 36.0) / 8.0
|
31
|
+
@flog_grapher.top_five_percent_average.should_receive(:push).with(average)
|
31
32
|
@flog_grapher.get_metrics(@metrics, @date)
|
32
33
|
end
|
33
34
|
|