jscruggs-metric_fu 0.9.0 → 1.0.0

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.
Files changed (69) hide show
  1. data/HISTORY +10 -0
  2. data/README +1 -154
  3. data/Rakefile +37 -2
  4. data/TODO +2 -1
  5. data/lib/base/base_template.rb +134 -0
  6. data/lib/base/configuration.rb +187 -0
  7. data/lib/base/generator.rb +144 -0
  8. data/lib/{metric_fu → base}/md5_tracker.rb +0 -0
  9. data/lib/base/report.rb +100 -0
  10. data/lib/{metric_fu → generators}/churn.rb +20 -22
  11. data/lib/generators/flay.rb +29 -0
  12. data/lib/generators/flog.rb +130 -0
  13. data/lib/generators/rcov.rb +74 -0
  14. data/lib/generators/reek.rb +31 -0
  15. data/lib/generators/roodi.rb +28 -0
  16. data/lib/generators/saikuro.rb +201 -0
  17. data/lib/generators/stats.rb +43 -0
  18. data/lib/metric_fu.rb +20 -3
  19. data/lib/templates/{churn.html.erb → standard/churn.html.erb} +12 -4
  20. data/lib/templates/{default.css → standard/default.css} +20 -1
  21. data/lib/templates/{flay.html.erb → standard/flay.html.erb} +12 -9
  22. data/lib/templates/standard/flog.html.erb +52 -0
  23. data/lib/templates/standard/index.html.erb +38 -0
  24. data/lib/templates/standard/rcov.html.erb +42 -0
  25. data/lib/templates/standard/reek.html.erb +41 -0
  26. data/lib/templates/{roodi.html.erb → standard/roodi.html.erb} +10 -8
  27. data/lib/templates/standard/saikuro.html.erb +83 -0
  28. data/lib/templates/standard/standard_template.rb +26 -0
  29. data/lib/templates/standard/stats.html.erb +54 -0
  30. data/spec/base/base_template_spec.rb +140 -0
  31. data/spec/base/configuration_spec.rb +303 -0
  32. data/spec/base/generator_spec.rb +159 -0
  33. data/spec/{md5_tracker_spec.rb → base/md5_tracker_spec.rb} +1 -1
  34. data/spec/base/report_spec.rb +139 -0
  35. data/spec/generators/churn_spec.rb +152 -0
  36. data/spec/generators/flay_spec.rb +101 -0
  37. data/spec/generators/flog_spec.rb +189 -0
  38. data/spec/generators/reek_spec.rb +47 -0
  39. data/spec/generators/saikuro_spec.rb +35 -0
  40. data/spec/generators/stats_spec.rb +74 -0
  41. data/spec/spec_helper.rb +24 -7
  42. data/tasks/metric_fu.rake +14 -0
  43. data/{lib/tasks → tasks}/railroad.rake +0 -0
  44. data/{lib/metric_fu → vendor}/saikuro/saikuro.rb +0 -0
  45. metadata +58 -47
  46. data/lib/metric_fu/base.rb +0 -160
  47. data/lib/metric_fu/flay.rb +0 -17
  48. data/lib/metric_fu/flog.rb +0 -129
  49. data/lib/metric_fu/reek.rb +0 -17
  50. data/lib/metric_fu/roodi.rb +0 -17
  51. data/lib/tasks/churn.rake +0 -9
  52. data/lib/tasks/coverage.rake +0 -54
  53. data/lib/tasks/flay.rake +0 -6
  54. data/lib/tasks/flog.rake +0 -69
  55. data/lib/tasks/metric_fu.rake +0 -24
  56. data/lib/tasks/metric_fu.rb +0 -6
  57. data/lib/tasks/reek.rake +0 -6
  58. data/lib/tasks/roodi.rake +0 -7
  59. data/lib/tasks/saikuro.rake +0 -35
  60. data/lib/tasks/stats.rake +0 -14
  61. data/lib/templates/flog.html.erb +0 -38
  62. data/lib/templates/flog_page.html.erb +0 -25
  63. data/lib/templates/reek.html.erb +0 -30
  64. data/spec/base_spec.rb +0 -57
  65. data/spec/churn_spec.rb +0 -117
  66. data/spec/config_spec.rb +0 -110
  67. data/spec/flay_spec.rb +0 -19
  68. data/spec/flog_spec.rb +0 -208
  69. data/spec/reek_spec.rb +0 -26
