code_metric_fu 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +28 -0
  3. data/.metrics +3 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +15 -0
  6. data/.rubocop_todo.yml +69 -0
  7. data/.simplecov +74 -0
  8. data/.travis.yml +22 -0
  9. data/.yardopts +4 -0
  10. data/AUTHORS +12 -0
  11. data/CONTRIBUTING.md +47 -0
  12. data/CONTRIBUTORS +76 -0
  13. data/DEV.md +76 -0
  14. data/Gemfile +74 -0
  15. data/Guardfile +30 -0
  16. data/HISTORY.md +705 -0
  17. data/MIT-LICENSE +22 -0
  18. data/README.md +299 -0
  19. data/Rakefile +27 -0
  20. data/TODO.md +118 -0
  21. data/appveyor.yml +31 -0
  22. data/bin/metric_fu +9 -0
  23. data/bin/mf-cane +10 -0
  24. data/bin/mf-churn +10 -0
  25. data/bin/mf-flay +10 -0
  26. data/bin/mf-reek +10 -0
  27. data/bin/mf-roodi +10 -0
  28. data/bin/mf-saikuro +10 -0
  29. data/certs/bf4.pem +22 -0
  30. data/checksum/.gitkeep +0 -0
  31. data/checksum/metric_fu-4.10.0.gem.sha512 +1 -0
  32. data/checksum/metric_fu-4.11.0.gem.sha512 +1 -0
  33. data/checksum/metric_fu-4.11.1.gem.sha512 +1 -0
  34. data/checksum/metric_fu-4.11.2.gem.sha512 +1 -0
  35. data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
  36. data/checksum/metric_fu-4.11.4.gem.sha512 +1 -0
  37. data/checksum/metric_fu-4.12.0.gem.sha512 +1 -0
  38. data/checksum/metric_fu-4.2.0.gem.sha512 +1 -0
  39. data/checksum/metric_fu-4.2.1.gem.sha512 +1 -0
  40. data/checksum/metric_fu-4.3.0.gem.sha512 +1 -0
  41. data/checksum/metric_fu-4.3.1.gem.sha512 +1 -0
  42. data/checksum/metric_fu-4.4.0.gem.sha512 +1 -0
  43. data/checksum/metric_fu-4.4.1.gem.sha512 +1 -0
  44. data/checksum/metric_fu-4.4.2.gem.sha512 +1 -0
  45. data/checksum/metric_fu-4.4.3.gem.sha512 +1 -0
  46. data/checksum/metric_fu-4.4.4.gem.sha512 +1 -0
  47. data/checksum/metric_fu-4.5.0.gem.sha512 +1 -0
  48. data/checksum/metric_fu-4.5.1.gem.sha512 +1 -0
  49. data/checksum/metric_fu-4.5.2.gem.sha512 +1 -0
  50. data/checksum/metric_fu-4.6.0.gem.sha512 +1 -0
  51. data/checksum/metric_fu-4.7.0.gem.sha512 +1 -0
  52. data/checksum/metric_fu-4.7.1.gem.sha512 +1 -0
  53. data/checksum/metric_fu-4.7.2.gem.sha512 +1 -0
  54. data/checksum/metric_fu-4.7.3.gem.sha512 +1 -0
  55. data/checksum/metric_fu-4.7.4.gem.sha512 +1 -0
  56. data/checksum/metric_fu-4.8.0.gem.sha512 +1 -0
  57. data/checksum/metric_fu-4.9.0.gem.sha512 +1 -0
  58. data/config/roodi_config.yml +22 -0
  59. data/config/rubocop.yml +269 -0
  60. data/gem_tasks/build.rake +197 -0
  61. data/gem_tasks/rubocop.rake +10 -0
  62. data/gem_tasks/usage_test.rake +19 -0
  63. data/gem_tasks/yard.rake +24 -0
  64. data/lib/metric_fu/calculate.rb +10 -0
  65. data/lib/metric_fu/cli/client.rb +26 -0
  66. data/lib/metric_fu/cli/helper.rb +80 -0
  67. data/lib/metric_fu/cli/parser.rb +138 -0
  68. data/lib/metric_fu/configuration.rb +150 -0
  69. data/lib/metric_fu/constantize.rb +57 -0
  70. data/lib/metric_fu/data_structures/line_numbers.rb +112 -0
  71. data/lib/metric_fu/data_structures/location.rb +110 -0
  72. data/lib/metric_fu/data_structures/sexp_node.rb +107 -0
  73. data/lib/metric_fu/environment.rb +129 -0
  74. data/lib/metric_fu/errors/analysis_error.rb +4 -0
  75. data/lib/metric_fu/formatter/html.rb +96 -0
  76. data/lib/metric_fu/formatter/syntax.rb +45 -0
  77. data/lib/metric_fu/formatter/yaml.rb +18 -0
  78. data/lib/metric_fu/formatter.rb +40 -0
  79. data/lib/metric_fu/gem_run.rb +70 -0
  80. data/lib/metric_fu/gem_version.rb +92 -0
  81. data/lib/metric_fu/generator.rb +135 -0
  82. data/lib/metric_fu/io.rb +132 -0
  83. data/lib/metric_fu/loader.rb +105 -0
  84. data/lib/metric_fu/logger.rb +62 -0
  85. data/lib/metric_fu/logging/mf_debugger.rb +23 -0
  86. data/lib/metric_fu/metric.rb +143 -0
  87. data/lib/metric_fu/metrics/cane/generator.rb +95 -0
  88. data/lib/metric_fu/metrics/cane/grapher.rb +37 -0
  89. data/lib/metric_fu/metrics/cane/metric.rb +34 -0
  90. data/lib/metric_fu/metrics/cane/report.html.erb +87 -0
  91. data/lib/metric_fu/metrics/cane/violations.rb +46 -0
  92. data/lib/metric_fu/metrics/churn/generator.rb +37 -0
  93. data/lib/metric_fu/metrics/churn/hotspot.rb +43 -0
  94. data/lib/metric_fu/metrics/churn/metric.rb +29 -0
  95. data/lib/metric_fu/metrics/churn/report.html.erb +58 -0
  96. data/lib/metric_fu/metrics/flay/generator.rb +51 -0
  97. data/lib/metric_fu/metrics/flay/grapher.rb +37 -0
  98. data/lib/metric_fu/metrics/flay/hotspot.rb +52 -0
  99. data/lib/metric_fu/metrics/flay/metric.rb +28 -0
  100. data/lib/metric_fu/metrics/flay/report.html.erb +29 -0
  101. data/lib/metric_fu/metrics/flog/generator.rb +113 -0
  102. data/lib/metric_fu/metrics/flog/grapher.rb +77 -0
  103. data/lib/metric_fu/metrics/flog/hotspot.rb +46 -0
  104. data/lib/metric_fu/metrics/flog/metric.rb +29 -0
  105. data/lib/metric_fu/metrics/flog/report.html.erb +50 -0
  106. data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +34 -0
  107. data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +114 -0
  108. data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +23 -0
  109. data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +12 -0
  110. data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +20 -0
  111. data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +70 -0
  112. data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +29 -0
  113. data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +91 -0
  114. data/lib/metric_fu/metrics/hotspots/analysis/record.rb +32 -0
  115. data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +24 -0
  116. data/lib/metric_fu/metrics/hotspots/analysis/table.rb +67 -0
  117. data/lib/metric_fu/metrics/hotspots/generator.rb +40 -0
  118. data/lib/metric_fu/metrics/hotspots/hotspot.rb +87 -0
  119. data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +61 -0
  120. data/lib/metric_fu/metrics/hotspots/metric.rb +20 -0
  121. data/lib/metric_fu/metrics/hotspots/report.html.erb +60 -0
  122. data/lib/metric_fu/metrics/rails_best_practices/generator.rb +47 -0
  123. data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +38 -0
  124. data/lib/metric_fu/metrics/rails_best_practices/metric.rb +31 -0
  125. data/lib/metric_fu/metrics/rails_best_practices/report.html.erb +22 -0
  126. data/lib/metric_fu/metrics/rcov/external_client.rb +22 -0
  127. data/lib/metric_fu/metrics/rcov/generator.rb +75 -0
  128. data/lib/metric_fu/metrics/rcov/grapher.rb +37 -0
  129. data/lib/metric_fu/metrics/rcov/hotspot.rb +46 -0
  130. data/lib/metric_fu/metrics/rcov/metric.rb +61 -0
  131. data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +149 -0
  132. data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
  133. data/lib/metric_fu/metrics/rcov/report.html.erb +40 -0
  134. data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +74 -0
  135. data/lib/metric_fu/metrics/reek/generator.rb +97 -0
  136. data/lib/metric_fu/metrics/reek/grapher.rb +55 -0
  137. data/lib/metric_fu/metrics/reek/hotspot.rb +95 -0
  138. data/lib/metric_fu/metrics/reek/metric.rb +26 -0
  139. data/lib/metric_fu/metrics/reek/report.html.erb +35 -0
  140. data/lib/metric_fu/metrics/roodi/generator.rb +41 -0
  141. data/lib/metric_fu/metrics/roodi/grapher.rb +37 -0
  142. data/lib/metric_fu/metrics/roodi/hotspot.rb +39 -0
  143. data/lib/metric_fu/metrics/roodi/metric.rb +24 -0
  144. data/lib/metric_fu/metrics/roodi/report.html.erb +22 -0
  145. data/lib/metric_fu/metrics/saikuro/generator.rb +145 -0
  146. data/lib/metric_fu/metrics/saikuro/hotspot.rb +51 -0
  147. data/lib/metric_fu/metrics/saikuro/metric.rb +31 -0
  148. data/lib/metric_fu/metrics/saikuro/parsing_element.rb +37 -0
  149. data/lib/metric_fu/metrics/saikuro/report.html.erb +71 -0
  150. data/lib/metric_fu/metrics/saikuro/scratch_file.rb +108 -0
  151. data/lib/metric_fu/metrics/stats/generator.rb +82 -0
  152. data/lib/metric_fu/metrics/stats/grapher.rb +40 -0
  153. data/lib/metric_fu/metrics/stats/hotspot.rb +35 -0
  154. data/lib/metric_fu/metrics/stats/metric.rb +28 -0
  155. data/lib/metric_fu/metrics/stats/report.html.erb +44 -0
  156. data/lib/metric_fu/reporter.rb +37 -0
  157. data/lib/metric_fu/reporting/graphs/graph.rb +69 -0
  158. data/lib/metric_fu/reporting/graphs/grapher.rb +66 -0
  159. data/lib/metric_fu/reporting/result.rb +59 -0
  160. data/lib/metric_fu/run.rb +82 -0
  161. data/lib/metric_fu/tasks/metric_fu.rake +54 -0
  162. data/lib/metric_fu/templates/_gem_info.html.erb +8 -0
  163. data/lib/metric_fu/templates/_graph.html.erb +2 -0
  164. data/lib/metric_fu/templates/_report_footer.html.erb +1 -0
  165. data/lib/metric_fu/templates/configuration.rb +25 -0
  166. data/lib/metric_fu/templates/css/bluff.css +15 -0
  167. data/lib/metric_fu/templates/css/buttons.css +82 -0
  168. data/lib/metric_fu/templates/css/default.css +43 -0
  169. data/lib/metric_fu/templates/css/integrity.css +337 -0
  170. data/lib/metric_fu/templates/css/rcov.css +32 -0
  171. data/lib/metric_fu/templates/css/reset.css +7 -0
  172. data/lib/metric_fu/templates/css/syntax.css +19 -0
  173. data/lib/metric_fu/templates/index.html.erb +13 -0
  174. data/lib/metric_fu/templates/javascripts/bluff-min.js +1 -0
  175. data/lib/metric_fu/templates/javascripts/bluff_graph.js +15 -0
  176. data/lib/metric_fu/templates/javascripts/excanvas.js +35 -0
  177. data/lib/metric_fu/templates/javascripts/highcharts.js +294 -0
  178. data/lib/metric_fu/templates/javascripts/highcharts_graph.js +38 -0
  179. data/lib/metric_fu/templates/javascripts/js-class.js +1 -0
  180. data/lib/metric_fu/templates/javascripts/standalone-framework.js +17 -0
  181. data/lib/metric_fu/templates/javascripts/utils.js +9 -0
  182. data/lib/metric_fu/templates/layout.html.erb +41 -0
  183. data/lib/metric_fu/templates/metrics_template.rb +86 -0
  184. data/lib/metric_fu/templates/report.html.erb +31 -0
  185. data/lib/metric_fu/templates/report.rb +41 -0
  186. data/lib/metric_fu/templates/template.rb +247 -0
  187. data/lib/metric_fu/utility.rb +79 -0
  188. data/lib/metric_fu/version.rb +9 -0
  189. data/lib/metric_fu.rb +143 -0
  190. data/metric_fu.gemspec +72 -0
  191. data/spec/capture_warnings.rb +55 -0
  192. data/spec/cli/helper_spec.rb +165 -0
  193. data/spec/dummy/.gitignore +1 -0
  194. data/spec/dummy/.gitkeep +0 -0
  195. data/spec/dummy/.metrics +4 -0
  196. data/spec/dummy/lib/.gitkeep +0 -0
  197. data/spec/dummy/lib/bad_encoding.rb +6 -0
  198. data/spec/dummy/spec/.gitkeep +0 -0
  199. data/spec/fixtures/20090630.yml +7922 -0
  200. data/spec/fixtures/coverage-153.rb +11 -0
  201. data/spec/fixtures/coverage.rb +13 -0
  202. data/spec/fixtures/exit0.sh +3 -0
  203. data/spec/fixtures/exit1.sh +3 -0
  204. data/spec/fixtures/hotspots/flog.yml +86 -0
  205. data/spec/fixtures/hotspots/generator.yml +47 -0
  206. data/spec/fixtures/hotspots/generator_analysis.yml +53 -0
  207. data/spec/fixtures/hotspots/reek.yml +14 -0
  208. data/spec/fixtures/hotspots/roodi.yml +13 -0
  209. data/spec/fixtures/hotspots/saikuro.yml +27 -0
  210. data/spec/fixtures/hotspots/several_metrics.yml +47 -0
  211. data/spec/fixtures/hotspots/stats.yml +4 -0
  212. data/spec/fixtures/hotspots/three_metrics_on_same_file.yml +36 -0
  213. data/spec/fixtures/line_numbers/foo.rb +33 -0
  214. data/spec/fixtures/line_numbers/module.rb +11 -0
  215. data/spec/fixtures/line_numbers/module_surrounds_class.rb +15 -0
  216. data/spec/fixtures/line_numbers/two_classes.rb +11 -0
  217. data/spec/fixtures/metric_missing.yml +1 -0
  218. data/spec/fixtures/rcov_output.txt +135 -0
  219. data/spec/fixtures/saikuro/app/controllers/sessions_controller.rb_cyclo.html +10 -0
  220. data/spec/fixtures/saikuro/app/controllers/users_controller.rb_cyclo.html +16 -0
  221. data/spec/fixtures/saikuro/index_cyclo.html +155 -0
  222. data/spec/fixtures/saikuro_sfiles/thing.rb_cyclo.html +11 -0
  223. data/spec/metric_fu/calculate_spec.rb +21 -0
  224. data/spec/metric_fu/configuration_spec.rb +90 -0
  225. data/spec/metric_fu/data_structures/line_numbers_spec.rb +63 -0
  226. data/spec/metric_fu/data_structures/location_spec.rb +110 -0
  227. data/spec/metric_fu/formatter/configuration_spec.rb +44 -0
  228. data/spec/metric_fu/formatter/html_spec.rb +138 -0
  229. data/spec/metric_fu/formatter/yaml_spec.rb +61 -0
  230. data/spec/metric_fu/formatter_spec.rb +49 -0
  231. data/spec/metric_fu/gem_version_spec.rb +12 -0
  232. data/spec/metric_fu/generator_spec.rb +130 -0
  233. data/spec/metric_fu/loader_spec.rb +10 -0
  234. data/spec/metric_fu/metric_spec.rb +46 -0
  235. data/spec/metric_fu/metrics/cane/configuration_spec.rb +22 -0
  236. data/spec/metric_fu/metrics/cane/generator_spec.rb +184 -0
  237. data/spec/metric_fu/metrics/churn/configuration_spec.rb +13 -0
  238. data/spec/metric_fu/metrics/churn/generator_spec.rb +64 -0
  239. data/spec/metric_fu/metrics/flay/configuration_spec.rb +13 -0
  240. data/spec/metric_fu/metrics/flay/generator_spec.rb +105 -0
  241. data/spec/metric_fu/metrics/flay/grapher_spec.rb +57 -0
  242. data/spec/metric_fu/metrics/flog/configuration_spec.rb +18 -0
  243. data/spec/metric_fu/metrics/flog/generator_spec.rb +77 -0
  244. data/spec/metric_fu/metrics/flog/grapher_spec.rb +107 -0
  245. data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +104 -0
  246. data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +71 -0
  247. data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +30 -0
  248. data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +97 -0
  249. data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +6 -0
  250. data/spec/metric_fu/metrics/hotspots/generator_spec.rb +46 -0
  251. data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +10 -0
  252. data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +16 -0
  253. data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +55 -0
  254. data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +33 -0
  255. data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +62 -0
  256. data/spec/metric_fu/metrics/rcov/configuration_spec.rb +28 -0
  257. data/spec/metric_fu/metrics/rcov/generator_spec.rb +22 -0
  258. data/spec/metric_fu/metrics/rcov/grapher_spec.rb +57 -0
  259. data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +20 -0
  260. data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
  261. data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +67 -0
  262. data/spec/metric_fu/metrics/reek/configuration_spec.rb +13 -0
  263. data/spec/metric_fu/metrics/reek/generator_spec.rb +169 -0
  264. data/spec/metric_fu/metrics/reek/grapher_spec.rb +66 -0
  265. data/spec/metric_fu/metrics/roodi/configuration_spec.rb +14 -0
  266. data/spec/metric_fu/metrics/roodi/generator_spec.rb +82 -0
  267. data/spec/metric_fu/metrics/roodi/grapher_spec.rb +57 -0
  268. data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +25 -0
  269. data/spec/metric_fu/metrics/saikuro/generator_spec.rb +71 -0
  270. data/spec/metric_fu/metrics/stats/generator_spec.rb +96 -0
  271. data/spec/metric_fu/metrics/stats/grapher_spec.rb +69 -0
  272. data/spec/metric_fu/reporter_spec.rb +41 -0
  273. data/spec/metric_fu/reporting/graphs/graph_spec.rb +44 -0
  274. data/spec/metric_fu/reporting/graphs/grapher_spec.rb +24 -0
  275. data/spec/metric_fu/reporting/result_spec.rb +50 -0
  276. data/spec/metric_fu/run_spec.rb +197 -0
  277. data/spec/metric_fu/templates/configuration_spec.rb +51 -0
  278. data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
  279. data/spec/metric_fu/templates/report_spec.rb +15 -0
  280. data/spec/metric_fu/templates/template_spec.rb +233 -0
  281. data/spec/metric_fu/utility_spec.rb +12 -0
  282. data/spec/metric_fu_spec.rb +33 -0
  283. data/spec/quality_spec.rb +114 -0
  284. data/spec/shared/configured.rb +45 -0
  285. data/spec/shared/test_coverage.rb +95 -0
  286. data/spec/spec_helper.rb +54 -0
  287. data/spec/support/deferred_garbaged_collection.rb +33 -0
  288. data/spec/support/helper_methods.rb +32 -0
  289. data/spec/support/matcher_create_file.rb +37 -0
  290. data/spec/support/matcher_create_files.rb +43 -0
  291. data/spec/support/suite.rb +26 -0
  292. data/spec/support/test_fixtures.rb +37 -0
  293. data/spec/support/timeout.rb +7 -0
  294. data/spec/support/usage_test.rb +150 -0
  295. data/spec/usage_test_spec.rb +93 -0
  296. metadata +757 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2008,2009,2010,2011 Jake Scruggs
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,299 @@
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
+
3
+ [![Join the chat at https://gitter.im/metricfu/metric_fu](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/metricfu/metric_fu?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4
+
5
+ [![Code Climate](https://codeclimate.com/github/metricfu/metric_fu.png)](https://codeclimate.com/github/metricfu/metric_fu) [![Inline docs](http://inch-ci.org/github/metricfu/metric_fu.png)](http://inch-ci.org/github/metricfu/metric_fu) [![Dependency Status](https://gemnasium.com/metricfu/metric_fu.png)](https://gemnasium.com/metricfu/metric_fu)
6
+
7
+ [Rdoc](http://rdoc.info/github/metricfu/metric_fu/)
8
+
9
+ ## Maintenance
10
+
11
+ MetricFu needs maintainers. If you are up for helping out, please left a note in [issue 280]( https://github.com/metricfu/metric_fu/issues/280). MetricFu is free and open source code that belongs to everyone. Benjamin (@bf4) hasn't been working on MetricFu for a while, which is a great opportunity for you to step up!
12
+
13
+ ## Installation
14
+
15
+ gem install metric_fu
16
+
17
+ If you have trouble installing the gem
18
+ - try adding metric_fu to your Gemfile and bundling.
19
+ - file a ticket on the issues page.
20
+
21
+ MetricFu is [cryptographically signed](http://guides.rubygems.org/security/).
22
+ To be sure the gem you install hasn't been tampered with:
23
+ - 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)`
24
+ - `gem install metric_fu -P MediumSecurity`
25
+
26
+ The MediumSecurity trust profile will verify signed gems, but allow the installation of unsigned dependencies.
27
+
28
+ This is necessary because not all of MetricFu's dependencies are signed, so we cannot use HighSecurity.
29
+
30
+ ## Usage
31
+
32
+ From your application root. Running via Rake is still supported.
33
+
34
+ ```sh
35
+ metric_fu
36
+ ```
37
+
38
+ See:
39
+ - `metric_fu --help` for more options
40
+ - Documentation and Compatibility below
41
+ - There is also a [wiki page of user-maintained usage information](https://github.com/metricfu/metric_fu/wiki#usage)
42
+
43
+ ## Contact
44
+
45
+ *Code and Bug Reports*
46
+
47
+ * [Issue Tracker](http://github.com/metricfu/metric_fu/issues)
48
+ * See [CONTRIBUTING](https://github.com/metricfu/metric_fu/blob/master/CONTRIBUTING.md) for how to contribute
49
+
50
+ *Questions, Problems, Suggestions, etc.*
51
+
52
+ * [Google Group](https://groups.google.com/forum/#!forum/metric_fu)
53
+
54
+ ## Documentation
55
+
56
+ MetricFu will attempt to load configuration data from a
57
+ `.metrics` file, if present in your repository root.
58
+
59
+ ```ruby
60
+ MetricFu.report_name # by default, your directory base name
61
+ MetricFu.report_name = 'Something Convenient'
62
+ ```
63
+
64
+ ### Example Configuration
65
+
66
+ ```ruby
67
+ # To configure individual metrics...
68
+ MetricFu::Configuration.run do |config|
69
+ config.configure_metric(:cane) do |cane|
70
+ cane.enabled = true
71
+ cane.abc_max = 15
72
+ cane.line_length = 80
73
+ cane.no_doc = 'y'
74
+ cane.no_readme = 'y'
75
+ end
76
+ end
77
+
78
+ # Or, alternative format
79
+ MetricFu.configuration.configure_metric(:churn) do |churn|
80
+ churn.enabled = true
81
+ churn.ignore_files = 'HISTORY.md, TODO.md'
82
+ churn.start_date = '6 months ago'
83
+ end
84
+
85
+ # Or, to (re)configure all metrics
86
+ MetricFu.configuration.configure_metrics.each do |metric|
87
+ if [:churn, :flay, :flog].include?(metric.name)
88
+ metric.enabled = true
89
+ else
90
+ metric.enabled = false
91
+ end
92
+ end
93
+ ```
94
+
95
+ ### Rails Best Practices
96
+
97
+ ```ruby
98
+ MetricFu::Configuration.run do |config|
99
+ config.configure_metric(:rails_best_practices) do |rbp|
100
+ rbp.silent = true
101
+ rbp.exclude = ["config/chef"]
102
+ end
103
+ end
104
+ ```
105
+
106
+ ### Coverage Metrics
107
+
108
+ ```ruby
109
+ MetricFu::Configuration.run do |config|
110
+ config.configure_metric(:rcov) do |rcov|
111
+ rcov.coverage_file = MetricFu.run_path.join("coverage/rcov/rcov.txt")
112
+ rcov.enable
113
+ rcov.activate
114
+ end
115
+ end
116
+ ```
117
+
118
+ If you want metric_fu to actually run rcov itself (1.8 only), don't specify an external file to read from
119
+
120
+ #### Rcov metrics with Ruby 1.8
121
+
122
+ To generate the same metrics metric_fu has been generating run from the root of your project before running metric_fu
123
+
124
+ ```shell
125
+ 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
126
+ ```
127
+
128
+ #### Simplecov metrics with Ruby 1.9 and 2.0
129
+
130
+ Add to your Gemfile or otherwise install
131
+
132
+ ```ruby
133
+ gem 'simplecov'
134
+ ```
135
+
136
+ 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
137
+
138
+ ```ruby
139
+ #in your spec_helper
140
+ require 'simplecov'
141
+ require 'metric_fu/metrics/rcov/simplecov_formatter'
142
+ SimpleCov.formatter = SimpleCov::Formatter::MetricFu
143
+ # or
144
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
145
+ SimpleCov::Formatter::HTMLFormatter,
146
+ SimpleCov::Formatter::MetricFu
147
+ ]
148
+ SimpleCov.start
149
+ ```
150
+
151
+ Additionally, the `coverage_file` path must be specified as above and must exist.
152
+
153
+ ### Formatters
154
+
155
+ #### Built-in Formatters
156
+
157
+ By default, metric_fu will use the built-in html formatter to generate HTML reports for each metric with pretty graphs.
158
+
159
+ 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
160
+ using a relative path:
161
+
162
+ ```sh
163
+ metric_fu --out custom_directory # outputs to tmp/metric_fu/custom_directory
164
+ ```
165
+
166
+ or a full path:
167
+
168
+ ```sh
169
+ metric_fu --out $HOME/tmp/metrics # outputs to $HOME/tmp/metrics
170
+ ```
171
+
172
+ 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.
173
+
174
+
175
+ ```sh
176
+ metric_fu --format yaml --out custom_report.yml
177
+ ```
178
+
179
+ Or in Ruby, such as in your `.metrics`
180
+
181
+ ```ruby
182
+ # Specify multiple formatters
183
+ # The second argument, the output file, is optional
184
+ MetricFu::Configuration.run do |config|
185
+ config.configure_formatter(:html)
186
+ config.configure_formatter(:yaml, "customreport.yml")
187
+ config.configure_formatter(:yaml)
188
+ end
189
+ ```
190
+
191
+ #### Custom Formatters
192
+
193
+ You can customize metric_fu's output format with a custom formatter.
194
+
195
+ To create a custom formatter, you simply need to create a class
196
+ that takes an options hash and responds to one or more notifications:
197
+
198
+ ```ruby
199
+ class MyCustomFormatter
200
+ def initialize(opts={}); end # metric_fu will pass in an output param if provided.
201
+
202
+ # Should include one or more of...
203
+ def start; end # Sent before metric_fu starts metric measurements.
204
+ def start_metric(metric); end # Sent before individual metric is measured.
205
+ def finish_metric(metric); end # Sent after individual metric measurement is complete.
206
+ def finish; end # Sent after metric_fu has completed all measurements.
207
+ def display_results; end # Used to open results in browser, etc.
208
+ end
209
+ ```
210
+
211
+ Then
212
+
213
+ ```shell
214
+ metric_fu --format MyCustomFormatter
215
+ ```
216
+
217
+ See [lib/metric_fu/formatter/](lib/metric_fu/formatter/) for examples.
218
+
219
+ MetricFu will attempt to require a custom formatter by
220
+ fully qualified name based on ruby search path. So if you include a custom
221
+ formatter as a gem in your Gemfile, you should be able to use it out of the box.
222
+ But you may find in certain cases that you need to add a require to
223
+ your .metrics configuration file.
224
+
225
+ For instance, to require a formatter in your app's lib directory `require './lib/my_custom_formatter.rb'`
226
+
227
+ ### Configure Graph Engine
228
+
229
+ By default, MetricFu uses the Bluff (JavaScript) graph engine.
230
+
231
+ ```ruby
232
+ MetricFu.configuration.configure_graph_engine(:bluff)
233
+ ```
234
+
235
+ But it you may also use the [Highcharts JS library](http://shop.highsoft.com/highcharts.html)
236
+
237
+ ```ruby
238
+ MetricFu.configuration.configure_graph_engine(:highcharts)
239
+ ```
240
+
241
+ Notice: There was previously a :gchart option.
242
+ It was not properly deprecated in the 4.x series.
243
+
244
+ ## Common problems / debugging
245
+
246
+ - ['ArgumentError; message invalid byte sequence in US-ASCII'](https://github.com/metricfu/metric_fu/issues/215) may be caused by having a default external encoding that is not UTF-8. You can see this in the output of `metric_fu --debug`
247
+ - OSX: Ensure you have set `LANG=en_US.UTF-8` and `LC_ALL=en_US.UTF-8`. You can add these to your `~/.profile`.
248
+
249
+ ## Compatibility
250
+
251
+ * It is currently testing on MRI (>= 1.9.3), JRuby (19 mode), and Rubinius (19 mode). Ruby 1.8 is no longer supported.
252
+
253
+ * 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)
254
+
255
+ * MetricFu no longer runs any of the analyzed code. For code coverage, you may use a formatter as documented above
256
+
257
+ * The Cane, Flog, and Rails Best Practices metrics are disabled when Ripper is not available
258
+
259
+ ### Historical
260
+
261
+ 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.
262
+
263
+ ## Resources:
264
+
265
+ 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.
266
+
267
+ * [Official Repository](http://github.com/metricfu/metric_fu)
268
+ * [Outdated Homepage](http://metricfu.github.io/metric_fu/)
269
+ * [List of code tools](https://github.com/metricfu/metric_fu/wiki/Code-Tools)
270
+ * [Roadmap](https://github.com/metricfu/metric_fu/wiki/Roadmap)
271
+
272
+ ### Metrics
273
+
274
+ * [Cane](https://rubygems.org/gems/cane), [Source](http://github.com/square/cane)
275
+ * [Churn](https://rubygems.org/gems/churn), [Source](http://github.com/danmayer/churn)
276
+ * [Flog](https://rubygems.org/gems/flog), [Source](https://github.com/seattlerb/flog)
277
+ * [Flay](https://rubygems.org/gems/flay), [Source](https://github.com/seattlerb/flay)
278
+ * [Reek](https://rubygems.org/gems/reek) [Source](https://github.com/troessner/reek)
279
+ * [Roodi](https://rubygems.org/gems/roodi), [Source](https://github.com/roodi/roodi)
280
+ * [Saikuro](https://rubygems.org/gems/metric_fu-Saikuro), [Source](https://github.com/metricfu/Saikuro)
281
+ * [Code Statistics](https://rubygems.org/gems/code_metrics), [Source](https://github.com/bf4/code_metrics)
282
+ * Rails-only
283
+ * [Rails Best Practices](https://rubygems.org/gems/rails_best_practices), [Source](https://github.com/railsbp/rails_best_practices)
284
+ * Test Coverage
285
+ * 1.9: [SimpleCov](http://rubygems.org/gems/simplecov) and SimpleCov::Formatter::MetricFu
286
+ * 1.8: [Rcov](http://rubygems.org/gems/rcov)
287
+ * Hotspots (a meta-metric of the above)
288
+
289
+
290
+ ### Original Resources:
291
+
292
+ * Github: http://github.com/jscruggs/metric_fu
293
+ * Issue Tracker: http://github.com/jscruggs/metric_fu/issues
294
+ * Historical Homepage: http://metric-fu.rubyforge.org/
295
+ * Jake's Blog: http://jakescruggs.blogspot.com/
296
+ * Jake's Post about stepping down: http://jakescruggs.blogspot.com/2012/08/why-i-abandoned-metricfu.html
297
+
298
+
299
+ [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/metricfu/metric_fu/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env rake
2
+ using_git = File.exist?(File.expand_path('../.git/', __FILE__))
3
+ if using_git
4
+ require 'bundler/setup'
5
+ end
6
+ require 'rake'
7
+ require 'simplecov'
8
+
9
+ Dir['./gem_tasks/*.rake'].each do |task|
10
+ import(task)
11
+ end
12
+
13
+ require 'rspec/core/rake_task'
14
+ desc "Run all specs in spec directory"
15
+ RSpec::Core::RakeTask.new(:spec) do |t|
16
+ t.verbose = false
17
+
18
+ t.pattern = "spec/**/_spec.rb"
19
+ # we require spec_helper so we don't get an RSpec warning about
20
+ # examples being defined before configuration.
21
+ t.ruby_opts = "-I./spec -r./spec/capture_warnings -rspec_helper"
22
+ t.rspec_opts = %w[--format progress] if (ENV['FULL_BUILD'] || !using_git)
23
+ end
24
+
25
+ require File.expand_path File.join(File.dirname(__FILE__),'lib/metric_fu')
26
+
27
+ task :default => :spec
data/TODO.md ADDED
@@ -0,0 +1,118 @@
1
+ # TODO list
2
+
3
+ * Keep HISTORY.md in master up to date
4
+
5
+ Items in each category are in generally order of decreasing priority.
6
+ The categories themselves are not in any priority order.
7
+
8
+ Also see [CONTRIBUTING](./CONTRIBUTING.md)
9
+
10
+ ## Features
11
+
12
+ * Make it easier to whitelist metrics when running from the commanline (cli)
13
+ * Be able to specify folders to run against rather than just app and lib
14
+ * Be able to run metric tools from metric_fu without shelling out
15
+ * Allow the coverage task to specify the command it runs plus any flags (see bundler/capistrano options)
16
+ * Add configurable logger to all output streams
17
+ * Load all gems at config time so you fail fast if one is missing
18
+ * Color code flog results with scale from: http://jakescruggs.blogspot.com/2008/08/whats-good-flog-score.html
19
+ * Make the template pages prettier (hold off until [61](https://github.com/metricfu/metric_fu/pull/61) is merged)
20
+ * Be able to generate historical metrics for eg gem releases (tagged with appropriate date)
21
+
22
+ ## Testing
23
+
24
+ * Test against a rails app, see [yui-rails](https://github.com/nextmat/yui-rails/tree/master/test/dummy)
25
+ * Determine how to test metric_fu against codebases that are not metric_fu, to ensure it works on most applications
26
+ * This is especially true for rails applications
27
+ * Remove / Modify Devver code from the generators/hotspots_spec and base/hotspot_analzyer_spec
28
+ * Add tests
29
+ * Remove useless tests
30
+ * Remove tests that use StandardTemplate. Will require updating tests yml output, which may not be easy
31
+
32
+ ## Bugs / Fixes
33
+
34
+ * See issues
35
+
36
+ ## Misc
37
+
38
+ ### Work on dependent libraries
39
+
40
+ * Look into getting rails_best_practices, cane, and flog to use a non-MRI-specific parser, such as [parser](https://github.com/whitequark/parser/), aka not Ripper
41
+
42
+ ### Improvements
43
+
44
+ * See TODO items in the code
45
+ * Change how config works to not metaprogrammatically create so many
46
+ instance variables and accessors
47
+ * Clarify the execution path and what a metric's api should be, (repeat for templates and graphs)
48
+ * Change MetricFu.report.add(metric) to e.g. MetricFu.generate_report(metric) to make clear that this actually runs the tool
49
+ * Clarify hotspot weighting
50
+ * Update the wiki with use cases
51
+ * Review how metric_fu uses each tools to generate metrics, e.g. by shelling out commands, rake task, modifying the output, etc.
52
+ * Understand and explain s-expressions and how they're used (or should be ) in [line_numbers.rb](https://github.com/metricfu/metric_fu/blob/master/lib/metric_fu/data_structures/line_numbers.rb) (via the ruby_parser)
53
+ * maybe see [reek tree dresser](https://github.com/troessner/reek/blob/master/lib/reek/source/tree_dresser.rb) and [reek code parser](https://github.com/troessner/reek/blob/master/lib/reek/core/code_parser.rb) or
54
+ * [ripper-tags](https://github.com/tmm1/ripper-tags)
55
+ * Remove dead code
56
+ * Determine if CodeIssue is used, else remove it
57
+ * Remove references to Ruport from the Devver / Caliper code
58
+ * Understand and explain how each metric can be used
59
+ * Improve metric_fu code metrics
60
+ * Refactor the hotspots code
61
+ * Is there any reason not to remove the Manifest.txt?
62
+ * Consider removing need for the core extensions (ActiveSupport)
63
+
64
+ ### Documentation
65
+
66
+ * Get the rdoc (or yard) published
67
+ * Add more inline documentation
68
+ * See other documentation code for examples to improve ours:
69
+ * https://github.com/charliesome/better_errors/blob/master/CONTRIBUTING.md
70
+ * https://github.com/charliesome/better_errors/blob/master/README.md
71
+
72
+ ### Other
73
+
74
+ * Look into issues for the tools metric_fu uses
75
+ * Look into other tools that might work well
76
+ * Update contributing or issue guidlines
77
+ * Suggest commit message guidelines
78
+ * [Update the homepage](https://github.com/metricfu/metricfu.github.com)
79
+
80
+ ## Future Thoughts
81
+
82
+ * Look into how to manage plugins or otherwise load abritrary metrics
83
+ * [Hoe](https://github.com/seattlerb/hoe/blob/master/lib/hoe.rb#L301)
84
+ * CLI [Flog](https://github.com/seattlerb/flog/blob/master/lib/flog_cli.rb) Plugins [Flog](https://github.com/seattlerb/flog/blob/master/lib/flog_cli.rb#L34)
85
+ * Look into adding
86
+ * https://github.com/metricfu/code_statistics [1](https://github.com/cloudability/code_statistics)
87
+ * or extract from rails into a gem [rake task](https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/statistics.rake) [can be modified by rspec](https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/tasks/rspec.rake#L38) with the [calculator](https://github.com/rails/rails/blob/master/railties/lib/rails/code_statistics_calculator.rb) and [class](https://github.com/rails/rails/blob/master/railties/lib/rails/code_statistics.rb)
88
+ * brakeman https://github.com/metricfu/brakeman
89
+ * laser https://github.com/metricfu/laser
90
+ * Other intersting libraries to consider:
91
+ * https://gist.github.com/4562865 for generating Flog on ERB templates by jamesmartin
92
+ * https://github.com/chad/turbulence churn and complexity (flog)
93
+ * https://github.com/vinibaggio/discover-unused-partials
94
+ * https://github.com/metricfu/heckle (test mutation)
95
+ * https://github.com/mbj/mutant (test mutation)
96
+ * https://github.com/metricfu/gauntlet
97
+ * https://github.com/metricfu/repodepot-ruby https://twitter.com/jakescruggs/status/70521977303076865
98
+ * https://github.com/eladmeidar/rails_indexes
99
+ * https://github.com/trptcolin/consistency_fail
100
+ * https://github.com/thoughtbot/appraisal
101
+ * https://github.com/jenkinsci/rubymetrics-plugin
102
+ * https://github.com/holman/hopper
103
+ * https://github.com/eric/metriks
104
+
105
+ ## Useful Links
106
+
107
+ ### Ruby Guides
108
+
109
+ * https://github.com/cwgem/RubyGuide
110
+ * https://github.com/bbatsov/rubocop
111
+ * https://github.com/bbatsov/ruby-style-guide
112
+ * https://github.com/bbatsov/rails-style-guide
113
+ * [Learning resources](http://www.benjaminfleischer.com/learning/ruby/tutorials.html) [Source](https://github.com/bf4/learning/tree/gh-pages)
114
+
115
+ ### Perf tools
116
+
117
+ * https://github.com/tmm1/perftools.rb
118
+ * https://twitter.com/mperham/status/311332913641840641
data/appveyor.yml ADDED
@@ -0,0 +1,31 @@
1
+ version: '{build}'
2
+
3
+ skip_tags: true
4
+
5
+ environment:
6
+ matrix:
7
+ - RUBY_VERSION: 22
8
+ - RUBY_VERSION: 22-x64
9
+ - RUBY_VERSION: 21
10
+ - RUBY_VERSION: 21-x64
11
+ - RUBY_VERSION: 200
12
+ - RUBY_VERSION: 193
13
+
14
+ install:
15
+ - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
16
+ - gem install bundler
17
+ - bundle install --path=vendor/bundle --retry=3 --jobs=3
18
+
19
+ cache:
20
+ - vendor/bundle
21
+
22
+ build: off
23
+
24
+ before_test:
25
+ - ruby -v
26
+ - gem -v
27
+ - bundle -v
28
+
29
+ test_script:
30
+ - bundle exec rspec
31
+ - bundle exec ruby -Ilib bin/metric_fu --no-open
data/bin/metric_fu ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ require 'metric_fu'
3
+ require 'metric_fu/cli/client'
4
+
5
+ cli = MetricFu::Cli::Client.new
6
+ # see http://obtiva.com/blog/185-fun-with-ruby-it-s-a-trap
7
+ trap("INT") { cli.shutdown }
8
+
9
+ cli.run
data/bin/mf-cane ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'cane',
7
+ metric_name: 'cane',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/bin/mf-churn ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'churn',
7
+ metric_name: 'churn',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/bin/mf-flay ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'flay',
7
+ metric_name: 'flay',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/bin/mf-reek ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'reek',
7
+ metric_name: 'reek',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/bin/mf-roodi ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'roodi',
7
+ metric_name: 'roodi',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/bin/mf-saikuro ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+
4
+ require 'metric_fu/gem_run'
5
+ options = {
6
+ gem_name: 'metric_fu-Saikuro',
7
+ metric_name: 'saikuro',
8
+ args: ARGV.dup,
9
+ }
10
+ STDOUT.puts MetricFu::GemRun.new(options).run.output
data/certs/bf4.pem ADDED
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDmjCCAoKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBJMQ8wDQYDVQQDDAZnaXRo
3
+ dWIxITAfBgoJkiaJk/IsZAEZFhFiZW5qYW1pbmZsZWlzY2hlcjETMBEGCgmSJomT
4
+ 8ixkARkWA2NvbTAeFw0xNTAxMjIxMzAyNTNaFw0xNjAxMjIxMzAyNTNaMEkxDzAN
5
+ BgNVBAMMBmdpdGh1YjEhMB8GCgmSJomT8ixkARkWEWJlbmphbWluZmxlaXNjaGVy
6
+ MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
7
+ CgKCAQEA7V1VZBU7Aft01XAoK8I8tdClfv3H/NIauiV0jfyNtXtZEWwaZ6ooZNLk
8
+ 8kmIUsO2xI7I/B3es6w7le9q9xdEowlYjiR/X/yazNvufu5kpM4f6Ri1AKN8xvPk
9
+ LFlR8aOAd9LptcusYDfE+BjhmAvnLTgMGODcDLJIaJzLJaRywTLUuFv4digpFwCm
10
+ Zps9VheJnL4hkgI5BDn6DVjxHSCMRnccQM/kX9L34lbP9KkHXXEtQgkQYpElHbnd
11
+ MtR753aPeLfOBxSGzsso+6Lhe+fz8huD05mzgWaEZN40e6M7dA9FRSsEzL32ZOad
12
+ 0z13MZWj3Yg5srV/cZvzCDCdVvRphwIDAQABo4GMMIGJMAkGA1UdEwQCMAAwCwYD
13
+ VR0PBAQDAgSwMB0GA1UdDgQWBBQvUrPExdvmdz0Vau0dH3hRh1YQfDAnBgNVHREE
14
+ IDAegRxnaXRodWJAYmVuamFtaW5mbGVpc2NoZXIuY29tMCcGA1UdEgQgMB6BHGdp
15
+ dGh1YkBiZW5qYW1pbmZsZWlzY2hlci5jb20wDQYJKoZIhvcNAQEFBQADggEBAEWo
16
+ g1soMaRTT/OfFklTuP+odV0w+2qJSfJhOY5bIebDjqxb9BN7hZJ9L6WXhcXCvl6r
17
+ kuXjpcC05TIv1DoWWaSjGK2ADmEBDNVhaFepYidAYuUQN4+ZjVH/gS9V9OkBcE8h
18
+ 3ZwRv+9RkXM0uY1FwuGI6jgbgPeR1AkkfJnhOPohkG+VN5bFo9aK/Stw8Nwhuuiz
19
+ axCPD3cmaJBguufRXSMC852SDiBT7AtI4Gl2Fyr+0M5TzXHKbQ9xRBxwfE1bWDd6
20
+ lEs7ndJ1/vd/Hy0zQ1tIRWyql+ITLhqMi161Pw5flsYpQvPlRLR5pGJ4eD0/JdKE
21
+ ZG9WSFH7QcGLY65mEYc=
22
+ -----END CERTIFICATE-----
data/checksum/.gitkeep ADDED
File without changes
@@ -0,0 +1 @@
1
+ e71e2ed626a7b3ee170116c5e72d846ba36039b0f016eb31ca87c9815534f27d5c85cf9bb42308bb2b3f539d123aa3ffea8fb7692c9a1c6f2b616a3511bf11f1
@@ -0,0 +1 @@
1
+ 5402db0fe4fb45627ce37d071b0d0d0ec4d173320cfffb251e3e0406556e828ac97fc416a4ddd9387b39aa9e374687ebf900f94cb0a578d771b12ae4af8506c6
@@ -0,0 +1 @@
1
+ 2d38eac5067748ee4417ab7088302a9e6c465e5163712cef9a1998bcb7048bf74c1b5c1facaccd8af042d2362693e4774de5b8c2bc6dbae5613eb91920ec58aa
@@ -0,0 +1 @@
1
+ c31f9343f44972b7b614d97cf33d457ad11518b408fb5e8e009eff8ee3c88353bd1dab14ac143a313433b7920b96f89d34753a0cd910364a70396ead3dc39980
@@ -0,0 +1 @@
1
+ 2290ac18a8467b1ec187273cd94afdb3c2cb187dcf1c58152b99acf54e4249746512ef55604a8b4dc348ad106b7b25ea4a5f225fd2e9659367d20340407578d5
@@ -0,0 +1 @@
1
+ 9a74861bf6d89f703786e562cdff96eea727aac874e0d9615d4ac8af57b2c97d15e2121de8d978b7097b56bd72b40744c9a27be9d3d12f9ecf75b66ac565e3ef
@@ -0,0 +1 @@
1
+ 5af713f345549aa574af94d5790ec5360d61aa9ff9dce867da339f5a86e1d2d39c23d025434dd98fc04e0912b6a6da64f271663242a5aa75cbf15cac1c9c73e1
@@ -0,0 +1 @@
1
+ 9dab16044285faa2d79afc40e701fb35d7e41d658d147bb161f616676f3258e069c1e250c1d854460e67ca1674ae286265f43dcd50255416c0e6d8e9e919b516
@@ -0,0 +1 @@
1
+ 529b99cf3f5fb314e9a7684ad38198e7509ec13926ded779bfef2a4b968b0538fc72248606a3b0b1bdead31163e04641bd6f565d5db62bb168ee80b854e9c580
@@ -0,0 +1 @@
1
+ 7a5e74c8b010bd9629e9cbdcf297cc1d75295338bb34a327a9ed57a742c5fc57107608bd148e31e5355263dc113841249be8719877a68fcb42271212edd71f13
@@ -0,0 +1 @@
1
+ 8ceae4f1bb2719d8ecbe2c7b3e929fe477cbe4ea6582297092a1bc09a6bef9e423f3a33c619b62372b208f956c4d8f9839257cd491475b58c06a2c8341eafc77
@@ -0,0 +1 @@
1
+ c01694dc4a374806bd6cfaf5091808d223db1ea07a85d90a9749ed8e603c3abee283a36a6aacde81072b7c0ec2eec64f85d977caa6cd69687a532040a2137bd4
@@ -0,0 +1 @@
1
+ bbcd106dba00bcf0c1bfe8562d012a82f0945d8388bcd768598b872c35655668bfc9d0c1e7b0d67369713902dd9f1dd6fba9b83b21d79fe8ee774a2f8fa2defe
@@ -0,0 +1 @@
1
+ 1beb22d0d940c4d5297efbfa5a2c6ad46a5f64fd68a0695bc1d81a7b3d85fdafc9004ede390272f2602a2a87f306137fccf53e8225b9dd9943e87ef5c7103c78
@@ -0,0 +1 @@
1
+ 6d7c86a7231183dc5cf3d13b03fa4174873ffa6202d0b3fa09b485acc0e076951d6c906a99816fa9908fed75fa513cfba1ce29fb3911f881a93fb0922a70ff8f
@@ -0,0 +1 @@
1
+ 287c0e2d61b94453f05b6c6b8d4666c49337022af56d4b3066ff6f9856747ef6ce5830b121bed2cfbe747716049c88ac1c9edc19a4cccc9b408454107899c663
@@ -0,0 +1 @@
1
+ 60fdd77882c1eac658fec94a3207b00d3556e082ee9a01ce4097d8fa297df32d66de4ec2fc780b7566dc331975ad4469143dd8eb0dcd8df985c01405ce57c580