p8-metric_fu 0.9.0.3 → 0.9.0.4

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.
@@ -1,6 +1,5 @@
1
1
  History.txt
2
2
  Manifest.txt
3
- metric_fu-0.7.gem
4
3
  metric_fu.gemspec
5
4
  MIT-LICENSE
6
5
  Rakefile
@@ -9,11 +8,11 @@ TODO.txt
9
8
  lib/metric_fu.rb
10
9
  lib/metric_fu/base.rb
11
10
  lib/metric_fu/churn.rb
12
- lib/metric_fu/flay_reporter.rb
13
- lib/metric_fu/flog_reporter.rb
11
+ lib/metric_fu/flay.rb
12
+ lib/metric_fu/flog.rb
13
+ lib/metric_fu/reek.rb
14
+ lib/metric_fu/roodi.rb
14
15
  lib/metric_fu/md5_tracker.rb
15
- lib/metric_fu/saikuro/saikuro.rb
16
- lib/metric_fu/saikuro/SAIKURO_README
17
16
  lib/tasks/churn.rake
18
17
  lib/tasks/coverage.rake
19
18
  lib/tasks/flog.rake
@@ -21,5 +20,13 @@ lib/tasks/metric_fu.rake
21
20
  lib/tasks/metric_fu.rb
22
21
  lib/tasks/saikuro.rake
23
22
  lib/tasks/stats.rake
24
- test/test_helper.rb
25
- test/test_md5_tracker.rb
23
+ spec/base_spec.rb
24
+ spec/churn_spec.rb
25
+ spec/config_spec.rb
26
+ spec/flay_spec.rb
27
+ spec/flog_spec.rb
28
+ spec/md5_tracker_spec.rb
29
+ spec/reek_spec.rb
30
+ spec/spec_helper.rb
31
+ vendor/saikuro/saikuro.rb
32
+ vendor/saikuro/SAIKURO_README
@@ -1,31 +1,13 @@
1
1
  require 'erb'
2
2
  module MetricFu
3
3
 
4
- TEMPLATE_DIR = File.join(File.dirname(__FILE__), '..', 'templates')
5
- BASE_DIRECTORY = ENV['CC_BUILD_ARTIFACTS'] || 'tmp/metric_fu'
6
-
7
4
  class << self
8
5
  # The Configuration instance used to configure the Rails environment
9
6
  def configuration
10
7
  @@configuration ||= Configuration.new
11
8
  end
12
9
 
13
- def churn
14
- configuration.churn
15
- end
16
-
17
- def coverage
18
- configuration.coverage
19
- end
20
-
21
- def flay
22
- configuration.flay
23
- end
24
-
25
- def flog
26
- configuration.flog
27
- end
28
-
10
+ # The metrics configured for this project
29
11
  def metrics
30
12
  configuration.metrics
31
13
  end
@@ -33,18 +15,6 @@ module MetricFu
33
15
  def open_in_browser?
34
16
  configuration.general[:open_in_browser] && PLATFORM['darwin'] && !run_by_cruise_control?
35
17
  end
36
-
37
- def saikuro
38
- configuration.saikuro
39
- end
40
-
41
- def reek
42
- configuration.reek
43
- end
44
-
45
- def roodi
46
- configuration.roodi
47
- end
48
18
 
49
19
  def run_by_cruise_control?
50
20
  !!ENV['CC_BUILD_ARTIFACTS']
@@ -78,12 +48,22 @@ module MetricFu
78
48
  # Churning requires a subversion or git repo
79
49
  metrics << :churn if can_churn?
80
50
  metrics.sort{|v1, v2| v1.to_s <=> v2.to_s}
81
- end
51
+ end
82
52
 
83
53
  end
84
54
 
55
+ default_metrics.each do |meth|
56
+ method = <<-EOF
57
+ def self.#{meth}
58
+ configuration.#{meth}
59
+ end
60
+ EOF
61
+ class_eval(method)
62
+ end
63
+
85
64
  class Configuration