metadata CHANGED
@@ -1,40 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jscruggs-metric_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Scruggs
8
8
  - Sean Soper
9
9
  - Andre Arko
10
10
  - Petrik de Heus
11
+ - Grant McInnes
11
12
  autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
15
 
15
- date: 2009-01-11 00:00:00 -08:00
16
+ date: 2009-04-08 00:00:00 -07:00
16
17
  default_executable:
17
18
  dependencies:
18
19
  - !ruby/object:Gem::Dependency
19
20
  name: flay
21
+ type: :runtime
20
22
  version_requirement:
21
23
  version_requirements: !ruby/object:Gem::Requirement
22
24
  requirements:
23
- - - ">"
25
+ - - ">="
24
26
  - !ruby/object:Gem::Version
25
- version: 0.0.0
27
+ version: 1.2.1
26
28
  version:
27
29
  - !ruby/object:Gem::Dependency
28
30
  name: flog
31
+ type: :runtime
29
32
  version_requirement:
30
33
  version_requirements: !ruby/object:Gem::Requirement
31
34
  requirements:
32
35
  - - ">="
33
36
  - !ruby/object:Gem::Version
34
- version: 1.2.0
37
+ version: 2.1.0
35
38
  version:
36
39
  - !ruby/object:Gem::Dependency
37
40
  name: rcov
41
+ type: :runtime
38
42
  version_requirement:
39
43
  version_requirements: !ruby/object:Gem::Requirement
40
44
  requirements:
@@ -43,31 +47,34 @@ dependencies:
43
47
  version: 0.8.1
44
48
  version:
45
49
  - !ruby/object:Gem::Dependency
46
- name: railroad
50
+ name: reek
51
+ type: :runtime
47
52
  version_requirement:
48
53
  version_requirements: !ruby/object:Gem::Requirement
49
54
  requirements:
50
55
  - - ">="
51
56
  - !ruby/object:Gem::Version
52
- version: 0.5.0
57
+ version: 1.0.0
53
58
  version:
54
59
  - !ruby/object:Gem::Dependency
55
- name: reek
60
+ name: roodi
61
+ type: :runtime
56
62
  version_requirement:
57
63
  version_requirements: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ">"
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: 0.0.0
67
+ version: 1.3.5
62
68
  version:
63
69
  - !ruby/object:Gem::Dependency
64
- name: roodi
70
+ name: chronic
71
+ type: :runtime
65
72
  version_requirement:
66
73
  version_requirements: !ruby/object:Gem::Requirement
67
74
  requirements:
68
- - - ">"
75
+ - - ">="
69
76
  - !ruby/object:Gem::Version
70
- version: 0.0.0
77
+ version: 0.2.3
71
78
  version:
72
79
  description: Code metrics from Flog, Flay, RCov, Saikuro, Churn, Reek, Roodi and Rails' stats task
73
80
  email: jake.scruggs@gmail.com
@@ -85,33 +92,34 @@ files:
85
92
  - TODO
86
93
  - MIT-LICENSE
87
94
  - Rakefile
88
- - lib/metric_fu/base.rb
89
- - lib/metric_fu/churn.rb
90
- - lib/metric_fu/flay.rb
91
- - lib/metric_fu/flog.rb
92
- - lib/metric_fu/reek.rb
93
- - lib/metric_fu/roodi.rb
94
- - lib/metric_fu/md5_tracker.rb
95
- - lib/metric_fu/saikuro/saikuro.rb
95
+ - lib/base/base_template.rb
96
+ - lib/base/configuration.rb
97
+ - lib/base/generator.rb
98
+ - lib/base/md5_tracker.rb
99
+ - lib/base/report.rb
100
+ - lib/generators/churn.rb
101
+ - lib/generators/flay.rb
102
+ - lib/generators/flog.rb
103
+ - lib/generators/rcov.rb
104
+ - lib/generators/reek.rb
105
+ - lib/generators/roodi.rb
106
+ - lib/generators/saikuro.rb
107
+ - lib/generators/stats.rb
96
108
  - lib/metric_fu.rb
