edouard-metric_fu 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/README +1 -1
  2. data/Rakefile +4 -4
  3. data/spec/base/configuration_spec.rb +1 -1
  4. data/spec/base/generator_spec.rb +0 -22
  5. data/spec/generators/churn_spec.rb +7 -7
  6. data/spec/generators/flay_spec.rb +0 -3
  7. data/spec/generators/flog_spec.rb +1 -9
  8. data/spec/generators/reek_spec.rb +0 -1
  9. data/spec/generators/saikuro_spec.rb +11 -21
  10. metadata +18 -56
  11. data/lib/base/base_template.rb +0 -134
  12. data/lib/base/configuration.rb +0 -207
  13. data/lib/base/generator.rb +0 -160
  14. data/lib/base/graph.rb +0 -37
  15. data/lib/base/md5_tracker.rb +0 -52
  16. data/lib/base/report.rb +0 -100
  17. data/lib/generators/churn.rb +0 -91
  18. data/lib/generators/flay.rb +0 -34
  19. data/lib/generators/flog.rb +0 -133
  20. data/lib/generators/rcov.rb +0 -87
  21. data/lib/generators/reek.rb +0 -37
  22. data/lib/generators/roodi.rb +0 -31
  23. data/lib/generators/saikuro.rb +0 -209
  24. data/lib/generators/stats.rb +0 -43
  25. data/lib/graphs/flay_grapher.rb +0 -34
  26. data/lib/graphs/flog_grapher.rb +0 -37
  27. data/lib/graphs/rcov_grapher.rb +0 -34
  28. data/lib/graphs/reek_grapher.rb +0 -44
  29. data/lib/graphs/roodi_grapher.rb +0 -34
  30. data/lib/metric_fu.rb +0 -24
  31. data/lib/templates/awesome/awesome_template.rb +0 -30
  32. data/lib/templates/awesome/churn.html.erb +0 -19
  33. data/lib/templates/awesome/default.css +0 -66
  34. data/lib/templates/awesome/flay.html.erb +0 -27
  35. data/lib/templates/awesome/flog.html.erb +0 -46
  36. data/lib/templates/awesome/index.html.erb +0 -28
  37. data/lib/templates/awesome/layout.html.erb +0 -27
  38. data/lib/templates/awesome/rcov.html.erb +0 -36
  39. data/lib/templates/awesome/reek.html.erb +0 -34
  40. data/lib/templates/awesome/roodi.html.erb +0 -21
  41. data/lib/templates/awesome/saikuro.html.erb +0 -71
  42. data/lib/templates/awesome/stats.html.erb +0 -41
  43. data/lib/templates/standard/churn.html.erb +0 -31
  44. data/lib/templates/standard/default.css +0 -64
  45. data/lib/templates/standard/flay.html.erb +0 -34
  46. data/lib/templates/standard/flog.html.erb +0 -53
  47. data/lib/templates/standard/index.html.erb +0 -38
  48. data/lib/templates/standard/rcov.html.erb +0 -43
  49. data/lib/templates/standard/reek.html.erb +0 -42
  50. data/lib/templates/standard/roodi.html.erb +0 -29
  51. data/lib/templates/standard/saikuro.html.erb +0 -84
  52. data/lib/templates/standard/standard_template.rb +0 -26
  53. data/lib/templates/standard/stats.html.erb +0 -55
  54. data/tasks/metric_fu.rake +0 -19
  55. data/tasks/railroad.rake +0 -39
  56. data/vendor/_fonts/monaco.ttf +0 -0
  57. data/vendor/saikuro/saikuro.rb +0 -1214
data/README CHANGED
@@ -1 +1 @@
1
- See http://metric-fu.rubyforge.org/ for documentation, or the HISTORY file for a change log.
1
+ See http://metric-fu.rubyforge.org/ for documentation, or the HISTORY file for a change log.
data/Rakefile CHANGED
@@ -20,8 +20,8 @@ namespace :metrics do
20
20
  task :all do
