metric_fu 4.4.4 → 4.5.1

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 (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