code_metric_fu 4.14.0

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