metric_fu 4.4.4 → 4.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +14 -6
  2. checksums.yaml.gz.sig +3 -0
  3. data.tar.gz.sig +0 -0
  4. data/.gitignore +1 -0
  5. data/.metrics +0 -3
  6. data/.travis.yml +1 -1
  7. data/.yardopts +0 -1
  8. data/CONTRIBUTING.md +1 -0
  9. data/CONTRIBUTORS +61 -2
  10. data/Gemfile +14 -11
  11. data/Gemfile.devtools +40 -0
  12. data/Guardfile +30 -0
  13. data/HISTORY.md +54 -1
  14. data/README.md +86 -56
  15. data/bin/mf-cane +8 -6
  16. data/bin/mf-churn +8 -7
  17. data/bin/mf-flay +8 -7
  18. data/bin/mf-reek +8 -7
  19. data/bin/mf-roodi +8 -7
  20. data/bin/mf-saikuro +8 -6
  21. data/certs/bf4.pem +22 -0
  22. data/checksum/metric_fu-4.4.4.gem.sha512 +1 -0
  23. data/checksum/metric_fu-4.5.0.gem.sha512 +1 -0
  24. data/etc/README.md +16 -0
  25. data/etc/erd.dot +173 -0
  26. data/etc/erd.png +0 -0
  27. data/lib/metric_fu.rb +56 -12
  28. data/lib/metric_fu/cli/helper.rb +8 -2
  29. data/lib/metric_fu/cli/parser.rb +86 -50
  30. data/lib/metric_fu/configuration.rb +4 -31
  31. data/lib/metric_fu/environment.rb +1 -1
  32. data/lib/metric_fu/formatter/html.rb +5 -5
  33. data/lib/metric_fu/gem_run.rb +68 -0
  34. data/lib/metric_fu/gem_version.rb +57 -0
  35. data/lib/metric_fu/io.rb +1 -1
  36. data/lib/metric_fu/load_files.rb +3 -5
  37. data/lib/metric_fu/loader.rb +31 -2
  38. data/lib/metric_fu/logging/mf_debugger.rb +1 -0
  39. data/lib/metric_fu/metric.rb +23 -1
  40. data/lib/metric_fu/metrics/cane/cane.rb +7 -3
  41. data/lib/metric_fu/metrics/cane/cane_grapher.rb +19 -0
  42. data/lib/metric_fu/metrics/cane/template_awesome/cane.html.erb +0 -4
  43. data/lib/metric_fu/metrics/churn/churn.rb +6 -7
  44. data/lib/metric_fu/metrics/flay/flay.rb +2 -4
  45. data/lib/metric_fu/metrics/flay/flay_grapher.rb +19 -0
  46. data/lib/metric_fu/metrics/flay/template_awesome/flay.html.erb +0 -4
  47. data/lib/metric_fu/metrics/flog/flog.rb +0 -2
  48. data/lib/metric_fu/metrics/flog/flog_grapher.rb +19 -0
  49. data/lib/metric_fu/metrics/flog/template_awesome/flog.html.erb +0 -4
  50. data/lib/metric_fu/metrics/generator.rb +34 -24
  51. data/lib/metric_fu/metrics/graph.rb +8 -14
  52. data/lib/metric_fu/metrics/hotspots/hotspot.rb +7 -5
  53. data/lib/metric_fu/metrics/hotspots/template_awesome/hotspots.html.erb +4 -6
  54. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices.rb +0 -2
  55. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher.rb +19 -0
  56. data/lib/metric_fu/metrics/rails_best_practices/template_awesome/rails_best_practices.html.erb +0 -4
  57. data/lib/metric_fu/metrics/rcov/rcov_grapher.rb +19 -0
  58. data/lib/metric_fu/metrics/rcov/template_awesome/rcov.html.erb +0 -4
  59. data/lib/metric_fu/metrics/reek/init.rb +1 -1
  60. data/lib/metric_fu/metrics/reek/reek.rb +12 -8
  61. data/lib/metric_fu/metrics/reek/reek_grapher.rb +19 -0
  62. data/lib/metric_fu/metrics/reek/template_awesome/reek.html.erb +0 -4
  63. data/lib/metric_fu/metrics/roodi/roodi.rb +2 -3
  64. data/lib/metric_fu/metrics/roodi/roodi_grapher.rb +19 -0
  65. data/lib/metric_fu/metrics/roodi/template_awesome/roodi.html.erb +0 -4
  66. data/lib/metric_fu/metrics/saikuro/saikuro.rb +69 -33
  67. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +8 -9
  68. data/lib/metric_fu/metrics/stats/stats_grapher.rb +20 -0
  69. data/lib/metric_fu/metrics/stats/template_awesome/stats.html.erb +0 -4
  70. data/lib/metric_fu/reporting/graphs/grapher.rb +69 -3
  71. data/lib/metric_fu/reporting/result.rb +5 -1
  72. data/lib/metric_fu/reporting/templates/awesome/awesome_template.rb +7 -3
  73. data/lib/metric_fu/run.rb +13 -7
  74. data/lib/metric_fu/tasks/metric_fu.rake +50 -3
  75. data/lib/metric_fu/utility.rb +10 -0
  76. data/lib/metric_fu/version.rb +1 -1
  77. data/metric_fu.gemspec +7 -4
  78. data/spec/dummy/.gitignore +1 -0
  79. data/spec/dummy/.gitkeep +0 -0
  80. data/spec/dummy/.metrics +4 -0
  81. data/spec/dummy/lib/.gitkeep +0 -0
  82. data/spec/dummy/spec/.gitkeep +0 -0
  83. data/spec/{resources/yml → fixtures}/20090630.yml +1 -1
  84. data/spec/{resources/yml → fixtures}/hotspots/flog.yml +0 -0
  85. data/spec/{resources/yml → fixtures}/hotspots/generator.yml +0 -0
  86. data/spec/{resources/yml → fixtures}/hotspots/generator_analysis.yml +0 -0
  87. data/spec/{resources/yml → fixtures}/hotspots/reek.yml +0 -0
  88. data/spec/{resources/yml → fixtures}/hotspots/roodi.yml +0 -0
  89. data/spec/{resources/yml → fixtures}/hotspots/saikuro.yml +0 -0
  90. data/spec/{resources/yml → fixtures}/hotspots/several_metrics.yml +0 -0
  91. data/spec/{resources/yml → fixtures}/hotspots/stats.yml +0 -0
  92. data/spec/{resources/yml → fixtures}/hotspots/three_metrics_on_same_file.yml +0 -0
  93. data/spec/{resources → fixtures}/line_numbers/foo.rb +0 -0
  94. data/spec/{resources → fixtures}/line_numbers/module.rb +0 -0
  95. data/spec/{resources → fixtures}/line_numbers/module_surrounds_class.rb +0 -0
  96. data/spec/{resources → fixtures}/line_numbers/two_classes.rb +0 -0
  97. data/spec/{resources/yml → fixtures}/metric_missing.yml +0 -0
  98. data/spec/{resources → fixtures}/saikuro/app/controllers/sessions_controller.rb_cyclo.html +0 -0
  99. data/spec/{resources → fixtures}/saikuro/app/controllers/users_controller.rb_cyclo.html +0 -0
  100. data/spec/{resources → fixtures}/saikuro/index_cyclo.html +0 -0
  101. data/spec/{resources → fixtures}/saikuro_sfiles/thing.rb_cyclo.html +0 -0
  102. data/spec/metric_fu/configuration_spec.rb +1 -1
  103. data/spec/metric_fu/data_structures/line_numbers_spec.rb +13 -11
  104. data/spec/metric_fu/formatter/html_spec.rb +2 -2
  105. data/spec/metric_fu/gem_version_spec.rb +14 -0
  106. data/spec/metric_fu/loader_spec.rb +12 -0
  107. data/spec/metric_fu/metrics/base_template_spec.rb +9 -7
  108. data/spec/metric_fu/metrics/cane/cane_spec.rb +7 -7
  109. data/spec/metric_fu/metrics/churn/churn_spec.rb +1 -1
  110. data/spec/metric_fu/metrics/flay/flay_grapher_spec.rb +2 -2
  111. data/spec/metric_fu/metrics/flay/flay_spec.rb +2 -2
  112. data/spec/metric_fu/metrics/flog/flog_grapher_spec.rb +3 -3
  113. data/spec/metric_fu/metrics/generator_spec.rb +1 -35
  114. data/spec/metric_fu/metrics/graph_spec.rb +7 -24
  115. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +2 -2
  116. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +2 -2
  117. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +5 -5
  118. data/spec/metric_fu/metrics/hotspots/hotspots_spec.rb +2 -3
  119. data/spec/metric_fu/metrics/rails_best_practices/rails_best_practices_grapher_spec.rb +2 -2
  120. data/spec/metric_fu/metrics/rails_best_practices/rails_best_practices_spec.rb +1 -1
  121. data/spec/metric_fu/metrics/rcov/rcov_grapher_spec.rb +2 -2
  122. data/spec/metric_fu/metrics/rcov/rcov_spec.rb +1 -4
  123. data/spec/metric_fu/metrics/reek/reek_grapher_spec.rb +2 -2
  124. data/spec/metric_fu/metrics/reek/reek_spec.rb +1 -1
  125. data/spec/metric_fu/metrics/roodi/roodi_grapher_spec.rb +2 -2
  126. data/spec/metric_fu/metrics/roodi/roodi_spec.rb +3 -3
  127. data/spec/metric_fu/metrics/saikuro/saikuro_spec.rb +14 -10
  128. data/spec/metric_fu/metrics/stats/stats_grapher_spec.rb +2 -2
  129. data/spec/metric_fu/reporting/graphs/{engines/bluff_spec.rb → grapher_spec.rb} +8 -2
  130. data/spec/{run_spec.rb → metric_fu/run_spec.rb} +8 -13
  131. data/spec/spec_helper.rb +30 -5
  132. data/spec/support/deferred_garbaged_collection.rb +34 -0
  133. data/spec/support/helper_methods.rb +1 -15
  134. data/spec/support/suite.rb +4 -24
  135. data/spec/support/test_fixtures.rb +39 -0
  136. data/spec/support/timeout.rb +7 -0
  137. metadata +129 -104
  138. metadata.gz.sig +1 -0
  139. data/lib/metric_fu/metrics/cane/cane_bluff_grapher.rb +0 -16
  140. data/lib/metric_fu/metrics/cane/cane_gchart_grapher.rb +0 -25
  141. data/lib/metric_fu/metrics/flay/flay_bluff_grapher.rb +0 -16
  142. data/lib/metric_fu/metrics/flay/flay_gchart_grapher.rb +0 -20
  143. data/lib/metric_fu/metrics/flog/flog_bluff_grapher.rb +0 -17
  144. data/lib/metric_fu/metrics/flog/flog_gchart_grapher.rb +0 -28
  145. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_bluff_grapher.rb +0 -16
  146. data/lib/metric_fu/metrics/rails_best_practices/rails_best_practices_gchart_grapher.rb +0 -27
  147. data/lib/metric_fu/metrics/rcov/rcov_bluff_grapher.rb +0 -16
  148. data/lib/metric_fu/metrics/rcov/rcov_gchart_grapher.rb +0 -22
  149. data/lib/metric_fu/metrics/reek/reek_bluff_grapher.rb +0 -16
  150. data/lib/metric_fu/metrics/reek/reek_gchart_grapher.rb +0 -30
  151. data/lib/metric_fu/metrics/roodi/roodi_bluff_grapher.rb +0 -16
  152. data/lib/metric_fu/metrics/roodi/roodi_gchart_grapher.rb +0 -20
  153. data/lib/metric_fu/metrics/stats/stats_bluff_grapher.rb +0 -17
  154. data/lib/metric_fu/metrics/stats/stats_gchart_grapher.rb +0 -27
  155. data/lib/metric_fu/reporting/graphs/engines/bluff.rb +0 -33
  156. data/lib/metric_fu/reporting/graphs/engines/gchart.rb +0 -72
  157. data/lib/metric_fu/reporting/graphs/engines/init.rb +0 -19
  158. data/lib/metric_fu_requires.rb +0 -63
  159. data/spec/metric_fu/reporting/graphs/engines/gchart_spec.rb +0 -161
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8e516022008f58e6b2c1a6b80630159b8781a1ba
4
- data.tar.gz: 4bdeda9dc9ce45911a0f8bd7685b02b5d2a0b84b
5
- SHA512:
6
- metadata.gz: ca89e540f54237b18a66282491c3b2e46b5837c9619a9682b8d5e82a2c434f8dd793752d39e9464a94efdb8c2c0eb465d24a56e0bc84287ac6fe1de9ed78b5fd
7
- data.tar.gz: 3a339a545cf614a37cfe8b963705e56bc28ffb73c100a4e6ea1b33fc610c9fafdca2f56b8ff5c6d23db4c8f0b6b037712bbb86bbdeed58222759c63e9c1a9e4f
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OGFmOWRmZTljYTI4ZGNjMDZmNTk4ZGU3ZWUzMjlmMjc0M2ZhMDI1Yw==
5
+ data.tar.gz: !binary |-
6
+ NWM3YjY3MDk2MDFkZmQ1MjYzODM0NDkxZGFhOTE1NjQ1OTYxMDNkZg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NjdlNzUyN2YyMzI4NzU2NDU3ODJkOWQxNWEyM2IyN2NkZmRjODRlZDk4ZjA0
10
+ ODQ4NjdmMzEyMzI2MzkyYjRmMTE2ZjY0ZWM0NTBlZjJmYzY2ZTFiNjcxZGQ2
11
+ NTk0MzJhMTA3NjM5MzkxOTM5YzJkODc0MmNmMGMxMWI5YWEyMDE=
12
+ data.tar.gz: !binary |-
13
+ OTI2NGFkMzZjYzAzYTljYTBlNmUyZDBjMDQ4ZTlkY2UyZjQ4NTdiMWUwMDYz
14
+ NzI4ZTZhYzA0Y2ViOTUxOGUyN2MxNTAzNTQ2YWE4MGQ3YjFiNDVlMGY4Zjdi
15
+ NTBmNjJhNDk0MmU0ZTVlYTg4ZmZjZTc3MmMzZjZiOTYwZGZiMDA=
@@ -0,0 +1,3 @@
1
+ 
2
+ ����������F�!ުxr�駋eu@�,�H ����n�I&��Y���\�G�ӿ?PnR̗�:�U��J���;�؜y�h�S
3
+ �$��SjX�92�;��Q<t�5��b�P:����%��>�?)���)���{��=$?����~�rE�U ����^�*�����nyv�$yW�+��a��-}�� ���z��.N��������9�˥U՛gճ��������ɢT�B���1�g��z�|L��o
Binary file
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ test/version_tmp
19
19
  tmp