97
- - lib/tasks/metric_fu.rb
98
- - lib/tasks/churn.rake
99
- - lib/tasks/coverage.rake
100
- - lib/tasks/flay.rake
101
- - lib/tasks/flog.rake
102
- - lib/tasks/metric_fu.rake
103
- - lib/tasks/railroad.rake
104
- - lib/tasks/reek.rake
105
- - lib/tasks/roodi.rake
106
- - lib/tasks/saikuro.rake
107
- - lib/tasks/stats.rake
108
- - lib/templates/churn.html.erb
109
- - lib/templates/default.css
110
- - lib/templates/flay.html.erb
111
- - lib/templates/flog.html.erb
112
- - lib/templates/flog_page.html.erb
113
- - lib/templates/reek.html.erb
114
- - lib/templates/roodi.html.erb
109
+ - lib/templates/standard/churn.html.erb
110
+ - lib/templates/standard/default.css
111
+ - lib/templates/standard/flay.html.erb
112
+ - lib/templates/standard/flog.html.erb
113
+ - lib/templates/standard/index.html.erb
114
+ - lib/templates/standard/rcov.html.erb
115
+ - lib/templates/standard/reek.html.erb
116
+ - lib/templates/standard/roodi.html.erb
117
+ - lib/templates/standard/saikuro.html.erb
118
+ - lib/templates/standard/standard_template.rb
119
+ - lib/templates/standard/stats.html.erb
120
+ - tasks/metric_fu.rake
121
+ - tasks/railroad.rake
122
+ - vendor/saikuro/saikuro.rb
115
123
  - Manifest.txt
116
124
  has_rdoc: true
117
125
  homepage: http://metric-fu.rubyforge.org/
@@ -141,12 +149,15 @@ signing_key:
141
149
  specification_version: 2
142
150
  summary: A fistful of code metrics
143
151
  test_files:
144
- - spec/base_spec.rb
145
- - spec/churn_spec.rb
146
- - spec/config_spec.rb
147
- - spec/flay_spec.rb
148
- - spec/flog_spec.rb
149
- - spec/md5_tracker_spec.rb
150
- - spec/reek_spec.rb
151
- - spec/roodi_spec.rb
152
+ - spec/base/base_template_spec.rb
153
+ - spec/base/configuration_spec.rb
154
+ - spec/base/generator_spec.rb
155
+ - spec/base/md5_tracker_spec.rb
156
+ - spec/base/report_spec.rb
157
+ - spec/generators/churn_spec.rb
158
+ - spec/generators/flay_spec.rb
159
+ - spec/generators/flog_spec.rb
160
+ - spec/generators/reek_spec.rb
161
+ - spec/generators/saikuro_spec.rb
162
+ - spec/generators/stats_spec.rb
152
163
  - spec/spec_helper.rb