21
21
  MetricFu.metrics.each {|metric| MetricFu.report.add(metric) }
22
22
  MetricFu.report.save_output(MetricFu.report.to_yaml,
23
- MetricFu.data_directory,
24
- "#{Time.now.strftime("%Y%m%d")}.yml")
23
+ MetricFu.base_directory,
24
+ 'report.yml')
25
25
  MetricFu.report.save_templatized_report
26
26
  if MetricFu.report.open_in_browser?
27
27
  MetricFu.report.show_in_browser(MetricFu.output_directory)
@@ -34,8 +34,8 @@ namespace :metrics do
34
34
 
35
35
  MetricFu.report.add(metric)
36
36
  MetricFu.report.save_output(MetricFu.report.to_yaml,
37
- MetricFu.data_directory,
38
- "#{Time.now.strftime("%Y%m%d")}.yml")
37
+ MetricFu.base_directory,
38
+ 'report.yml')
39
39
  MetricFu.report.save_templatized_report
40
40
  if MetricFu.report.open_in_browser?
41
41
  MetricFu.report.show_in_browser(MetricFu.output_directory)
@@ -129,7 +129,7 @@ describe MetricFu::Configuration do
129
129
  end
130
130
 
131
131
  it 'should set @template_class to StandardTemplate' do
132
- template_class.should == AwesomeTemplate
132
+ template_class.should == StandardTemplate
133
133
  end
134
134
 
135
135
  it 'should set @flay to {:dirs_to_flay => @code_dirs}' do
@@ -154,28 +154,6 @@ describe MetricFu::Generator do
154
154
  @concrete_class.should_receive(:to_h)
155
155
  @concrete_class.generate_report
156
156
  end
157
-
158
- it "should raise error if the concrete class is missing a required dependency" do
159
- concrete_class_with_missing_gem = Class.new(MetricFu::Generator) do
160
- def self.verify_dependencies!
161
- raise 'gem install something # if you want these tasks'
162
- end
163
- end
164
- lambda { concrete_class_with_missing_gem.generate_report }.should raise_error("gem install something # if you want these tasks")
165
- end
166
157
 
167
158
  end
168
-
169
- describe "instantiation" do
170
- it "should fail is dependencies not verified" do
171
- ConcreteClass.should_receive(:verify_dependencies!).and_raise("Missing a required gem. Please 'gem install something'")
172
- lambda { ConcreteClass.new() }.should raise_error("Missing a required gem. Please 'gem install something'")
173
- end
174
-
175
- it "should succeed when dependencies verified" do
176
- ConcreteClass.should_receive(:verify_dependencies!).and_return(true)
177
- ConcreteClass.new()
178
- end
179
- end
180
-
181
159
  end
@@ -8,20 +8,20 @@ describe Churn do
8
8
  end
9
9
 
10
10
  it "should setup git if .git exits" do
11
- MetricFu::Churn.should_receive(:system).and_return(true)
11
+ File.should_receive(:exist?).with(".git").and_return(true)
12
12
  Churn::Git.should_receive(:new)
13
13
  MetricFu::Churn.new
14
14
  end
15
15
 
16
16
  it "should setup git if .svn exits" do
17
- MetricFu::Churn.should_receive(:system).and_return(false)
17
+ File.should_receive(:exist?).with(".git").and_return(false)
18
18
  File.should_receive(:exist?).with(".svn").and_return(true)
19
19
  Churn::Svn.should_receive(:new)
20
20
  MetricFu::Churn.new()
21
21
  end
22
22
 
23
23
  it "should raise an error if not .svn or .git" do
24
- MetricFu::Churn.should_receive(:system).and_return(false)
24
+ File.stub!(:exist?).and_return(false)
25
25
  lambda{MetricFu::Churn.new()}.should raise_error(Exception)
26
26
  end
27
27
  end