86
- attr_accessor :churn, :coverage, :flay, :flog, :metrics, :reek, :roodi, :saikuro, :general
65
+ attr_accessor :churn, :coverage, :flay, :flog, :metrics, :reek, :roodi, :saikuro,
66
+ :general, :template_dir, :base_directory
87
67
  def initialize
88
68
  raise "Use config.churn instead of MetricFu::CHURN_OPTIONS" if defined? ::MetricFu::CHURN_OPTIONS
89
69
  raise "Use config.flog[:dirs_to_flog] instead of MetricFu::DIRECTORIES_TO_FLOG" if defined? ::MetricFu::DIRECTORIES_TO_FLOG
@@ -106,8 +86,10 @@ module MetricFu
106
86
  @flog = { :dirs_to_flog => MetricFu.code_dirs}
107
87
  @reek = { :dirs_to_reek => MetricFu.code_dirs}
108
88
  @roodi = { :dirs_to_roodi => MetricFu.code_dirs}
109
- @metrics = MetricFu.default_metrics
89
+ @metrics = MetricFu.default_metrics
110
90
  @saikuro = {}
91
+ @template_dir = File.join(File.dirname(__FILE__), '..', 'templates')
92
+ @base_directory = ENV['CC_BUILD_ARTIFACTS'] || 'tmp/metric_fu'
111
93
  end
112
94
 
113
95
  def saikuro=(options)
@@ -115,7 +97,48 @@ module MetricFu
115
97
  @saikuro = options
116
98
  end
117
99
  end
