jscruggs-metric_fu 1.1.2 → 1.1.3
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/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
|
|