@@ -30,7 +30,7 @@ describe Churn do
30
30
  before :each do
31
31
  MetricFu::Configuration.run {|config| config.churn = {:minimum_churn_count => 2} }
32
32
  File.stub!(:directory?).and_return(true)
33
- MetricFu::Churn.should_receive(:system).and_return(true)
33
+ File.should_receive(:exist?).with(".git").and_return(true)
34
34
  @git = Churn::Git.new
35
35
  Churn::Git.should_receive(:new).and_return(@git)
36
36
  @lines = <<-HERE.gsub(/^\s*/, "")
@@ -73,7 +73,7 @@ describe Churn do
73
73
  before :each do
74
74
  MetricFu::Configuration.run{|config| config.churn = {:minimum_churn_count => 2} }
75
75
  File.stub!(:directory?).and_return(true)
76
- MetricFu::Churn.should_receive(:system).and_return(false)
76
+ File.should_receive(:exist?).with(".git").and_return(false)
77
77
  File.should_receive(:exist?).with(".svn").and_return(true)
78
78
  @svn = Churn::Svn.new
79
79
  Churn::Svn.should_receive(:new).and_return(@svn)
@@ -120,7 +120,7 @@ describe Churn do
120
120
  before :each do
121
121
  MetricFu::Configuration.run {}
122
122
  File.stub!(:directory?).and_return(true)
123
- MetricFu::Churn.should_receive(:system).and_return(true)
123
+ File.should_receive(:exist?).with(".git").and_return(true)
124
124
  @changes = {"lib/generators/flog.rb"=>2, "lib/metric_fu.rb"=>3}
125
125
  end
126
126
 
@@ -139,7 +139,7 @@ describe Churn do
139
139
  before :each do
140
140
  MetricFu::Configuration.run {}
141
141
  File.stub!(:directory?).and_return(true)
142
- MetricFu::Churn.should_receive(:system).and_return(true)
142
+ File.should_receive(:exist?).with(".git").and_return(true)
143
143
  end
144
144
 
145
145
  it "should put the changes into a hash" do
@@ -1,9 +1,6 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper.rb'
2
2
 
3
3
  describe Flay do
4
- before :each do
5
- MetricFu::Flay.stub!(:verify_dependencies!).and_return(true)
6
- end
7
4
  describe "emit method" do
8
5
  before :each do
9
6
  MetricFu::Configuration.run {|config| config.flay = { :dirs_to_flay => ['app', 'lib'] } }
@@ -123,7 +123,6 @@ describe Flog do
123
123
  1.2: assignment
124
124
  1.2: all
125
125
  HERE
126
- MetricFu::Flog.stub!(:verify_dependencies!).and_return(true)
127
126
  end
128
127
 
129
128
  describe "parse method" do
@@ -169,13 +168,6 @@ describe Flog do
169
168
  flog_page = flog.parse(text)
170
169
  flog_page.scanned_methods.first.name.should == "SomeNamespace::UsersController#create"
171
170
  end
172
-
173
- it "should parse empty flog files" do
174
- text = ""
175
- flog = MetricFu::Flog.new('base_dir')
176
- flog_page = flog.parse(text)
177
- flog_page.should be_nil
178
- end
179
171
  end
180
172
 
181
173
  describe "to_h function" do
@@ -205,4 +197,4 @@ describe Flog do
205
197
  @flog_hash[:flog][:pages].first[:path].should == "/app/controllers/user_controller.rb"
206
198
  end
207
199
  end
208
- end
200
+ end
@@ -3,7 +3,6 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
  describe Reek do
4
4
  describe "analyze method" do
5
5
  before :each do
6
- MetricFu::Reek.stub!(:verify_dependencies!).and_return(true)
7
6
  @lines = <<-HERE
8
7
  "app/controllers/activity_reports_controller.rb" -- 4 warnings:
9
8
  ActivityReportsController#authorize_user calls current_user.primary_site_ids multiple times (Duplication)
