jscruggs-metric_fu 0.9.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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"