118
-
100
+
101
+ ########################
102
+ # Template methods
103
+ module TemplateHelpers
104
+
105
+ def inline_css(css)
106
+ open(File.join(MetricFu.configuration.template_dir, css)) { |f| f.read }
107
+ end
108
+
109
+ def link_to_filename(name, line = nil)
110
+ if MetricFu.run_by_cruise_control?
111
+ cc_link_to_filename(name, line)
112
+ else
113
+ system_link_to_filename(name, line)
114
+ end
115
+ end
116
+
117
+ def cycle(first_value, second_value, iteration)
118
+ return first_value if iteration % 2 == 0
119
+ return second_value
120
+ end
121
+
122
+ private
123
+ def cc_link_to_filename(name, line = nil)
124
+ if MetricFu.configuration.general[:url_prefix]
125
+ MetricFu.configuration.general[:url_prefix] += '/' unless MetricFu.configuration.general[:url_prefix] =~ /\/$/
126
+ %{<a href="#{MetricFu.configuration.general[:url_prefix]}#{name}?line=#{line}##{line}">#{name}</a>}
127
+ else
128
+ %{"#{name}"} # No link for cruise control without a prefix
129
+ end
130
+ end
131
+
132
+ def system_link_to_filename(name, line = nil)
133
+ filename = File.expand_path(name)
134
+ if PLATFORM['darwin']
135
+ %{<a href="txmt://open/?url=file://#{filename}&line=#{line}">#{name}</a>}
136
+ else
137
+ %{<a href="file://#{filename}">#{name}</a>}
138
+ end
139
+ end
140
+ end
141
+
119
142
  module Base
120
143
 
121
144
  ######################################################################
@@ -123,12 +146,14 @@ module MetricFu
123
146
  #
124
147
  class Generator
125
148
 
149
+ include MetricFu::TemplateHelpers
150
+
126
151
  def initialize(options={})
127
152
  @base_dir = self.class.metric_dir
128
153
  end
129
154
 
130
155
  def self.metric_dir
131
- File.join(BASE_DIRECTORY, template_name)
156
+ File.join(MetricFu.configuration.base_directory, template_name)
132
157
  end
133
158
 
134
159
  def self.template_name
@@ -160,47 +185,9 @@ module MetricFu
160
185
  end
161
186
 
162
187
  def template_file
163
- File.join(MetricFu::TEMPLATE_DIR, "#{template_name}.html.erb")
188
+ File.join(MetricFu.configuration.template_dir, "#{template_name}.html.erb")
164
189
  end
165
190
 
166
- ########################
167
- # Template methods
168
-
169
- def inline_css(css)
170
- open(File.join(MetricFu::TEMPLATE_DIR, css)) { |f| f.read }
171
- end
172
-
173
- def link_to_filename(name, line = nil)
174
- if MetricFu.run_by_cruise_control?
175
- cc_link_to_filename(name, line)
176
- else
177
- system_link_to_filename(name, line)
178
- end
179
- end
180
-
181
- def cycle(first_value, second_value, iteration)
182
- return first_value if iteration % 2 == 0
183
- return second_value
184
- end
185
-
186
- private
187
- def cc_link_to_filename(name, line = nil)
188
- if MetricFu.configuration.general[:url_prefix]
189
- MetricFu.configuration.general[:url_prefix] += '/' unless MetricFu.configuration.general[:url_prefix] =~ /\/$/
190
- %{<a href="#{MetricFu.configuration.general[:url_prefix]}#{name}?line=#{line}##{line}">#{name}</a>}
191
- else
192
- %{"#{name}"} # No link for cruise control without a prefix
193
- end
194
- end
195
-
196
- def system_link_to_filename(name, line = nil)
197
- filename = File.expand_path(name)
198
- if PLATFORM['darwin']
199
- %{<a href="txmt://open/?url=file://#{filename}&line=#{line}">#{name}</a>}
200
- else
201
- %{<a href="file://#{filename}">#{name}</a>}
202
- end
203
- end
204
191
  end
205
192
  end
206
193
 
@@ -8,7 +8,7 @@ module MetricFu
8
8
  class Churn < Base::Generator
9
9
 
10
10
  def initialize(options={})
11
- @base_dir = File.join(MetricFu::BASE_DIRECTORY, template_name)
11
+ @base_dir = File.join(MetricFu.configuration.base_directory, template_name)
12
12
  if MetricFu.uses_git?
13
13
  @source_control = Git.new(options[:start_date])
14
14
  elsif MetricFu.uses_svn?
@@ -7,9 +7,9 @@ begin
7
7
 
8
8
  namespace :metrics do
9
9
 
10
- COVERAGE_DIR = File.join(MetricFu::BASE_DIRECTORY, 'coverage')
11
- COVERAGE_DATA_FILE = File.join(MetricFu::BASE_DIRECTORY, 'coverage.data')
12
- SPEC_HTML_FILE = File.join(MetricFu::BASE_DIRECTORY, 'specs.html')
10
+ COVERAGE_DIR = File.join(MetricFu.configuration.base_directory, 'coverage')
11
+ COVERAGE_DATA_FILE = File.join(MetricFu.configuration.base_directory, 'coverage.data')
12
+ SPEC_HTML_FILE = File.join(MetricFu.configuration.base_directory, 'specs.html')
13
13
 
14
14
  namespace :coverage do
15
15
  rcov_output = COVERAGE_DIR
@@ -19,7 +19,7 @@ begin
19
19
 
20
20
  desc "RCov task to generate report"
21
21
  Rcov::RcovTask.new(:do => :clean) do |t|
22
- FileUtils.mkdir_p(MetricFu::BASE_DIRECTORY) unless File.directory?(MetricFu::BASE_DIRECTORY)
22
+ FileUtils.mkdir_p(MetricFu.configuration.base_directory) unless File.directory?(MetricFu.configuration.base_directory)
23
23
  t.test_files = FileList[*MetricFu.coverage[:test_files]]
24
24
  t.rcov_opts = MetricFu.coverage[:rcov_opts]
25
25
  t.output_dir = COVERAGE_DIR
@@ -29,7 +29,7 @@ begin
29
29
  # TODO not sure what this improves but it requires the diff-lcs gem
30
30
  # http://github.com/indirect/metric_fu/commit/b9c1cf75f09d5b531b388cd01661eb16b5126968#diff-1
31
31
  # Spec::Rake::SpecTask.new(:do => :clean) do |t|
32
- # FileUtils.mkdir_p(MetricFu::BASE_DIRECTORY) unless File.directory?(MetricFu::BASE_DIRECTORY)
32
+ # FileUtils.mkdir_p(MetricFu.configuration.base_directory) unless File.directory?(MetricFu.configuration.base_directory)
33
33
  # t.ruby_opts = ['-rtest/unit']
34
34
  # t.spec_files = FileList['test/**/*_test.rb', 'spec/**/*spec.rb']
35
35
  # t.spec_opts = ["--format", "html:#{SPEC_HTML_FILE}", "--diff"]
@@ -1,6 +1,6 @@
1
1
  namespace :metrics do
2
2
 
3
- RAILROAD_DIR = File.join(MetricFu::BASE_DIRECTORY, 'railroad')
3
+ RAILROAD_DIR = File.join(MetricFu.configuration.base_directory, 'railroad')
4
4
  RAILROAD_FILE = File.join(RAILROAD_DIR, 'index.html')
5
5
 
6
6
  task :railroad => ['railroad:all'] do
@@ -16,21 +16,21 @@ namespace :metrics do
16
16
  desc "Create a railroad models report"
17
17
  task :models do
18
18
  #mkdir_p(RAILROAD_DIR) unless File.directory?(RAILROAD_DIR)
19
- `railroad -M -a -m -l -v | neato -Tpng > #{File.join(MetricFu::BASE_DIRECTORY,'model-diagram.png')}`
19
+ `railroad -M -a -m -l -v | neato -Tpng > #{File.join(MetricFu.configuration.base_directory,'model-diagram.png')}`
20
20
  #`echo "<a href=\"railroad/models.png\">Model diagram</a><br />" >> #{RAILROAD_FILE}`
21
21
  end
22
22
 
23
23
  desc "Create a railroad controllers report"
24
24
  task :controllers do
25
25
  #mkdir_p(RAILROAD_DIR) unless File.directory?(RAILROAD_DIR)
26
- `railroad -C -l -v | neato -Tpng > #{File.join(MetricFu::BASE_DIRECTORY,'controller-diagram.png')}`
26
+ `railroad -C -l -v | neato -Tpng > #{File.join(MetricFu.configuration.base_directory,'controller-diagram.png')}`
27
27
  #`echo "<a href=\"railroad/controllers.png\">Controller diagram</a><br />" >> #{RAILROAD_FILE}`
28
28
  end
29
29
 
30
30
  desc "Create a railroad acts_as_state_machine report"
31
31
  task :aasm do
32
32
  #mkdir_p(RAILROAD_DIR) unless File.directory?(RAILROAD_DIR)
33
- `railroad -A -l -v | neato -Tpng > #{File.join(MetricFu::BASE_DIRECTORY,'aasm-diagram.png')}`
33
+ `railroad -A -l -v | neato -Tpng > #{File.join(MetricFu.configuration.base_directory,'aasm-diagram.png')}`
34
34
  #`echo "<a href=\"railroad/aasm.png\">State machine diagram</a><br />" >> #{RAILROAD_FILE}`
35
35
  end
36
36
 
@@ -4,8 +4,8 @@ namespace :metrics do
4
4
 
5
5
  desc "A cyclomatic complexity report using Saikuro"
6
6
  task :saikuro do
7
- SAIKURO_DIR = File.join(MetricFu::BASE_DIRECTORY, 'saikuro')
8
- SAIKURO = File.expand_path(File.join(File.dirname(__FILE__), '..', 'metric_fu', 'saikuro', 'saikuro.rb'))
7
+ SAIKURO_DIR = File.join(MetricFu.configuration.base_directory, 'saikuro')
8
+ SAIKURO = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'vendor', 'saikuro', 'saikuro.rb'))
9
9
 
10
10
  raise "SAIKURO_OPTIONS is now MetricFu::SAIKURO_OPTIONS" if defined?(SAIKURO_OPTIONS)
11
11
  options = { :output_directory => SAIKURO_DIR,
@@ -1,6 +1,6 @@
1
1
  namespace :metrics do
2
2
 
3
- STATS_DIR = File.join(MetricFu::BASE_DIRECTORY, 'stats')
3
+ STATS_DIR = File.join(MetricFu.configuration.base_directory, 'stats')
4
4
  STATS_FILE = File.join(STATS_DIR, 'index.html')
5
5
 
6
6
  desc "A stats report"
@@ -4,13 +4,13 @@ describe MetricFu::Base::Generator do
4
4
  describe "save_html" do
5
5
  it "should save to a index.html in the base_dir" do
6
6
  @generator = MetricFu::Base::Generator.new
7
- @generator.should_receive(:open).with("#{MetricFu::BASE_DIRECTORY}/generator/index.html", "w")
7
+ @generator.should_receive(:open).with("#{MetricFu.configuration.base_directory}/generator/index.html", "w")
8
8
  @generator.save_html("<html>")
9
9
  end
10
10
 
11
11
  it "should save to a custom.html to the base_dir if 'custom' is passed as name" do
12
12
  @generator = MetricFu::Base::Generator.new
13
- @generator.should_receive(:open).with("#{MetricFu::BASE_DIRECTORY}/generator/metric_fu/custom.html", "w")
13
+ @generator.should_receive(:open).with("#{MetricFu.configuration.base_directory}/generator/metric_fu/custom.html", "w")
14
14
  @generator.save_html("<html>", 'metric_fu/custom.html')
15
15
  end
16
16
  end
@@ -27,7 +27,7 @@ describe MetricFu::Base::Generator do
27
27
  describe "generate_html" do
28
28
  it "should create a new Generator and call generate_report on it" do
29
29
  @generator = MetricFu::Base::Generator.new
30
- @generator.should_receive(:open).with("#{MetricFu::BASE_DIRECTORY}/generator/index.html", "w")
30
+ @generator.should_receive(:open).with("#{MetricFu.configuration.base_directory}/generator/index.html", "w")
31
31
  @generator.should_receive(:generate_html).and_return('<html>')
32
32
  @generator.generate_report
33
33
  end
@@ -50,7 +50,7 @@ describe MetricFu::Base::Generator do
50
50
 
51
51
  describe "metric_dir" do
52
52
  it "should return tmp/metric_fu/{the class name in lowercase}" do
53
- MetricFu::Base::Generator.metric_dir.should == "#{MetricFu::BASE_DIRECTORY}/generator"
53
+ MetricFu::Base::Generator.metric_dir.should == "#{MetricFu.configuration.base_directory}/generator"
54
54
  end
55
55
  end
56
56
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: p8-metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.3
4
+ version: 0.9.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Scruggs
@@ -98,7 +98,6 @@ files:
98
98
  - lib/metric_fu/reek.rb
99
99
  - lib/metric_fu/roodi.rb
100
100
  - lib/metric_fu/md5_tracker.rb
101
- - lib/metric_fu/saikuro/saikuro.rb
102
101
  - lib/metric_fu.rb
103
102
  - lib/tasks/metric_fu.rb
104
103
  - lib/tasks/churn.rake
@@ -118,6 +117,7 @@ files:
118
117
  - lib/templates/flog_page.html.erb
119
118
  - lib/templates/reek.html.erb
120
119
  - lib/templates/roodi.html.erb
120
+ - vendor/saikuro/saikuro.rb
121
121
  - Manifest.txt
122
122
  has_rdoc: true
123
123
  homepage: http://metric-fu.rubyforge.org/