@@ -1,5 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
-
2
+
3
3
  describe Saikuro do
4
4
  describe "to_h method" do
5
5
  before :all do
@@ -10,54 +10,44 @@ describe Saikuro do
10
10
  saikuro.analyze
11
11
  @output = saikuro.to_h
12
12
  end
13
-
13
+
14
14
  it "should find the filename of a file" do
15
15
  @output[:saikuro][:files].first[:filename].should == 'users_controller.rb'
16
16
  end
17
-
17
+
18
18
  it "should find the name of the classes" do
19
19
  @output[:saikuro][:classes].first[:name].should == "UsersController"
20
20
  @output[:saikuro][:classes][1][:name].should == "SessionsController"
21
21
  end
22
-
22
+
23
23
  it "should put the most complex method first" do
24
24
  @output[:saikuro][:methods].first[:name].should == "UsersController#create"
25
25
  @output[:saikuro][:methods].first[:complexity].should == 4
26
26
  end
27
-
27
+
28
28
  it "should find the complexity of a method" do
29
29
  @output[:saikuro][:methods].first[:complexity].should == 4
30
30
  end
31
-
31
+
32
32
  it "should find the lines of a method" do
33
33
  @output[:saikuro][:methods].first[:lines].should == 15
34
34
  end
35
35
  end
36
-
36
+
37
37
  describe "emit method" do
38
38
  it "should format the directories" do
39
39
  MetricFu::Configuration.run {}
40
40
  File.stub!(:directory?).and_return(true)
41
41
  saikuro = MetricFu::Saikuro.new
42
-
42
+
43
43
  MetricFu.saikuro[:input_directory] = ["app", "lib"]
44
-
44
+
45
45
  File.stub!(:dirname).and_return('..')
46
46
  File.stub!(:expand_path)
47
-
47
+
48
48
  saikuro.should_receive(:sh).with(/"app \| lib"/)
49
-
49
+
50
50
  saikuro.emit
51
51
  end
52
52
  end
53
-
54
- describe Saikuro::SFile do
55
- describe "getting elements from a Saikuro result file" do
56
- it "should parse nested START/END sections" do
57
- path = File.join(File.dirname(__FILE__), "..", "resources", "saikuro_sfiles", "thing.rb_cyclo.html")
58
- sfile = Saikuro::SFile.new path
59
- sfile.elements.map { |e| e.complexity }.sort.should eql(["0","0","2"])
60
- end
61
- end
62
- end
63
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: edouard-metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Scruggs
@@ -10,7 +10,6 @@ authors:
10
10
  - Petrik de Heus
11
11
  - Grant McInnes
12
12
  - Nick Quaranto
13
- - "\xC3\x89douard Bri\xC3\xA8re"
14
13
  autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
@@ -39,34 +38,44 @@ dependencies:
39
38
  version: 2.1.0
40
39
  version:
41
40
  - !ruby/object:Gem::Dependency
42
- name: relevance-rcov
41
+ name: rcov
42
+ type: :runtime
43
+ version_requirement:
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">"
47
+ - !ruby/object:Gem::Version
48
+ version: 0.8.3
49
+ version:
50
+ - !ruby/object:Gem::Dependency
51
+ name: reek
43
52
  type: :runtime
44
53
  version_requirement:
45
54
  version_requirements: !ruby/object:Gem::Requirement
46
55
  requirements:
47
56
  - - ">="
48
57
  - !ruby/object:Gem::Version
49
- version: 0.8.3.3
58
+ version: 1.0.0
50
59
  version:
51
60
  - !ruby/object:Gem::Dependency
52
- name: mojombo-chronic
61
+ name: roodi
53
62
  type: :runtime
54
63
  version_requirement:
55
64
  version_requirements: !ruby/object:Gem::Requirement
56
65
  requirements:
57
66
  - - ">="
58
67
  - !ruby/object:Gem::Version