@@ -1,160 +0,0 @@
1
- require 'erb'
2
- module MetricFu
3
-
4
- TEMPLATE_DIR = File.join(File.dirname(__FILE__), '..', 'templates')
5
- BASE_DIRECTORY = ENV['CC_BUILD_ARTIFACTS'] || 'tmp/metric_fu'
6
- RAILS = File.exist?("config/environment.rb")
7
-
8
- if RAILS
9
- CODE_DIRS = ['app', 'lib']
10
- DEFAULT_METRICS = [:coverage, :churn, :flog, :flay, :reek, :roodi, :stats, :saikuro ]
11
- else
12
- CODE_DIRS = ['lib']
13
- DEFAULT_METRICS = [:coverage, :churn, :flog, :flay, :reek, :roodi, :saikuro ]
14
- end
15
-
16
- module Base
17
-
18
- ######################################################################
19
- # Base class for report Generators
20
- #
21
- class Generator
22
-
23
- def initialize(options={})
24
- @base_dir = self.class.metric_dir
25
- end
26
-
27
- def self.metric_dir
28
- File.join(BASE_DIRECTORY, template_name)
29
- end
30
-
31
- def self.template_name
32
- self.to_s.split('::').last.downcase
33
- end
34
-
35
- def self.generate_report(options={})
36
- FileUtils.mkdir_p(metric_dir, :verbose => false) unless File.directory?(metric_dir)
37
- self.new(options).generate_report
38
- end
39
-
40
- def save_html(content, file='index.html')
41
- open("#{@base_dir}/#{file}", "w") do |f|
42
- f.puts content
43
- end
44
- end
45
-
46
- def generate_report
47
- save_html(generate_html)
48
- end
49
-
50
- def generate_html
51
- analyze
52
- html = ERB.new(File.read(template_file)).result(binding)
53
- end
54
-
55
- def template_name
56
- self.class.template_name
57
- end
58
-
59
- def template_file
60
- File.join(MetricFu::TEMPLATE_DIR, "#{template_name}.html.erb")
61
- end
62
-
63
- ########################
64
- # Template methods
65
-
66
- def inline_css(css)
67
- open(File.join(MetricFu::TEMPLATE_DIR, css)) { |f| f.read }
68
- end
69
-
70
- def link_to_filename(name, line = nil)
71
- filename = File.expand_path(name)
72
- if PLATFORM['darwin']
73
- %{<a href="txmt://open/?url=file://#{filename}&line=#{line}">#{name}:#{line}</a>}
74
- else
75
- %{<a href="file://#{filename}">#{name}:#{line}</a>}
76
- end
77
- end
78
-
79
- def cycle(first_value, second_value, iteration)
80
- return first_value if iteration % 2 == 0
81
- return second_value
82
- end
83
- end
84
- end
85
-
86
- class << self
87
- # The Configuration instance used to configure the Rails environment
88
- def configuration
89
- @@configuration ||= Configuration.new
90
- end
91
-
92
- def churn
93
- configuration.churn
94
- end
95
-
96
- def coverage
97
- configuration.coverage
98
- end
99
-
100
- def flay
101
- configuration.flay
102
- end
103
-
104
- def flog
105
- configuration.flog
106
- end
107
-
108
- def metrics
109
- configuration.metrics
110
- end
111
-
112
- def open_in_browser?
113
- PLATFORM['darwin'] && !ENV['CC_BUILD_ARTIFACTS']
114
- end
115
-
116
- def saikuro
117
- configuration.saikuro
118
- end
119
-
120
- def reek
121
- configuration.reek
122
- end
123
-
124
- def roodi
125
- configuration.roodi
126
- end
127
-
128
- end
129
-
130
- class Configuration
131
- attr_accessor :churn, :coverage, :flay, :flog, :metrics, :reek, :roodi, :saikuro
132
- def initialize
133
- raise "Use config.churn instead of MetricFu::CHURN_OPTIONS" if defined? ::MetricFu::CHURN_OPTIONS
134
- raise "Use config.flog[:dirs_to_flog] instead of MetricFu::DIRECTORIES_TO_FLOG" if defined? ::MetricFu::DIRECTORIES_TO_FLOG
135
- raise "Use config.saikuro instead of MetricFu::SAIKURO_OPTIONS" if defined? ::MetricFu::SAIKURO_OPTIONS
136
- reset
137
- end
138
-
139
- def self.run()
140
- yield MetricFu.configuration
141
- end
142
-
143
- def reset
144
- @churn = {}
145
- @coverage = { :test_files => ['test/**/*_test.rb', 'spec/**/*_spec.rb'],
146
- :rcov_opts => ["--sort coverage", "--html", "--rails", "--exclude /gems/,/Library/,spec"] }
147
- @flay = { :dirs_to_flay => CODE_DIRS}
148
- @flog = { :dirs_to_flog => CODE_DIRS}
149
- @reek = { :dirs_to_reek => CODE_DIRS}
150
- @roodi = { :dirs_to_roodi => CODE_DIRS}
151
- @metrics = DEFAULT_METRICS
152
- @saikuro = {}
153
- end
154
-
155
- def saikuro=(options)
156
- raise "saikuro need to be a Hash" unless options.is_a?(Hash)
157
- @saikuro = options
158
- end
159
- end
160
- end
@@ -1,17 +0,0 @@
1
- module MetricFu
2
-
3
- def self.generate_flay_report
4
- Flay.generate_report
5
- system("open #{Flay.metric_dir}/index.html") if open_in_browser?
6
- end
7
-
8
- class Flay < Base::Generator
9
-
10
- def analyze
11
- files_to_flay = MetricFu.flay[:dirs_to_flay].map{|dir| Dir[File.join(dir, "**/*.rb")] }
12
- output = `flay #{files_to_flay.join(" ")}`
13
- @matches = output.chomp.split("\n\n").map{|m| m.split("\n ") }
14
- end
15
-
16
- end
17
- end
@@ -1,129 +0,0 @@
1
- module MetricFu
2
-
3
- def self.generate_flog_report
4
- Flog::Generator.generate_report
5
- system("open #{Flog::Generator.metric_dir}/index.html") if open_in_browser?
6
- end
7
-
8
- module Flog
9
- class Generator < Base::Generator
10
- def generate_report
11
- @base_dir = self.class.metric_dir
12
- pages = []
13
- flog_results.each do |filename|
14
- page = Base.parse(open(filename, "r") { |f| f.read })
15
- if page
16
- page.filename = filename
17
- pages << page
18
- end
19
- end
20
- generate_pages(pages)
21
- end
22
-
23
- def generate_pages(pages)
24
- pages.each do |page|
25
- unless MetricFu::MD5Tracker.file_already_counted?(page.filename)
26
- generate_page(page)
27
- end
28
- end
29
- save_html(ERB.new(File.read(template_file)).result(binding))
30
- end
31
-
32
- def generate_page(page)
33
- save_html(page.to_html, page.path)
34
- end
35
-
36
- def flog_results
37
- Dir.glob("#{@base_dir}/**/*.txt")
38
- end
39
-
40
- def self.template_name
41
- "flog"
42
- end
43
- end
44
-
45
- SCORE_FORMAT = "%0.2f"
46
-
47
- class Base
48
- METHOD_LINE_REGEX = /([A-Za-z]+#.*):\s\((\d+\.\d+)\)/
49
- OPERATOR_LINE_REGEX = /\s+(\d+\.\d+):\s(.*)$/
50
-
51
- class << self
52
-
53
- def parse(text)
54
- score = text[/\w+ = (\d+\.\d+)/, 1]
55
- return nil unless score
56
- page = Page.new(score)
57
-
58
- text.each_line do |method_line|
59
- if match = method_line.match(METHOD_LINE_REGEX)
60
- page.scanned_methods << ScannedMethod.new(match[1], match[2])
61
- end
62
-
63
- if match = method_line.match(OPERATOR_LINE_REGEX)
64
- return if page.scanned_methods.empty?
65
- page.scanned_methods.last.operators << Operator.new(match[1], match[2])
66
- end
67
- end
68
- page
69
- end
70
-
71
- end
72
- end
73
-
74
- class Page < MetricFu::Base::Generator
75
- attr_accessor :filename, :score, :scanned_methods
76
-
77
- def initialize(score, scanned_methods = [])
78
- @score = score.to_f
79
- @scanned_methods = scanned_methods
80
- end
81
-
82
- def path
83
- @path ||= File.basename(filename, ".txt") + '.html'
84
- end
85
-
86
- def to_html
87
- ERB.new(File.read(template_file)).result(binding)
88
- end
89
-
90
- def average_score
91
- return 0 if scanned_methods.length == 0
92
- sum = 0
93
- scanned_methods.each do |m|
94
- sum += m.score
95
- end
96
- sum / scanned_methods.length
97
- end
98
-
99
- def highest_score
100
- scanned_methods.inject(0) do |highest, m|
101
- m.score > highest ? m.score : highest
102
- end
103
- end
104
-
105
- def template_name
106
- 'flog_page'
107
- end
108
- end
109
-
110
- class Operator
111
- attr_accessor :score, :operator
112
-
113
- def initialize(score, operator)
114
- @score = score.to_f
115
- @operator = operator
116
- end
117
- end
118
-
119
- class ScannedMethod
120
- attr_accessor :name, :score, :operators
121
-
122
- def initialize(name, score, operators = [])
123
- @name = name
124
- @score = score.to_f
125
- @operators = operators
126
- end
127
- end
128
- end
129
- end
@@ -1,17 +0,0 @@
1
- module MetricFu
2
-
3
- def self.generate_reek_report
4
- Reek.generate_report
5
- system("open #{Reek.metric_dir}/index.html") if open_in_browser?
6
- end
7
-
8
- class Reek < Base::Generator
9
-
10
- def analyze
11
- files_to_reek = MetricFu.reek[:dirs_to_reek].map{|dir| Dir[File.join(dir, "**/*.rb")] }
12
- output = `reek #{files_to_reek.join(" ")}`
13
- @matches = output.chomp.split("\n\n").map{|m| m.split("\n") }
14
- end
15
-
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- module MetricFu
2
-
3
- def self.generate_roodi_report
4
- MetricFu::Roodi.generate_report
5
- system("open #{Roodi.metric_dir}/index.html") if open_in_browser?
6
- end
7
-
8
- class Roodi < Base::Generator
9
-
10
- def analyze
11
- files_to_analyze = MetricFu.roodi[:dirs_to_roodi].map{|dir| Dir[File.join(dir, "**/*.rb")] }
12
- output = `roodi #{files_to_analyze.join(" ")}`
13
- @matches = output.chomp.split("\n").map{|m| m.split(" - ") }
14
- end
15
-
16
- end
17
- end
data/lib/tasks/churn.rake DELETED
@@ -1,9 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../metric_fu/churn')
2
-
3
- namespace :metrics do
4
-
5
- desc "Which files change the most"
6
- task :churn do
7
- MetricFu.generate_churn_report
8
- end
9
- end
@@ -1,54 +0,0 @@
1
- require 'fileutils'
2
-
3
- begin
4
- require 'rcov'
5
- require 'rcov/rcovtask'
6
- require 'spec/rake/spectask'
7
-
8
- namespace :metrics do
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')
13
-
14
- namespace :coverage do
15
- rcov_output = COVERAGE_DIR
16
-
17
- desc "Delete aggregate coverage data."
18
- task(:clean) { rm_f("rcov_tmp", :verbose => false) }
19
-
20
- desc "RCov task to generate report"
21
- Rcov::RcovTask.new(:do => :clean) do |t|
22
- FileUtils.mkdir_p(MetricFu::BASE_DIRECTORY) unless File.directory?(MetricFu::BASE_DIRECTORY)
23
- t.test_files = FileList[*MetricFu.coverage[:test_files]]
24
- t.rcov_opts = MetricFu.coverage[:rcov_opts]
25
- t.output_dir = COVERAGE_DIR
26
- # this line is a fix for Rails 2.1 relative loading issues
27
- t.libs << 'test'
28
- end
29
- # TODO not sure what this improves but it requires the diff-lcs gem
30
- # http://github.com/indirect/metric_fu/commit/b9c1cf75f09d5b531b388cd01661eb16b5126968#diff-1
31
- # Spec::Rake::SpecTask.new(:do => :clean) do |t|
32
- # FileUtils.mkdir_p(MetricFu::BASE_DIRECTORY) unless File.directory?(MetricFu::BASE_DIRECTORY)
33
- # t.ruby_opts = ['-rtest/unit']
34
- # t.spec_files = FileList['test/**/*_test.rb', 'spec/**/*spec.rb']
35
- # t.spec_opts = ["--format", "html:#{SPEC_HTML_FILE}", "--diff"]
36
- # t.rcov = true
37
- # t.rcov_opts = ["--sort coverage", "--html", "--rails", "--exclude /gems/,/Library/"]
38
- # t.rcov_dir = COVERAGE_DIR
39
- # end
40
- end
41
-
42
- desc "Generate and open coverage report"
43
- task :coverage => ['coverage:do'] do
44
- system("open #{COVERAGE_DIR}/index.html") if MetricFu.open_in_browser?
45
- end
46
- end
47
- rescue LoadError
48
- if RUBY_PLATFORM =~ /java/
49
- puts 'running in jruby - rcov tasks not available'
50
- else
51
- puts 'sudo gem install rcov # if you want the rcov tasks'
52
-
53
- end
54
- end
data/lib/tasks/flay.rake DELETED
@@ -1,6 +0,0 @@
1
- namespace :metrics do
2
- desc "Generate code duplication report with flay"
3
- task :flay do
4
- MetricFu.generate_flay_report
5
- end
6
- end
data/lib/tasks/flog.rake DELETED
@@ -1,69 +0,0 @@
1
- begin
2
-
3
- def flog(output, directory)
4
- metric_dir = MetricFu::Flog::Generator.metric_dir
5
- Dir.glob("#{directory}/**/*.rb").each do |filename|
6
- output_dir = "#{metric_dir}/#{filename.split("/")[0..-2].join("/")}"
7
- mkdir_p(output_dir, :verbose => false) unless File.directory?(output_dir)
8
- if MetricFu::MD5Tracker.file_changed?(filename, metric_dir)
9
- `flog #{filename} > #{metric_dir}/#{filename.split('.')[0]}.txt`
10
- end
11
- end
12
- end
13
-
14
- namespace :metrics do
15
-
16
- task :flog => ['flog:all'] do
17
- end
18
-
19
- namespace :flog do
20
- desc "Delete aggregate flog data."
21
- task(:clean) { rm_rf(MetricFu::Flog.metric_dir, :verbose => false) }
22
-
23
- desc "Flog code in app/models"
24
- task :models do
25
- flog "models", "app/models"
26
- end
27
-
28
- desc "Flog code in app/controllers"
29
- task :controllers do
30
- flog "controllers", "app/controllers"
31
- end
32
-
33
- desc "Flog code in app/helpers"
34
- task :helpers do
35
- flog "helpers", "app/helpers"
36
- end
37
-
38
- desc "Flog code in lib"
39
- task :lib do
40
- flog "lib", "lib"
41
- end
42
-
43
- desc "Generate a flog report from specified directories"
44
- task :custom do
45
- MetricFu::flog[:dirs_to_flog].each { |directory| flog(directory, directory) }
46
- MetricFu.generate_flog_report
47
- end
48
-
49
- desc "Generate and open flog report"
50
- if MetricFu::RAILS
51
- task :all => [:models, :controllers, :helpers, :lib] do
52
- MetricFu.generate_flog_report
53
- end
54
- else
55
- task :all => [:custom] do
56
- MetricFu.generate_flog_report
57
- end
58
- end
59
-
60
- end
61
-
62
- end
63
- rescue LoadError
64
- if RUBY_PLATFORM =~ /java/
65
- puts 'running in jruby - flog tasks not available'
66
- else
67
- puts 'sudo gem install flog # if you want the flog tasks'
68
- end
69
- end
@@ -1,24 +0,0 @@
1
- # only load configured metrics
2
- MetricFu.metrics.each { |task| import "#{File.dirname(__FILE__)}/#{task}.rake" }
3
-
4
- namespace :metrics do
5
- if MetricFu::RAILS
6
-
7
- desc "Generate coverage, cyclomatic complexity, flog, flay, railroad, reek, roodi, stats and churn reports"
8
- task :all => MetricFu.metrics
9
-
10
- task :set_testing_env do
11
- RAILS_ENV = 'test'
12
- end
13
-
14
- desc "Generate metrics after migrating (for continuous integration)"
15
- task :all_with_migrate => [:set_testing_env, "db:migrate", :all]
16
-
17
- else
18
-
19
- desc "Generate coverage, cyclomatic complexity, flog, flay, railroad and churn reports"
20
- task :all => MetricFu.metrics
21
-
22
- end
23
-
24
- end
@@ -1,6 +0,0 @@
1
- require 'fileutils'
2
- require 'rubygems'
3
- require 'rake'
4
-
5
- # Load rake files
6
- import "#{File.dirname(__FILE__)}/metric_fu.rake"