20
20
  *.swp
21
21
  tags
22
+ .idea
data/.metrics CHANGED
@@ -1,8 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # For testing that this file gets loaded
4
- $metric_file_loaded = true
5
-
6
3
  # Example Configuration
7
4
  #
8
5
  # MetricFu::Configuration.run do |config|
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
- bundler_args: --without development
2
+ bundler_args: --without coverage
3
3
  script: bundle exec rspec
4
4
  gemfile:
5
5
  - gemfiles/Gemfile.travis
data/.yardopts CHANGED
@@ -1,5 +1,4 @@
1
1
  --no-private
2
2
  --readme README.md
3
3
  lib/metric_fu.rb
4
- lib/metric_fu_requires.rb
5
4
  lib/metric_fu/**/*.rb
@@ -4,6 +4,7 @@ How to contribute:
4
4
 
5
5
  * Is something broken or not working as expected? Check for an existing issue or [create a new one](https://github.com/metricfu/metric_fu/issues/new)
6
6
  * See [Quick guide to writing good bug reports](https://github.com/metricfu/metric_fu/wiki/Issues:-Quick-guide-to-writing-good-bug-reports)
7
+ * IMPORTANT: Include the output of `metric_fu --debug-info`
7
8
 
8
9
  ## Code
9
10
 
@@ -1,2 +1,61 @@
1
- George Erickson
2
- Carlos Fernandez
1
+ Benjamin Fleischer
2
+ Jake Scruggs
3
+ Édouard Brière
4
+ Richard Huang
5
+ Grant McInnes
6
+ Petrik
7
+ Dan Mayer
8
+ Robin Curry
9
+ Sean Soper
10
+ Delwyn de Villiers
11
+ Carl Youngblood
12
+ Andre Arko
13
+ Chris Griego
14
+ Sathish
15
+ Nick Quaranto
16
+ Michael Stark
17
+ dan sinclair
18
+ joshuacronemeyer
19
+ jscruggs
20
+ David Chelimsky
21
+ Jay Zeschin
22
+ Alex Rothenberg
23
+ calveto
24
+ Avdi Grimm
25
+ Kevin Rutherford
26
+ Randy Souza
27
+ GeorgeErickson
28
+ Andy Gregorowicz
29
+ Tarsoly András
30
+ unknown
31
+ Extrovert
32
+ Andrew Timberlake
33
+ KAKUTANI Shintaro
34
+ Guilherme Souza
35
+ carlost
36
+ David Barri
37
+ Beau Fabry
38
+ Chris Mason
39
+ Andrew Selder
40
+ iain
41
+ Mark Wilden
42
+ Lars E. Hoeg
43
+ Eric Wollesen
44
+ Adam Bair
45
+ Jinzhu
46
+ Matthew Van Horn
47
+ Diego Carrion
48
+ Martin Gotink
49
+ benlovell
50
+ khall
51
+ adrien
52
+ Stefan Huber
53
+ Todd A. Jacobs
54
+ Hans Hasselberg
55
+ jayzes
56
+ Scyllinice
57
+ Matthew Gordon
58
+ Chris Ian Fiel
59
+ factorylabs
60
+ Joel Nimety
61
+ Paul Elliott
data/Gemfile CHANGED
@@ -1,20 +1,23 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
4
- # alternative graphing gem
5
- gem "googlecharts"
6
- group :development do
7
3
 
4
+ group :test, :coverage do
5
+ # https://github.com/kina/simplecov-rcov-text
6
+ gem 'simplecov-rcov-text'
8
7
  end
8
+
9
9
  group :test do
10
- gem "rspec", '>2'
11
10
  gem 'test-construct'
12
- if ENV['COVERAGE']
13
- gem 'simplecov'
14
- # https://github.com/kina/simplecov-rcov-text
15
- gem 'simplecov-rcov-text'
16
- end
17
- gem "fakefs", :require => "fakefs/safe", :platform => :ruby
18
11
  gem 'json'
12
+ gem 'pry'
13
+ gem 'pry-nav'
19
14
  end
15
+
20
16
  gemspec :path => File.expand_path('..', __FILE__)
17
+
18
+ # group :development, :test do
19
+ # gem 'devtools', git: 'https://github.com/rom-rb/devtools.git'
20
+ # end
21
+
22
+ # Added by devtools
23
+ eval_gemfile File.expand_path('Gemfile.devtools', File.dirname(__FILE__))
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ group :development do
4
+ gem 'rake', '~> 10.1.0'
5
+ gem 'rspec', '~> 2.14.1'
6
+ gem 'yard', '~> 0.8.7'
7
+ end
8
+
9
+ group :yard do
10
+ gem 'kramdown', '~> 1.2.0'
11
+ end
12
+
13
+ group :guard do
14
+ gem 'guard', '~> 1.8.1'
15
+ gem 'guard-bundler', '~> 1.0.0'
16
+ gem 'guard-rspec', '~> 3.0.2'
17
+ # gem 'guard-rubocop', '~> 0.2.0'
18
+
19
+ # file system change event handling
20
+ gem 'listen', '~> 1.3.0'
21
+ gem 'rb-fchange', '~> 0.0.6', require: false
22
+ gem 'rb-fsevent', '~> 0.9.3', require: false
23
+ gem 'rb-inotify', '~> 0.9.0', require: false
24
+
25
+ # notification handling
26
+ gem 'libnotify', '~> 0.8.0', require: false
27
+ gem 'rb-notifu', '~> 0.0.4', require: false
28
+ gem 'terminal-notifier-guard', '~> 1.5.3', require: false
29
+ end
30
+
31
+ group :metrics do
32
+ # gem 'rubocop', '~> 0.14.1'
33
+ gem 'simplecov', '~> 0.7.1'
34
+ end
35
+
36
+ platform :jruby do
37
+ group :jruby do
38
+ gem 'jruby-openssl', '~> 0.8.5'
39
+ end
40
+ end
@@ -0,0 +1,30 @@
1
+ guard :bundler do
2
+ watch('Gemfile')
3
+ watch('Gemfile.lock')
4
+ watch(%w{.+.gemspec\z})
5
+ end
6
+
7
+ guard :rspec, cli: File.read('.rspec').split.push('--fail-fast').join(' '), keep_failed: false do
8
+ # Run all specs if configuration is modified
9
+ watch('.rspec') { 'spec' }
10
+ watch('Guardfile') { 'spec' }
11
+ watch('Gemfile.lock') { 'spec' }
12
+ watch('spec/spec_helper.rb') { 'spec' }
13
+
14
+ # Run all specs if supporting files are modified
15
+ watch(%r{\Aspec/(?:fixtures|lib|support|shared)/.+\.rb\z}) { 'spec' }
16
+
17
+ # Run unit specs if associated lib code is modified
18
+ watch(%r{\Alib/(.+)\.rb\z}) { |m| "spec/#{m[1]}_spec.rb" }
19
+ watch("lib/#{File.basename(File.expand_path('../', __FILE__))}.rb") { 'spec' }
20
+
21
+ # Run a spec if it is modified
22
+ watch(%r{\Aspec/.+_spec\.rb$\z})
23
+ end
24
+
25
+ # TODO enable once we're ready to handle all the violations :)
26
+ # guard :rubocop, cli: %w[--config config/rubocop.yml] do
27
+ # watch(%r{.+\.(?:rb|rake)\z})
28
+ # watch(%r{\Aconfig/rubocop\.yml\z}) { |m| File.dirname(m[0]) }
29
+ # watch(%r{(?:.+/)?\.rubocop\.yml\z}) { |m| File.dirname(m[0]) }
30
+ # end
data/HISTORY.md CHANGED
@@ -10,6 +10,59 @@ As such, a _Feature_ would map to either major or minor. A _bug fix_ to a patch.
10
10
  * Fixes
11
11
  * Misc
12
12
 
13
+ ### MetricFu [4.5.1 / 2013-11-07](https://github.com/metricfu/metric_fu/compare/v4.4.4...v4.5.1)
14
+
15
+ * Features
16
+ * Fixes
17
+ * Misc
18
+ * Releasing the signed gem didn't work. See ed2f96d8
19
+
20
+ ### MetricFu [4.5.0 / 2013-11-07](https://github.com/metricfu/metric_fu/compare/v4.4.4...v4.5.0)
21
+
22
+ * Features
23
+ * Signed gem; added certs/bf4.pem
24
+ * Run metrics without shelling out; use Open3.popen3 (Benjamin Fleischer, #157)
25
+ - GemRun runs external libraries, outputs nice error messages
26
+ - GemVersion returns version requirements for a gem dependency; replaces metric_fu_requires
27
+ - Consolidate code that runs external metrics to the generator
28
+ - `--debug-info` now outputs metric dependencies
29
+ * Add new MetricFu.run_dir that defaults to Pathname.pwd, but can be set (Benjamin Fleischer, #160)
30
+ - Used in dummy app for testing 9fcc085
31
+ * User config (.metrics) now loaded when metric_fu required (Benjamin Fleischer, #158)
32
+ * Consolidate grapher code; remove gchart grapher (Benjamin Fleischer, 5fd8f4)
33
+ - Remove bluff gem; bluff grapher is a js library. (Benjamin Fleischer, 8b534c7)
34
+ * Better rake tasks: can set options form the task (Benjamin Fleischer, 11ac27)
35
+ - Add ::run(options) and ::run_only(metric_name) to MetricFu namespace
36
+ * Fixes
37
+ * Churn hotspot no longer tries to read directories as if they were files (Adrien Montfort, #169)
38
+ * Set default Reek config to config/*.reek, per Reek docs (Benjamin Fleischer, #165)
39
+ - Ensure .reek still loaded, for backwards-compatibility
40
+ * Bump reek patch version due to change in meaning in reek config (Benjamin Fleischer, #166)
41
+ * Cleanup scratch files Saikuro leaves behind; else they are re-used! (Benjamin Fleischer, 91ac9af)
42
+ * Various IO-related fixes
43
+ - Close read pipe when capturing output, per @eclubb, Earle Clubb (6696d42)
44
+ - Stop leaving files open everywhere, even though 'everyone does it'. (Benjamin Fleischer, #159)
45
+ - Isolate file-system interactions in specs; rbx specs can pass (Benjamin Fleischer, #161)
46
+ * Remove unused before/after generator methods; standardize not_implemented message (Benjamin Fleischer, 5842d83)
47
+ * Misc
48
+ * Update README, and how to contribute (Benjamin Fleischer, #114)
49
+ * Set sane defaults for generator per_file_data hash (Benjamin Fleischer, d991fb8)
50
+ * Ensure gemspec reads AUTHORS from relative path (Benjamin Fleischer, ee0274f)
51
+ * Configure SimpleCov to run with the html and rcov text formatters (Benjamin Fleischer, d372d00)
52
+ * Extract CLI option parsing methods (Benjamin Fleischer, a54d018)
53
+ * Test improvements
54
+ - Update setup, add pry (Benjamin Fleischer)
55
+ - Add rspec FAIL_FAST option (bd2745a)
56
+ - Update spec_helper, add filters, defer gc (3db59d7)
57
+ - Configure tests not to manage GC under JRuby (000200b)
58
+ - Remove FakeFS; doesn't seem to be speeding up the tests, but it does break them (afc5518)
59
+ - Cache test fixtures. (And rename from resources to fixtures.) (Benjamin Fleischer, #164)
60
+ - Set timeout on each test (Benjamin Fleischer, f1d5f20)
61
+ - Add devtools-derived guardfile and configs (Benjamin Fleischer, e2463de)
62
+ - Ensure RailsBestPractices test runs when available (Benjamin Fleischer, #150)
63
+
64
+ add all contriubtors
65
+
13
66
  ### MetricFu [4.4.4 / 2013-09-27](https://github.com/metricfu/metric_fu/compare/v4.4.3...v4.4.4)
14
67
 
15
68
  * Features
@@ -44,7 +97,7 @@ As such, a _Feature_ would map to either major or minor. A _bug fix_ to a patch.
44
97
 
45
98
  * Features
46
99
  * Fixes
47
- * No longer consider an ampty sexp in LineNumbers an error. A file with only comments is empty of code. (Benjamin Fleischer)
100
+ * No longer consider an empty sexp in LineNumbers an error. A file with only comments is empty of code. (Benjamin Fleischer)
48
101
  * Prevent encoding errors when using syntax highlighting via coderay (Benjamin Fleischer #120, #131)
49
102
  * Misc
50
103
  * Update dependencies: cane, flay, flog, reek; switch from metric_fu-roodi to revived roodi (Benjamin Fleischer #130)
data/README.md CHANGED
@@ -1,78 +1,81 @@
1
- # MetricFu [![Gem Version](https://badge.fury.io/rb/metric_fu.png)](http://badge.fury.io/rb/metric_fu) [![Build Status](https://travis-ci.org/metricfu/metric_fu.png?branch=master)](http://travis-ci.org/metricfu/metric_fu)
1
+ # MetricFu [![Gem Version](https://badge.fury.io/rb/metric_fu.png)](http://badge.fury.io/rb/metric_fu) [![Build Status](https://travis-ci.org/metricfu/metric_fu.png?branch=master)](http://travis-ci.org/metricfu/metric_fu)
2
2
 
3
3
  [![Code Climate](https://codeclimate.com/github/metricfu/metric_fu.png)](https://codeclimate.com/github/metricfu/metric_fu) [![Dependency Status](https://gemnasium.com/metricfu/metric_fu.png)](https://gemnasium.com/metricfu/metric_fu)
4
4
 
5
5
  [Rdoc](http://rdoc.info/github/metricfu/metric_fu/)
6
6
 
7
- ## Metrics
8
-
9
- * [Cane](https://rubygems.org/gems/cane), [Source](http://github.com/square/cane)
10
- * [Churn](https://rubygems.org/gems/churn), [Source](http://github.com/danmayer/churn)
11
- * [Flog](https://rubygems.org/gems/flog), [Source](https://github.com/seattlerb/flog)
12
- * [Flay](https://rubygems.org/gems/flay), [Source](https://github.com/seattlerb/flay)
13
- * [Reek](https://rubygems.org/gems/reek) [Source](https://github.com/troessner/reek)
14
- * [Roodi](https://rubygems.org/gems/metric_fu-roodi), [Source](https://github.com/metricfu/roodi)
15
- * [Saikuro](https://rubygems.org/gems/metric_fu-Saikuro), [Source](https://github.com/metricfu/Saikuro)
16
- [Code Statistics](https://rubygems.org/gems/code_metrics), [Source](https://github.com/bf4/code_metrics) )
17
- * Rails-only
18
- * [Rails Best Practices](https://rubygems.org/gems/rails_best_practices), [Source](https://github.com/railsbp/rails_best_practices)
19
- * Test Coverage
20
- * 1.9: [SimpleCov](http://rubygems.org/gems/simplecov) and [SimpleCov-Rcov-Text](http://rubygems.org/gems/simplecov-rcov-text)
21
- * 1.8: [Rcov](http://rubygems.org/gems/rcov)
22
- * Hotspots (a meta-metric of the above)
23
-
24
7
  ## Installation
25
8
 
26
9
  gem install metric_fu
27
10
 
28
- If you have trouble installing the gem, try adding metric_fu to your Gemfile. You may also want to file a ticket on the issues page.
11
+ If you have trouble installing the gem
12
+ - try adding metric_fu to your Gemfile and bundling.
13
+ - file a ticket on the issues page.
29
14
 
30
- See documentation on the rubyforge page for how to customize your metrics. Otherwise, all current information is either in this repo or on the wiki.
15
+ MetricFu is cryptographically signed. To be sure the gem you install hasn't been tampered with:
16
+ - Add my public key (if you haven't already) as a trusted certificate `gem cert --add <(curl -Ls https://raw.github.com/metricfu/metric_fu/master/certs/bf4.pem)`
17
+ - `gem install metric_fu -P HighSecurity`
18
+ - This may cause installation to fail if non-signed dependent gems are also being installed.
31
19
 
32
20
  ## Usage
33
21
 
34
- By default, you can run all metrics from the root of an app with the command `metric_fu`
22
+ From your application root. Running via Rake is still supported.
35
23
 
36
- See `metric_fu --help` for more options
24
+ ```sh
25
+ metric_fu
26
+ ```
37
27
 
38
- ## Compatibility
28
+ See:
29
+ - `metric_fu --help` for more options
30
+ - the [.metrics file](https://github.com/metricfu/metric_fu/blob/master/.metrics)
31
+ - Documentation and Compatibility below
32
+ - There is also a [wiki page of user-maintained usage information](https://github.com/metricfu/metric_fu/wiki#usage)
39
33
 
40
- * It is currently testing on MRI (1.9.3 and 2.0.0), JRuby (19 mode), and Rubinius (19 mode). Ruby 1.8 is no longer supported due to the cane library.
34
+ ## Contact
41
35
 
42
- * For 1.8.7 support, see version 3.0.0 for partial support, or 2.1.3.7.18.1 (where [Semantic Versioning](http://semver.org/) goes to die)
36
+ *Code and Bug Reports*
43
37
 
44
- * The `metric_fu-Saikuro` fork and `metric_fu-roodi` fork are a part of an attempt to get metric_fu working in a modern Ruby environment, specifically compatibility with Ruby 1.9 and Bundler.
38
+ * [Issue Tracker](http://github.com/metricfu/metric_fu/issues)
39
+ * See [CONTRIBUTING](https://github.com/metricfu/metric_fu/blob/master/CONTRIBUTING.md) for how to contribute
45
40
 
46
- * metric_fu no longer runs rcov itself. You may still use rcov metrics as documented below
41
+ *Questions, Problems, Suggestions, etc.*
47
42
 
48
- * The Cane, Flog, and Rails Best Practices metrics are disabled when Ripper is not available
43
+ * [Google Group](https://groups.google.com/forum/#!forum/metric_fu)
49
44
 
50
45
  ## Documentation
51
46
 
52
- *[See wiki](https://github.com/metricfu/metric_fu/wiki#usage)
53
47
 
54
48
  ## Formatters
55
49
 
56
50
  ### Built-in Formatters
57
51
 
58
- By default, metric_fu will use the built-in html formatter to generate HTML reports for each metric with pretty graphs.
52
+ By default, metric_fu will use the built-in html formatter to generate HTML reports for each metric with pretty graphs.
59
53
 
60
54
  These reports are generated in metric_fu's output directory (```tmp/metric_fu/output```) by default. You can customize the output directory by specifying an out directory at the command line
61
55
  using a relative path:
62
56
 
63
- metric_fu --out custom_directory # outputs to tmp/metric_fu/custom_directory
57
+ ```sh
58
+ metric_fu --out custom_directory # outputs to tmp/metric_fu/custom_directory
59
+ ```
64
60
 
65
61
  or a full path:
66
62
 
67
- metric_fu --out /home/metrics # outputs to /home/metrics
63
+ ```sh
64
+ metric_fu --out /home/metrics # outputs to /home/metrics
65
+ ```
68
66
 
69
67
  You can specify a different formatter at the command line by referencing a built-in formatter or providing the fully-qualified name of a custom formatter.
70
68
 
71
69
 
72
- metric_fu --format yaml --out custom_report.yml
70
+ ```sh
71
+ metric_fu --format yaml --out custom_report.yml
72
+ ```
73
+
73
74
  or
74
75
 
75
- metric_fu --format MyCustomFormatter
76
+ ```sh
77
+ metric_fu --format MyCustomFormatter
78
+ ```
76
79
 
77
80
  ### Custom Formatters
78
81
 
@@ -83,14 +86,14 @@ that takes an options hash and responds to one or more notifications:
83
86
 
84
87
  ```ruby
85
88
  class MyCustomFormatter
86
- def initialize(opts={}); end # metric_fu will pass in an output param if provided.
89
+ def initialize(opts={}); end # metric_fu will pass in an output param if provided.
87
90
 
88
91
  # Should include one or more of...
89
- def start; end # Sent before metric_fu starts metric measurements.
90
- def start_metric(metric); end # Sent before individual metric is measured.
91
- def finish_metric(metric); end # Sent after individual metric measurement is complete.
92
- def finish; end # Sent after metric_fu has completed all measurements.
93
- def display_results; end # Used to open results in browser, etc.
92
+ def start; end # Sent before metric_fu starts metric measurements.
93
+ def start_metric(metric); end # Sent before individual metric is measured.
94
+ def finish_metric(metric); end # Sent after individual metric measurement is complete.
95
+ def finish; end # Sent after metric_fu has completed all measurements.
96
+ def display_results; end # Used to open results in browser, etc.
94
97
  end
95
98
  ```
96
99
 
@@ -108,22 +111,19 @@ For instance, to require a formatter in your app's lib directory:
108
111
  require './lib/my_custom_formatter.rb'
109
112
  ```
110
113
 
111
- ### Configuration
112
-
113
- see the .metrics file
114
-
115
114
  ### Using Coverage Metrics
116
115
 
117
116
  in your .metrics file add the below to run pre-generated metrics
118
117
 
118
+ ```ruby
119
119
  MetricFu::Configuration.run do |config|
120
120
  config.configure_metric(:rcov) do |rcov|
121
121
  rcov.enabled = true
122
- coverage_file = File.expand_path("coverage/rcov/rcov.txt", Dir.pwd)
123
- rcov.external = coverage_file
122
+ rcov.external = File.expand_path("coverage/rcov/rcov.txt", Dir.pwd)
124
123
  rcov.activate
125
124
  end
126
125
  end
126
+ ```
127
127
 
128
128
  If you want metric_fu to actually run rcov itself (1.8 only), don't specify an external file to read from
129
129
 
@@ -131,46 +131,76 @@ If you want metric_fu to actually run rcov itself (1.8 only), don't specify an e
131
131
 
132
132
  To generate the same metrics metric_fu has been generating run from the root of your project before running metric_fu
133
133
 
134
- RAILS_ENV=test rcov $(ruby -e "puts Dir['{spec,test}/**/*_{spec,test}.rb'].join(' ')") --sort coverage --no-html --text-coverage --no-color --profile --exclude-only '.*' --include-file "\Aapp,\Alib" -Ispec >> coverage/rcov/rcov.txt
134
+ ```sh
135
+ RAILS_ENV=test rcov $(ruby -e "puts Dir['{spec,test}/**/*_{spec,test}.rb'].join(' ')") --sort coverage --no-html --text-coverage --no-color --profile --exclude-only '.*' --include-file "\Aapp,\Alib" -Ispec > coverage/rcov/rcov.txt
136
+ ```
135
137
 
136
138
  #### Simplecov metrics with Ruby 1.9 and 2.0
137
139
 
138
140
  Add to your Gemfile or otherwise install
139
141
 
142
+ ```ruby
140
143
  gem 'simplecov'
141
144
  # https://github.com/kina/simplecov-rcov-text
142
145
  gem 'simplecov-rcov-text'
146
+ ```
143
147
 
144
- Modify your spec_helper as per the SimpleCov docs and run your tests before running metric_fu
148
+ Modify your [spec_helper](https://github.com/metricfu/metric_fu/blob/master/spec/spec_helper.rb) as per the SimpleCov docs and run your tests before running metric_fu
145
149
 
150
+ ```ruby
146
151
  #in your spec_helper
147
152
  require 'simplecov'
148
153
  require 'simplecov-rcov-text'
149
154
  SimpleCov.formatter = SimpleCov::Formatter::RcovTextFormatter
155
+ # or
156
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
157
+ SimpleCov::Formatter::HTMLFormatter,
158
+ SimpleCov::Formatter::RcovTextFormatter
159
+ ]
150
160
  SimpleCov.start
151
- # SimpleCov.start 'rails'
161
+ ```
152
162
 
153
- ### Historical
163
+ ## Compatibility
154
164
 
155
- There is some useful-but-out-of-date documentation about configuring metric_fu at http://metric-fu.rubyforge.org/ and a change log in the the HISTORY file.
165
+ * It is currently testing on MRI (>= 1.9.3), JRuby (19 mode), and Rubinius (19 mode). Ruby 1.8 is no longer supported.
156
166
 
157
- ## Contributions
167
+ * For 1.8.7 support, see version 3.0.0 for partial support, or 2.1.3.7.18.1 (where [Semantic Versioning](http://semver.org/) goes to die)
168
+
169
+ * MetricFu no longer runs any of the analyzed code. For code coverage, You may still use rcov metrics as documented below
158
170
 
159
- See the TODO for some ideas
171
+ * The Cane, Flog, and Rails Best Practices metrics are disabled when Ripper is not available
172
+
173
+ ### Historical
160
174
 
161
- See [CONTRIBUTING](https://github.com/metricfu/metric_fu/blob/master/CONTRIBUTING.md) for how to contribute
175
+ There is some useful-but-out-of-date documentation about configuring metric_fu at http://metricfu.github.io/metric_fu and a change log in the the HISTORY file.
162
176
 
163
177
  ## Resources:
164
178
 
165
179
  This is the official repository for metric_fu. The original repository by Jake Scruggs at [https://github.com/jscruggs/metric_fu](https://github.com/jscruggs/metric_fu) has been deprecated.
166
180
 
167
181
  * [Official Repository](http://github.com/metricfu/metric_fu)
168
- * [Issue Tracker](http://metricfu.github.io/metric_fu/)
169
- * [Google Group](http://metricfu.github.io/metric_fu/)
170
182
  * [Outdated Homepage](http://metricfu.github.io/metric_fu/)
171
183
  * [List of code tools](https://github.com/metricfu/metric_fu/wiki/Code-Tools)
172
184
  * [Roadmap](https://github.com/metricfu/metric_fu/wiki/Roadmap)
173
185
 
186
+ ### Metrics
187
+
188
+ * [Cane](https://rubygems.org/gems/cane), [Source](http://github.com/square/cane)
189
+ * [Churn](https://rubygems.org/gems/churn), [Source](http://github.com/danmayer/churn)
190
+ * [Flog](https://rubygems.org/gems/flog), [Source](https://github.com/seattlerb/flog)
191
+ * [Flay](https://rubygems.org/gems/flay), [Source](https://github.com/seattlerb/flay)
192
+ * [Reek](https://rubygems.org/gems/reek) [Source](https://github.com/troessner/reek)
193
+ * [Roodi](https://rubygems.org/gems/roodi), [Source](https://github.com/roodi/roodi)
194
+ * [Saikuro](https://rubygems.org/gems/metric_fu-Saikuro), [Source](https://github.com/metricfu/Saikuro)
195
+ [Code Statistics](https://rubygems.org/gems/code_metrics), [Source](https://github.com/bf4/code_metrics) )
196
+ * Rails-only
197
+ * [Rails Best Practices](https://rubygems.org/gems/rails_best_practices), [Source](https://github.com/railsbp/rails_best_practices)
198
+ * Test Coverage
199
+ * 1.9: [SimpleCov](http://rubygems.org/gems/simplecov) and [SimpleCov-Rcov-Text](http://rubygems.org/gems/simplecov-rcov-text)
200
+ * 1.8: [Rcov](http://rubygems.org/gems/rcov)
201
+ * Hotspots (a meta-metric of the above)
202
+
203
+
174
204
  ### Original Resources:
175
205
 
176
206
  * Github: http://github.com/jscruggs/metric_fu