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.
- checksums.yaml +7 -0
- data/.gitignore +28 -0
- data/.metrics +3 -0
- data/.rspec +2 -0
- data/.rubocop.yml +15 -0
- data/.rubocop_todo.yml +69 -0
- data/.simplecov +74 -0
- data/.travis.yml +22 -0
- data/.yardopts +4 -0
- data/AUTHORS +12 -0
- data/CONTRIBUTING.md +47 -0
- data/CONTRIBUTORS +76 -0
- data/DEV.md +76 -0
- data/Gemfile +74 -0
- data/Guardfile +30 -0
- data/HISTORY.md +705 -0
- data/MIT-LICENSE +22 -0
- data/README.md +299 -0
- data/Rakefile +27 -0
- data/TODO.md +118 -0
- data/appveyor.yml +31 -0
- data/bin/metric_fu +9 -0
- data/bin/mf-cane +10 -0
- data/bin/mf-churn +10 -0
- data/bin/mf-flay +10 -0
- data/bin/mf-reek +10 -0
- data/bin/mf-roodi +10 -0
- data/bin/mf-saikuro +10 -0
- data/certs/bf4.pem +22 -0
- data/checksum/.gitkeep +0 -0
- data/checksum/metric_fu-4.10.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.11.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.11.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.11.2.gem.sha512 +1 -0
- data/checksum/metric_fu-4.11.3.gem.sha512 +1 -0
- data/checksum/metric_fu-4.11.4.gem.sha512 +1 -0
- data/checksum/metric_fu-4.12.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.2.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.2.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.3.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.3.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.4.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.4.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.4.2.gem.sha512 +1 -0
- data/checksum/metric_fu-4.4.3.gem.sha512 +1 -0
- data/checksum/metric_fu-4.4.4.gem.sha512 +1 -0
- data/checksum/metric_fu-4.5.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.5.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.5.2.gem.sha512 +1 -0
- data/checksum/metric_fu-4.6.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.7.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.7.1.gem.sha512 +1 -0
- data/checksum/metric_fu-4.7.2.gem.sha512 +1 -0
- data/checksum/metric_fu-4.7.3.gem.sha512 +1 -0
- data/checksum/metric_fu-4.7.4.gem.sha512 +1 -0
- data/checksum/metric_fu-4.8.0.gem.sha512 +1 -0
- data/checksum/metric_fu-4.9.0.gem.sha512 +1 -0
- data/config/roodi_config.yml +22 -0
- data/config/rubocop.yml +269 -0
- data/gem_tasks/build.rake +197 -0
- data/gem_tasks/rubocop.rake +10 -0
- data/gem_tasks/usage_test.rake +19 -0
- data/gem_tasks/yard.rake +24 -0
- data/lib/metric_fu/calculate.rb +10 -0
- data/lib/metric_fu/cli/client.rb +26 -0
- data/lib/metric_fu/cli/helper.rb +80 -0
- data/lib/metric_fu/cli/parser.rb +138 -0
- data/lib/metric_fu/configuration.rb +150 -0
- data/lib/metric_fu/constantize.rb +57 -0
- data/lib/metric_fu/data_structures/line_numbers.rb +112 -0
- data/lib/metric_fu/data_structures/location.rb +110 -0
- data/lib/metric_fu/data_structures/sexp_node.rb +107 -0
- data/lib/metric_fu/environment.rb +129 -0
- data/lib/metric_fu/errors/analysis_error.rb +4 -0
- data/lib/metric_fu/formatter/html.rb +96 -0
- data/lib/metric_fu/formatter/syntax.rb +45 -0
- data/lib/metric_fu/formatter/yaml.rb +18 -0
- data/lib/metric_fu/formatter.rb +40 -0
- data/lib/metric_fu/gem_run.rb +70 -0
- data/lib/metric_fu/gem_version.rb +92 -0
- data/lib/metric_fu/generator.rb +135 -0
- data/lib/metric_fu/io.rb +132 -0
- data/lib/metric_fu/loader.rb +105 -0
- data/lib/metric_fu/logger.rb +62 -0
- data/lib/metric_fu/logging/mf_debugger.rb +23 -0
- data/lib/metric_fu/metric.rb +143 -0
- data/lib/metric_fu/metrics/cane/generator.rb +95 -0
- data/lib/metric_fu/metrics/cane/grapher.rb +37 -0
- data/lib/metric_fu/metrics/cane/metric.rb +34 -0
- data/lib/metric_fu/metrics/cane/report.html.erb +87 -0
- data/lib/metric_fu/metrics/cane/violations.rb +46 -0
- data/lib/metric_fu/metrics/churn/generator.rb +37 -0
- data/lib/metric_fu/metrics/churn/hotspot.rb +43 -0
- data/lib/metric_fu/metrics/churn/metric.rb +29 -0
- data/lib/metric_fu/metrics/churn/report.html.erb +58 -0
- data/lib/metric_fu/metrics/flay/generator.rb +51 -0
- data/lib/metric_fu/metrics/flay/grapher.rb +37 -0
- data/lib/metric_fu/metrics/flay/hotspot.rb +52 -0
- data/lib/metric_fu/metrics/flay/metric.rb +28 -0
- data/lib/metric_fu/metrics/flay/report.html.erb +29 -0
- data/lib/metric_fu/metrics/flog/generator.rb +113 -0
- data/lib/metric_fu/metrics/flog/grapher.rb +77 -0
- data/lib/metric_fu/metrics/flog/hotspot.rb +46 -0
- data/lib/metric_fu/metrics/flog/metric.rb +29 -0
- data/lib/metric_fu/metrics/flog/report.html.erb +50 -0
- data/lib/metric_fu/metrics/hotspots/analysis/analyzed_problems.rb +34 -0
- data/lib/metric_fu/metrics/hotspots/analysis/analyzer_tables.rb +114 -0
- data/lib/metric_fu/metrics/hotspots/analysis/grouping.rb +23 -0
- data/lib/metric_fu/metrics/hotspots/analysis/groupings.rb +12 -0
- data/lib/metric_fu/metrics/hotspots/analysis/problems.rb +20 -0
- data/lib/metric_fu/metrics/hotspots/analysis/ranked_problem_location.rb +70 -0
- data/lib/metric_fu/metrics/hotspots/analysis/ranking.rb +29 -0
- data/lib/metric_fu/metrics/hotspots/analysis/rankings.rb +91 -0
- data/lib/metric_fu/metrics/hotspots/analysis/record.rb +32 -0
- data/lib/metric_fu/metrics/hotspots/analysis/scoring_strategies.rb +24 -0
- data/lib/metric_fu/metrics/hotspots/analysis/table.rb +67 -0
- data/lib/metric_fu/metrics/hotspots/generator.rb +40 -0
- data/lib/metric_fu/metrics/hotspots/hotspot.rb +87 -0
- data/lib/metric_fu/metrics/hotspots/hotspot_analyzer.rb +61 -0
- data/lib/metric_fu/metrics/hotspots/metric.rb +20 -0
- data/lib/metric_fu/metrics/hotspots/report.html.erb +60 -0
- data/lib/metric_fu/metrics/rails_best_practices/generator.rb +47 -0
- data/lib/metric_fu/metrics/rails_best_practices/grapher.rb +38 -0
- data/lib/metric_fu/metrics/rails_best_practices/metric.rb +31 -0
- data/lib/metric_fu/metrics/rails_best_practices/report.html.erb +22 -0
- data/lib/metric_fu/metrics/rcov/external_client.rb +22 -0
- data/lib/metric_fu/metrics/rcov/generator.rb +75 -0
- data/lib/metric_fu/metrics/rcov/grapher.rb +37 -0
- data/lib/metric_fu/metrics/rcov/hotspot.rb +46 -0
- data/lib/metric_fu/metrics/rcov/metric.rb +61 -0
- data/lib/metric_fu/metrics/rcov/rcov_format_coverage.rb +149 -0
- data/lib/metric_fu/metrics/rcov/rcov_line.rb +48 -0
- data/lib/metric_fu/metrics/rcov/report.html.erb +40 -0
- data/lib/metric_fu/metrics/rcov/simplecov_formatter.rb +74 -0
- data/lib/metric_fu/metrics/reek/generator.rb +97 -0
- data/lib/metric_fu/metrics/reek/grapher.rb +55 -0
- data/lib/metric_fu/metrics/reek/hotspot.rb +95 -0
- data/lib/metric_fu/metrics/reek/metric.rb +26 -0
- data/lib/metric_fu/metrics/reek/report.html.erb +35 -0
- data/lib/metric_fu/metrics/roodi/generator.rb +41 -0
- data/lib/metric_fu/metrics/roodi/grapher.rb +37 -0
- data/lib/metric_fu/metrics/roodi/hotspot.rb +39 -0
- data/lib/metric_fu/metrics/roodi/metric.rb +24 -0
- data/lib/metric_fu/metrics/roodi/report.html.erb +22 -0
- data/lib/metric_fu/metrics/saikuro/generator.rb +145 -0
- data/lib/metric_fu/metrics/saikuro/hotspot.rb +51 -0
- data/lib/metric_fu/metrics/saikuro/metric.rb +31 -0
- data/lib/metric_fu/metrics/saikuro/parsing_element.rb +37 -0
- data/lib/metric_fu/metrics/saikuro/report.html.erb +71 -0
- data/lib/metric_fu/metrics/saikuro/scratch_file.rb +108 -0
- data/lib/metric_fu/metrics/stats/generator.rb +82 -0
- data/lib/metric_fu/metrics/stats/grapher.rb +40 -0
- data/lib/metric_fu/metrics/stats/hotspot.rb +35 -0
- data/lib/metric_fu/metrics/stats/metric.rb +28 -0
- data/lib/metric_fu/metrics/stats/report.html.erb +44 -0
- data/lib/metric_fu/reporter.rb +37 -0
- data/lib/metric_fu/reporting/graphs/graph.rb +69 -0
- data/lib/metric_fu/reporting/graphs/grapher.rb +66 -0
- data/lib/metric_fu/reporting/result.rb +59 -0
- data/lib/metric_fu/run.rb +82 -0
- data/lib/metric_fu/tasks/metric_fu.rake +54 -0
- data/lib/metric_fu/templates/_gem_info.html.erb +8 -0
- data/lib/metric_fu/templates/_graph.html.erb +2 -0
- data/lib/metric_fu/templates/_report_footer.html.erb +1 -0
- data/lib/metric_fu/templates/configuration.rb +25 -0
- data/lib/metric_fu/templates/css/bluff.css +15 -0
- data/lib/metric_fu/templates/css/buttons.css +82 -0
- data/lib/metric_fu/templates/css/default.css +43 -0
- data/lib/metric_fu/templates/css/integrity.css +337 -0
- data/lib/metric_fu/templates/css/rcov.css +32 -0
- data/lib/metric_fu/templates/css/reset.css +7 -0
- data/lib/metric_fu/templates/css/syntax.css +19 -0
- data/lib/metric_fu/templates/index.html.erb +13 -0
- data/lib/metric_fu/templates/javascripts/bluff-min.js +1 -0
- data/lib/metric_fu/templates/javascripts/bluff_graph.js +15 -0
- data/lib/metric_fu/templates/javascripts/excanvas.js +35 -0
- data/lib/metric_fu/templates/javascripts/highcharts.js +294 -0
- data/lib/metric_fu/templates/javascripts/highcharts_graph.js +38 -0
- data/lib/metric_fu/templates/javascripts/js-class.js +1 -0
- data/lib/metric_fu/templates/javascripts/standalone-framework.js +17 -0
- data/lib/metric_fu/templates/javascripts/utils.js +9 -0
- data/lib/metric_fu/templates/layout.html.erb +41 -0
- data/lib/metric_fu/templates/metrics_template.rb +86 -0
- data/lib/metric_fu/templates/report.html.erb +31 -0
- data/lib/metric_fu/templates/report.rb +41 -0
- data/lib/metric_fu/templates/template.rb +247 -0
- data/lib/metric_fu/utility.rb +79 -0
- data/lib/metric_fu/version.rb +9 -0
- data/lib/metric_fu.rb +143 -0
- data/metric_fu.gemspec +72 -0
- data/spec/capture_warnings.rb +55 -0
- data/spec/cli/helper_spec.rb +165 -0
- data/spec/dummy/.gitignore +1 -0
- data/spec/dummy/.gitkeep +0 -0
- data/spec/dummy/.metrics +4 -0
- data/spec/dummy/lib/.gitkeep +0 -0
- data/spec/dummy/lib/bad_encoding.rb +6 -0
- data/spec/dummy/spec/.gitkeep +0 -0
- data/spec/fixtures/20090630.yml +7922 -0
- data/spec/fixtures/coverage-153.rb +11 -0
- data/spec/fixtures/coverage.rb +13 -0
- data/spec/fixtures/exit0.sh +3 -0
- data/spec/fixtures/exit1.sh +3 -0
- data/spec/fixtures/hotspots/flog.yml +86 -0
- data/spec/fixtures/hotspots/generator.yml +47 -0
- data/spec/fixtures/hotspots/generator_analysis.yml +53 -0
- data/spec/fixtures/hotspots/reek.yml +14 -0
- data/spec/fixtures/hotspots/roodi.yml +13 -0
- data/spec/fixtures/hotspots/saikuro.yml +27 -0
- data/spec/fixtures/hotspots/several_metrics.yml +47 -0
- data/spec/fixtures/hotspots/stats.yml +4 -0
- data/spec/fixtures/hotspots/three_metrics_on_same_file.yml +36 -0
- data/spec/fixtures/line_numbers/foo.rb +33 -0
- data/spec/fixtures/line_numbers/module.rb +11 -0
- data/spec/fixtures/line_numbers/module_surrounds_class.rb +15 -0
- data/spec/fixtures/line_numbers/two_classes.rb +11 -0
- data/spec/fixtures/metric_missing.yml +1 -0
- data/spec/fixtures/rcov_output.txt +135 -0
- data/spec/fixtures/saikuro/app/controllers/sessions_controller.rb_cyclo.html +10 -0
- data/spec/fixtures/saikuro/app/controllers/users_controller.rb_cyclo.html +16 -0
- data/spec/fixtures/saikuro/index_cyclo.html +155 -0
- data/spec/fixtures/saikuro_sfiles/thing.rb_cyclo.html +11 -0
- data/spec/metric_fu/calculate_spec.rb +21 -0
- data/spec/metric_fu/configuration_spec.rb +90 -0
- data/spec/metric_fu/data_structures/line_numbers_spec.rb +63 -0
- data/spec/metric_fu/data_structures/location_spec.rb +110 -0
- data/spec/metric_fu/formatter/configuration_spec.rb +44 -0
- data/spec/metric_fu/formatter/html_spec.rb +138 -0
- data/spec/metric_fu/formatter/yaml_spec.rb +61 -0
- data/spec/metric_fu/formatter_spec.rb +49 -0
- data/spec/metric_fu/gem_version_spec.rb +12 -0
- data/spec/metric_fu/generator_spec.rb +130 -0
- data/spec/metric_fu/loader_spec.rb +10 -0
- data/spec/metric_fu/metric_spec.rb +46 -0
- data/spec/metric_fu/metrics/cane/configuration_spec.rb +22 -0
- data/spec/metric_fu/metrics/cane/generator_spec.rb +184 -0
- data/spec/metric_fu/metrics/churn/configuration_spec.rb +13 -0
- data/spec/metric_fu/metrics/churn/generator_spec.rb +64 -0
- data/spec/metric_fu/metrics/flay/configuration_spec.rb +13 -0
- data/spec/metric_fu/metrics/flay/generator_spec.rb +105 -0
- data/spec/metric_fu/metrics/flay/grapher_spec.rb +57 -0
- data/spec/metric_fu/metrics/flog/configuration_spec.rb +18 -0
- data/spec/metric_fu/metrics/flog/generator_spec.rb +77 -0
- data/spec/metric_fu/metrics/flog/grapher_spec.rb +107 -0
- data/spec/metric_fu/metrics/hotspots/analysis/analyzed_problems_spec.rb +104 -0
- data/spec/metric_fu/metrics/hotspots/analysis/analyzer_tables_spec.rb +71 -0
- data/spec/metric_fu/metrics/hotspots/analysis/ranking_spec.rb +30 -0
- data/spec/metric_fu/metrics/hotspots/analysis/rankings_spec.rb +97 -0
- data/spec/metric_fu/metrics/hotspots/analysis/table_spec.rb +6 -0
- data/spec/metric_fu/metrics/hotspots/generator_spec.rb +46 -0
- data/spec/metric_fu/metrics/hotspots/hotspot_analyzer_spec.rb +10 -0
- data/spec/metric_fu/metrics/hotspots/hotspot_spec.rb +16 -0
- data/spec/metric_fu/metrics/rails_best_practices/configuration_spec.rb +55 -0
- data/spec/metric_fu/metrics/rails_best_practices/generator_spec.rb +33 -0
- data/spec/metric_fu/metrics/rails_best_practices/grapher_spec.rb +62 -0
- data/spec/metric_fu/metrics/rcov/configuration_spec.rb +28 -0
- data/spec/metric_fu/metrics/rcov/generator_spec.rb +22 -0
- data/spec/metric_fu/metrics/rcov/grapher_spec.rb +57 -0
- data/spec/metric_fu/metrics/rcov/hotspot_spec.rb +20 -0
- data/spec/metric_fu/metrics/rcov/rcov_line_spec.rb +89 -0
- data/spec/metric_fu/metrics/rcov/simplecov_formatter_spec.rb +67 -0
- data/spec/metric_fu/metrics/reek/configuration_spec.rb +13 -0
- data/spec/metric_fu/metrics/reek/generator_spec.rb +169 -0
- data/spec/metric_fu/metrics/reek/grapher_spec.rb +66 -0
- data/spec/metric_fu/metrics/roodi/configuration_spec.rb +14 -0
- data/spec/metric_fu/metrics/roodi/generator_spec.rb +82 -0
- data/spec/metric_fu/metrics/roodi/grapher_spec.rb +57 -0
- data/spec/metric_fu/metrics/saikuro/configuration_spec.rb +25 -0
- data/spec/metric_fu/metrics/saikuro/generator_spec.rb +71 -0
- data/spec/metric_fu/metrics/stats/generator_spec.rb +96 -0
- data/spec/metric_fu/metrics/stats/grapher_spec.rb +69 -0
- data/spec/metric_fu/reporter_spec.rb +41 -0
- data/spec/metric_fu/reporting/graphs/graph_spec.rb +44 -0
- data/spec/metric_fu/reporting/graphs/grapher_spec.rb +24 -0
- data/spec/metric_fu/reporting/result_spec.rb +50 -0
- data/spec/metric_fu/run_spec.rb +197 -0
- data/spec/metric_fu/templates/configuration_spec.rb +51 -0
- data/spec/metric_fu/templates/metrics_template_spec.rb +11 -0
- data/spec/metric_fu/templates/report_spec.rb +15 -0
- data/spec/metric_fu/templates/template_spec.rb +233 -0
- data/spec/metric_fu/utility_spec.rb +12 -0
- data/spec/metric_fu_spec.rb +33 -0
- data/spec/quality_spec.rb +114 -0
- data/spec/shared/configured.rb +45 -0
- data/spec/shared/test_coverage.rb +95 -0
- data/spec/spec_helper.rb +54 -0
- data/spec/support/deferred_garbaged_collection.rb +33 -0
- data/spec/support/helper_methods.rb +32 -0
- data/spec/support/matcher_create_file.rb +37 -0
- data/spec/support/matcher_create_files.rb +43 -0
- data/spec/support/suite.rb +26 -0
- data/spec/support/test_fixtures.rb +37 -0
- data/spec/support/timeout.rb +7 -0
- data/spec/support/usage_test.rb +150 -0
- data/spec/usage_test_spec.rb +93 -0
- 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 [](http://badge.fury.io/rb/metric_fu) [](http://travis-ci.org/metricfu/metric_fu)
|
|
2
|
+
|
|
3
|
+
[](https://gitter.im/metricfu/metric_fu?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
|
4
|
+
|
|
5
|
+
[](https://codeclimate.com/github/metricfu/metric_fu) [](http://inch-ci.org/github/metricfu/metric_fu) [](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
|
+
[](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
data/bin/mf-cane
ADDED
data/bin/mf-churn
ADDED
data/bin/mf-flay
ADDED
data/bin/mf-reek
ADDED
data/bin/mf-roodi
ADDED
data/bin/mf-saikuro
ADDED
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
|