59
- version: 0.3.0
68
+ version: 1.3.5
60
69
  version:
61
70
  - !ruby/object:Gem::Dependency
62
- name: topfunky-gruff
71
+ name: chronic
63
72
  type: :runtime
64
73
  version_requirement:
65
74
  version_requirements: !ruby/object:Gem::Requirement
66
75
  requirements:
67
76
  - - ">="
68
77
  - !ruby/object:Gem::Version
69
- version: 0.3.5
78
+ version: 0.2.3
70
79
  version:
71
80
  description: Code metrics from Flog, Flay, RCov, Saikuro, Churn, Reek, Roodi and Rails' stats task
72
81
  email: jake.scruggs@gmail.com
@@ -84,53 +93,6 @@ files:
84
93
  - TODO
85
94
  - MIT-LICENSE
86
95
  - Rakefile
87
- - lib/base/base_template.rb
88
- - lib/base/configuration.rb
89
- - lib/base/generator.rb
90
- - lib/base/md5_tracker.rb
91
- - lib/base/report.rb
92
- - lib/generators/churn.rb
93
- - lib/generators/flay.rb
94
- - lib/generators/flog.rb
95
- - lib/generators/rcov.rb
96
- - lib/generators/reek.rb
97
- - lib/generators/roodi.rb
98
- - lib/generators/saikuro.rb
99
- - lib/generators/stats.rb
100
- - lib/metric_fu.rb
101
- - lib/templates/standard/churn.html.erb
102
- - lib/templates/standard/default.css
103
- - lib/templates/standard/flay.html.erb
104
- - lib/templates/standard/flog.html.erb
105
- - lib/templates/standard/index.html.erb
106
- - lib/templates/standard/rcov.html.erb
107
- - lib/templates/standard/reek.html.erb
108
- - lib/templates/standard/roodi.html.erb
109
- - lib/templates/standard/saikuro.html.erb
110
- - lib/templates/standard/standard_template.rb
111
- - lib/templates/standard/stats.html.erb
112
- - lib/templates/awesome/churn.html.erb
113
- - lib/templates/awesome/default.css
114
- - lib/templates/awesome/flay.html.erb
115
- - lib/templates/awesome/flog.html.erb
116
- - lib/templates/awesome/index.html.erb
117
- - lib/templates/awesome/rcov.html.erb
118
- - lib/templates/awesome/reek.html.erb
119
- - lib/templates/awesome/roodi.html.erb
120
- - lib/templates/awesome/saikuro.html.erb
121
- - lib/templates/awesome/awesome_template.rb
122
- - lib/templates/awesome/stats.html.erb
123
- - lib/templates/awesome/layout.html.erb
124
- - lib/base/graph.rb
125
- - lib/graphs/flay_grapher.rb
126
- - lib/graphs/flog_grapher.rb
127
- - lib/graphs/rcov_grapher.rb
128
- - lib/graphs/reek_grapher.rb
129
- - lib/graphs/roodi_grapher.rb
130
- - tasks/metric_fu.rake
131
- - vendor/_fonts/monaco.ttf
132
- - tasks/railroad.rake
133
- - vendor/saikuro/saikuro.rb
134
96
  - Manifest.txt
135
97
  has_rdoc: true
136
98
  homepage: http://metric-fu.rubyforge.org/
@@ -158,7 +120,7 @@ rubyforge_project:
158
120
  rubygems_version: 1.2.0
159
121
  signing_key:
160
122
  specification_version: 2
161
- summary: A fistful of code metrics, with awesome templates and graphs
123
+ summary: A fistful of code metrics
162
124
  test_files:
163
125
  - spec/base/base_template_spec.rb
164
126
  - spec/base/configuration_spec.rb
