jayzes-metric_fu 0.8.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.
@@ -0,0 +1,11 @@
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
+ churn_dir = File.join(MetricFu::BASE_DIRECTORY, 'churn')
8
+ MetricFu::Churn.generate_report(churn_dir, defined?(MetricFu::CHURN_OPTIONS) ? MetricFu::CHURN_OPTIONS : {} )
9
+ system("open #{churn_dir}/index.html") if PLATFORM['darwin']
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ require 'fileutils'
2
+
3
+ begin
4
+ require 'rcov'
5
+ require 'rcov/rcovtask'
6
+
7
+ namespace :metrics do
8
+
9
+ COVERAGE_DIR = File.join(MetricFu::BASE_DIRECTORY, 'coverage')
10
+ COVERAGE_DATA_FILE = File.join(MetricFu::BASE_DIRECTORY, 'coverage.data')
11
+
12
+ namespace :coverage do
13
+ rcov_output = COVERAGE_DIR
14
+
15
+ desc "Delete aggregate coverage data."
16
+ task(:clean) { rm_f("rcov_tmp", :verbose => false) }
17
+
18
+ desc "RCov task to generate report"
19
+ Rcov::RcovTask.new(:do => :clean) do |t|
20
+ FileUtils.mkdir_p(MetricFu::BASE_DIRECTORY) unless File.directory?(MetricFu::BASE_DIRECTORY)
21
+ t.test_files = FileList['test/**/*_test.rb', 'spec/**/*_spec.rb']
22
+ t.rcov_opts = ["--sort coverage", "--html", "--rails", "--exclude /gems/,/Library/"]
23
+ t.output_dir = COVERAGE_DIR
24
+ # this line is a fix for Rails 2.1 relative loading issues
25
+ t.libs << 'test'
26
+ end
27
+ end
28
+
29
+ desc "Generate and open coverage report"
30
+ task :coverage => ['coverage:do'] do
31
+ system("open #{COVERAGE_DIR}/index.html") if PLATFORM['darwin']
32
+ end
33
+ end
34
+ rescue LoadError
35
+ if RUBY_PLATFORM =~ /java/
36
+ puts 'running in jruby - rcov tasks not available'
37
+ else
38
+ puts 'sudo gem install rcov # if you want the rcov tasks'
39
+ end
40
+ end
@@ -0,0 +1,14 @@
1
+ namespace :metrics do
2
+
3
+ FLAY_DIR = File.join(MetricFu::BASE_DIRECTORY, 'flay')
4
+ FLAY_FILE = File.join(FLAY_DIR, 'index.html')
5
+
6
+ desc "A code duplication report using flay"
7
+ task :FLAY do
8
+ mkdir_p(FLAY_DIR) unless File.directory?(FLAY_DIR)
9
+ `echo '<pre>' > #{FLAY_FILE}`
10
+ `flay #{RAILS_ROOT}/test/**/*.rb #{RAILS_ROOT}/app/**/*.rb >> #{FLAY_FILE}`
11
+ `echo '</pre>' >> #{FLAY_FILE}`
12
+ system("open #{FLAY_FILE}") if PLATFORM['darwin']
13
+ end
14
+ end
@@ -0,0 +1,62 @@
1
+ begin
2
+ FLOG_DIR = File.join(MetricFu::BASE_DIRECTORY, 'flog')
3
+
4
+ def flog(output, directory)
5
+ Dir.glob("#{directory}/**/*.rb").each do |filename|
6
+ output_dir = "#{FLOG_DIR}/#{filename.split("/")[0..-2].join("/")}"
7
+ mkdir_p(output_dir, :verbose => false) unless File.directory?(output_dir)
8
+ `flog #{filename} > #{FLOG_DIR}/#{filename.split('.')[0]}.txt` if MetricFu::MD5Tracker.file_changed?(filename, FLOG_DIR)
9
+ end
10
+ end
11
+
12
+ namespace :metrics do
13
+
14
+ task :flog => ['flog:all'] do
15
+ end
16
+
17
+ namespace :flog do
18
+ desc "Delete aggregate flog data."
19
+ task(:clean) { rm_rf(FLOG_DIR, :verbose => false) }
20
+
21
+ desc "Flog code in app/models"
22
+ task :models do
23
+ flog "models", "app/models"
24
+ end
25
+
26
+ desc "Flog code in app/controllers"
27
+ task :controllers do
28
+ flog "controllers", "app/controllers"
29
+ end
30
+
31
+ desc "Flog code in app/helpers"
32
+ task :helpers do
33
+ flog "helpers", "app/helpers"
34
+ end
35
+
36
+ desc "Flog code in lib"
37
+ task :lib do
38
+ flog "lib", "lib"
39
+ end
40
+
41
+ desc "Generate and open flog report"
42
+ task :all => [:models, :controllers, :helpers, :lib] do
43
+ MetricFu::FlogReporter::Generator.generate_report(FLOG_DIR)
44
+ system("open #{FLOG_DIR}/index.html") if PLATFORM['darwin']
45
+ end
46
+
47
+ desc "Generate a flog report from specified directories"
48
+ task :custom do
49
+ raise "You must define MetricFu::DIRECTORIES_TO_FLOG in your Rakefile" unless defined?(MetricFu::DIRECTORIES_TO_FLOG)
50
+ MetricFu::DIRECTORIES_TO_FLOG.each { |directory| flog(directory, directory) }
51
+ MetricFu::FlogReporter::Generator.generate_report(FLOG_DIR)
52
+ end
53
+ end
54
+
55
+ end
56
+ rescue LoadError
57
+ if RUBY_PLATFORM =~ /java/
58
+ puts 'running in jruby - flog tasks not available'
59
+ else
60
+ puts 'sudo gem install flog # if you want the flog tasks'
61
+ end
62
+ end
@@ -0,0 +1,11 @@
1
+ namespace :metrics do
2
+ task :prepare do
3
+ RAILS_ENV = 'test'
4
+ end
5
+
6
+ desc "Useful for continuous integration"
7
+ task :all_with_migrate => [:prepare, "db:migrate", :all]
8
+
9
+ desc "Generate coverage, cyclomatic complexity (saikuro), flog, stats, and churn reports"
10
+ task :all => [:coverage, :saikuro, :flog, :churn, :stats, :reek, :roodi, :flay]
11
+ end
@@ -0,0 +1,6 @@
1
+ require 'fileutils'
2
+ require 'rubygems'
3
+ require 'rake'
4
+
5
+ # Load rake files
6
+ Dir["#{File.dirname(__FILE__)}/*.rake"].each { |ext| load ext }
@@ -0,0 +1,14 @@
1
+ namespace :metrics do
2
+
3
+ REEK_DIR = File.join(MetricFu::BASE_DIRECTORY, 'reek')
4
+ REEK_FILE = File.join(REEK_DIR, 'index.html')
5
+
6
+ desc "A code smell report using Reek"
7
+ task :reek do
8
+ mkdir_p(REEK_DIR) unless File.directory?(REEK_DIR)
9
+ `echo '<pre>' > #{REEK_FILE}`
10
+ `reek #{RAILS_ROOT}/test/**/*.rb #{RAILS_ROOT}/app/**/*.rb >> #{REEK_FILE}`
11
+ `echo '</pre>' >> #{REEK_FILE}`
12
+ system("open #{REEK_FILE}") if PLATFORM['darwin']
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ namespace :metrics do
2
+
3
+ ROODI_DIR = File.join(MetricFu::BASE_DIRECTORY, 'roodi')
4
+ ROODI_FILE = File.join(ROODI_DIR, 'index.html')
5
+
6
+ desc "A Ruby coding standards report using Roodi"
7
+ task :reek do
8
+ mkdir_p(ROODI_DIR) unless File.directory?(ROODI_DIR)
9
+ `echo '<pre>' > #{ROODI_FILE}`
10
+ `roodi #{RAILS_ROOT}/lib/**/*.rb #{RAILS_ROOT}/app/**/*.rb >> #{ROODI_FILE}`
11
+ `echo '</pre>' >> #{ROODI_FILE}`
12
+ system("open #{ROODI_FILE}") if PLATFORM['darwin']
13
+ end
14
+ end
@@ -0,0 +1,34 @@
1
+ namespace :metrics do
2
+
3
+ SAIKURO_DIR = File.join(MetricFu::BASE_DIRECTORY, 'saikuro')
4
+
5
+ desc "A cyclomatic complexity report using Saikuro"
6
+ task :saikuro do
7
+ raise "SAIKURO_OPTIONS is now MetricFu::SAIKURO_OPTIONS" if defined?(SAIKURO_OPTIONS)
8
+ default_options = {"--output_directory" => SAIKURO_DIR,
9
+ "--input_directory" => "app",
10
+ "--cyclo" => "",
11
+ "--filter_cyclo" => "0",
12
+ "--warn_cyclo" => "5",
13
+ "--error_cyclo" => "7"}
14
+
15
+ default_options.merge!(MetricFu::SAIKURO_OPTIONS) if defined?(MetricFu::SAIKURO_OPTIONS)
16
+ options = ""
17
+ default_options.each_pair { |key, value| options << "#{key} #{value} " }
18
+
19
+ sh "ruby \"#{File.expand_path(File.join(File.dirname(__FILE__), '..', 'metric_fu', 'saikuro'))}/saikuro.rb\" " +
20
+ "#{options}" do |ok, response|
21
+ unless ok
22
+ puts "Saikuro failed with exit status: #{response.exitstatus}"
23
+ exit 1
24
+ end
25
+ end
26
+
27
+ if File.exist? "#{SAIKURO_DIR}/index_cyclo.html"
28
+ mv "#{SAIKURO_DIR}/index_cyclo.html",
29
+ "#{SAIKURO_DIR}/index.html"
30
+ end
31
+
32
+ system("open #{SAIKURO_DIR}/index.html") if PLATFORM['darwin']
33
+ end
34
+ end
@@ -0,0 +1,14 @@
1
+ namespace :metrics do
2
+
3
+ STATS_DIR = File.join(MetricFu::BASE_DIRECTORY, 'stats')
4
+ STATS_FILE = File.join(STATS_DIR, 'index.html')
5
+
6
+ desc "A stats report"
7
+ task :stats do
8
+ mkdir_p(STATS_DIR) unless File.directory?(STATS_DIR)
9
+ `echo '<pre>' > #{STATS_FILE}`
10
+ `rake stats >> #{STATS_FILE}`
11
+ `echo '</pre>' >> #{STATS_FILE}`
12
+ system("open #{STATS_FILE}") if PLATFORM['darwin']
13
+ end
14
+ end
data/metric_fu.gemspec ADDED
@@ -0,0 +1,19 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "metric_fu"
3
+ s.version = "0.8.0"
4
+ s.summary = "Generates project metrics using Flog, RCov, Saikuro and more"
5
+ s.email = "jake.scruggs@gmail.com"
6
+ s.homepage = "http://metric-fu.rubyforge.org/"
7
+ s.description = "Gives you a fist full of code metrics"
8
+ s.has_rdoc = true
9
+ s.authors = ["Jake Scruggs", "Sean Soper"]
10
+ s.files = ["History.txt", "Manifest.txt", "metric_fu.gemspec", "MIT-LICENSE", "README", "TODO.txt", "lib/metric_fu", "lib/metric_fu/churn.rb", "lib/metric_fu/flog_reporter", "lib/metric_fu/flog_reporter/base.rb", "lib/metric_fu/flog_reporter/flog_reporter.css", "lib/metric_fu/flog_reporter/generator.rb", "lib/metric_fu/flog_reporter/operator.rb", "lib/metric_fu/flog_reporter/page.rb", "lib/metric_fu/flog_reporter/scanned_method.rb", "lib/metric_fu/flog_reporter.rb", "lib/metric_fu/md5_tracker.rb", "lib/metric_fu/saikuro", "lib/metric_fu/saikuro/saikuro.rb", "lib/metric_fu/saikuro/SAIKURO_README", "lib/metric_fu.rb", "lib/tasks", "lib/tasks/churn.rake", "lib/tasks/coverage.rake", "lib/tasks/flay.rake", "lib/tasks/flog.rake", "lib/tasks/metric_fu.rake", "lib/tasks/metric_fu.rb", "lib/tasks/reek.rake", "lib/tasks/roodi.rake", "lib/tasks/saikuro.rake", "lib/tasks/stats.rake", "test/test_helper.rb", "test/test_md5_tracker.rb"]
11
+ s.test_files = ["test/test_md5_tracker.rb"]
12
+ s.rdoc_options = ["--main", "README"]
13
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README"]
14
+ s.add_dependency("flog", ["> 0.0.0"])
15
+ s.add_dependency("rcov", ["> 0.0.0"])
16
+ s.add_dependency("reek", ["> 0.0.0"])
17
+ s.add_dependency("flay", ["> 0.0.0"])
18
+ s.add_dependency("roodi", ["> 0.0.0"])
19
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jayzes-metric_fu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Jake Scruggs
8
+ - Sean Soper
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-10-27 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: flog
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rcov
27
+ version_requirement:
28
+ version_requirements: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.0.0
33
+ version:
34
+ - !ruby/object:Gem::Dependency
35
+ name: reek
36
+ version_requirement:
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.0.0
42
+ version:
43
+ - !ruby/object:Gem::Dependency
44
+ name: flay
45
+ version_requirement:
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">"
49
+ - !ruby/object:Gem::Version
50
+ version: 0.0.0
51
+ version:
52
+ - !ruby/object:Gem::Dependency
53
+ name: roodi
54
+ version_requirement:
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.0.0
60
+ version:
61
+ description: Gives you a fist full of code metrics
62
+ email: jake.scruggs@gmail.com
63
+ executables: []
64
+
65
+ extensions: []
66
+
67
+ extra_rdoc_files:
68
+ - History.txt
69
+ - Manifest.txt
70
+ - README
71
+ files:
72
+ - History.txt
73
+ - Manifest.txt
74
+ - metric_fu.gemspec
75
+ - MIT-LICENSE
76
+ - README
77
+ - TODO.txt
78
+ - lib/metric_fu
79
+ - lib/metric_fu/churn.rb
80
+ - lib/metric_fu/flog_reporter
81
+ - lib/metric_fu/flog_reporter/base.rb
82
+ - lib/metric_fu/flog_reporter/flog_reporter.css
83
+ - lib/metric_fu/flog_reporter/generator.rb
84
+ - lib/metric_fu/flog_reporter/operator.rb
85
+ - lib/metric_fu/flog_reporter/page.rb
86
+ - lib/metric_fu/flog_reporter/scanned_method.rb
87
+ - lib/metric_fu/flog_reporter.rb
88
+ - lib/metric_fu/md5_tracker.rb
89
+ - lib/metric_fu/saikuro
90
+ - lib/metric_fu/saikuro/saikuro.rb
91
+ - lib/metric_fu/saikuro/SAIKURO_README
92
+ - lib/metric_fu.rb
93
+ - lib/tasks
94
+ - lib/tasks/churn.rake
95
+ - lib/tasks/coverage.rake
96
+ - lib/tasks/flay.rake
97
+ - lib/tasks/flog.rake
98
+ - lib/tasks/metric_fu.rake
99
+ - lib/tasks/metric_fu.rb
100
+ - lib/tasks/reek.rake
101
+ - lib/tasks/roodi.rake
102
+ - lib/tasks/saikuro.rake
103
+ - lib/tasks/stats.rake
104
+ - test/test_helper.rb
105
+ - test/test_md5_tracker.rb
106
+ has_rdoc: true
107
+ homepage: http://metric-fu.rubyforge.org/
108
+ post_install_message:
109
+ rdoc_options:
110
+ - --main
111
+ - README
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: "0"
119
+ version:
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: "0"
125
+ version:
126
+ requirements: []
127
+
128
+ rubyforge_project:
129
+ rubygems_version: 1.2.0
130
+ signing_key:
131
+ specification_version: 2
132
+ summary: Generates project metrics using Flog, RCov, Saikuro and more
133
+ test_files:
134
+ - test/test_md5_tracker.rb