@@ -1,134 +0,0 @@
1
- module MetricFu
2
-
3
- # The Template class is intended as an abstract class for concrete
4
- # template classes to subclass. It provides a variety of utility
5
- # methods to make templating a bit easier. However, classes do not
6
- # have to inherit from here in order to provide a template. The only
7
- # requirement for a template class is that it provides a #write method
8
- # to actually write out the template. See StandardTemplate for an
9
- # example.
10
- class Template
11
- attr_accessor :report
12
-
13
- private
14
- # Creates a new erb evaluated result from the passed in section.
15
- #
16
- # @param section String
17
- # The section name of
18
- #
19
- # @return String
20
- # The erb evaluated string
21
- def erbify(section)
22
- require 'erb'
23
- erb_doc = File.read(template(section))
24
- ERB.new(erb_doc).result(binding)
25
- end
26
-
27
- # Determines whether a template file exists for a given section
28
- # of the full template.
29
- #
30
- # @param section String
31
- # The section of the template to check against
32
- #
33
- # @return Boolean
34
- # Does a template file exist for this section or not?
35
- def template_exists?(section)
36
- File.exist?(template(section))
37
- end
38
-
39
- # Copies an instance variable mimicing the name of the section
40
- # we are trying to render, with a value equal to the passed in
41
- # constant. Allows the concrete template classes to refer to
42
- # that instance variable from their ERB rendering
43
- #
44
- # @param section String
45
- # The name of the instance variable to create
46
- #
47
- # @param contents Object
48
- # The value to set as the value of the created instance
49
- # variable
50
- def create_instance_var(section, contents)
51
- instance_variable_set("@#{section}", contents)
52
- end
53
-
54
- # Generates the filename of the template file to load and
55
- # evaluate. In this case, the path to the template directory +
56
- # the section name + .html.erb
57
- #
58
- # @param section String
59
- # A section of the template to render
60
- #
61
- # @return String
62
- # A file path
63
- def template(section)
64
- File.join(this_directory, section.to_s + ".html.erb")
65
- end
66
-
67
- # Returns the filename that the template will render into for
68
- # a given section. In this case, the section name + '.html'
69
- #
70
- # @param section String
71
- # A section of the template to render
72
- #
73
- # @return String
74
- # The output filename
75
- def output_filename(section)
76
- section.to_s + ".html"
77
- end
78
-
79
- # Returns the contents of a given css file in order to
80
- # render it inline into a template.
81
- #
82
- # @param css String
83
- # The name of a css file to open
84
- #
85
- # @return String
86
- # The contents of the css file
87
- def inline_css(css)
88
- open(File.join(this_directory, css)) { |f| f.read }
89
- end
90
-
91
- # Provides a link to open a file through the textmate protocol
92
- # on Darwin, or otherwise, a simple file link.
93
- #
94
- # @param name String
95
- #
96
- # @param line Integer
97
- # The line number to link to, if textmate is available. Defaults
98
- # to nil
99
- #
100
- # @return String
101
- # An anchor link to a textmate reference or a file reference
102
- def link_to_filename(name, line = nil)
103
- filename = File.expand_path(name)
104
- if MetricFu.configuration.platform.include?('darwin')
105
- "<a href='txmt://open/?url=file://" \
106
- +"#{filename}&line=#{line}'>#{name}:#{line}</a>"
107
- else
108
- "<a href='file://#{filename}'>#{name}:#{line}</a>"
109
- end
110
- end
111
-
112
-
113
- # Provides a brain dead way to cycle between two values during
114
- # an iteration of some sort. Pass in the first_value, the second_value,
115
- # and the cardinality of the iteration.
116
- #
117
- # @param first_value Object
118
- #
119
- # @param second_value Object
120
- #
121
- # @param iteration Integer
122
- # The number of times through the iteration.
123
- #
124
- # @return Object
125
- # The first_value if iteration is even. The second_value if
126
- # iteration is odd.
127
- def cycle(first_value, second_value, iteration)
128
- return first_value if iteration % 2 == 0
129
- return second_value
130
- end
131
-
132
-
133
- end
134
- end