fastruby-metric_fu 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 +18 -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 +58 -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 +29 -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.rb +151 -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.rb +40 -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/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 +94 -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 +40 -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/_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 +10 -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 +37 -0
- data/lib/metric_fu/templates/metrics_template.rb +80 -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 +244 -0
- data/lib/metric_fu/utility.rb +79 -0
- data/lib/metric_fu/version.rb +9 -0
- data/metric_fu.gemspec +71 -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/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 +13 -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 +203 -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 +52 -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 +46 -0
- data/spec/support/.metrics +4 -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/samples/reek/alfa.rb +1 -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 +735 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2d8fc5519518367b328c75d398a3975625aa0ce13fc7f03dee21d716df62286a
|
4
|
+
data.tar.gz: 59cd0c6c4eb49a19f3225ff2423bd51a1de990e5a9fddc741d356dbb0f6dff26
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 7d545afbb41091fca6d2bb42e6890c36ce44d34b1e0fe8d13352de8c9b385b46d051bc4856121f3263e07ae5b958c5efe02183ef77f427222b6d91fbc0cbce95
|
7
|
+
data.tar.gz: 9da61c5123a0cf9a1704fb3130c524d8ec14a23326846cd86e219d67239fa1e4e62c8d69132303d0fb21ac2219bcfa33fefa60e9293e5dc066d6a0123c33f60a
|
data/.gitignore
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
.DS_Store
|
2
|
+
.rvmrc*
|
3
|
+
*.gem
|
4
|
+
*.rbc
|
5
|
+
.bundle
|
6
|
+
.config
|
7
|
+
.yardoc
|
8
|
+
Gemfile.lock
|
9
|
+
InstalledFiles
|
10
|
+
_yardoc
|
11
|
+
coverage
|
12
|
+
doc/
|
13
|
+
lib/bundler/man
|
14
|
+
pkg
|
15
|
+
rdoc
|
16
|
+
spec/reports
|
17
|
+
test/tmp
|
18
|
+
test/version_tmp
|
19
|
+
tmp
|
20
|
+
*.swp
|
21
|
+
tags
|
22
|
+
.idea
|
23
|
+
|
24
|
+
# rvm
|
25
|
+
.ruby-version
|
26
|
+
.ruby-gemset
|
27
|
+
|
28
|
+
.overcommit.yml
|
data/.metrics
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
inherit_from:
|
2
|
+
- config/rubocop.yml
|
3
|
+
- .rubocop_todo.yml
|
4
|
+
|
5
|
+
# Files you want to exclude
|
6
|
+
AllCops:
|
7
|
+
Exclude:
|
8
|
+
- bin/*
|
9
|
+
- gem_tasks/*
|
10
|
+
- lib/tasks/*
|
11
|
+
- Gemfile
|
12
|
+
- Rakefile
|
13
|
+
- bundle/**/*
|
14
|
+
- vendor/bundle/**/*
|
15
|
+
- spec/fixtures/line_numbers/*
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# This configuration was generated by `rubocop --auto-gen-config`
|
2
|
+
# on 2015-01-27 12:05:28 -0600 using RuboCop version 0.28.0.
|
3
|
+
# The point is for the user to remove these configuration records
|
4
|
+
# one by one as the offenses are removed from the code base.
|
5
|
+
# Note that changes in the inspected code, or installation of new
|
6
|
+
# versions of RuboCop, may require this file to be generated again.
|
7
|
+
|
8
|
+
# Offense count: 2
|
9
|
+
# Configuration parameters: AlignWith, SupportedStyles.
|
10
|
+
Lint/EndAlignment:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
# Offense count: 2
|
14
|
+
Lint/EnsureReturn:
|
15
|
+
Enabled: false
|
16
|
+
|
17
|
+
# Offense count: 1
|
18
|
+
Lint/RescueException:
|
19
|
+
Enabled: false
|
20
|
+
|
21
|
+
# Offense count: 10
|
22
|
+
Lint/ShadowingOuterLocalVariable:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
# Offense count: 1
|
26
|
+
Lint/UselessAccessModifier:
|
27
|
+
Enabled: false
|
28
|
+
|
29
|
+
# Offense count: 27
|
30
|
+
Lint/UselessAssignment:
|
31
|
+
Enabled: false
|
32
|
+
|
33
|
+
# Offense count: 44
|
34
|
+
Metrics/AbcSize:
|
35
|
+
Max: 56
|
36
|
+
|
37
|
+
# Offense count: 393
|
38
|
+
# Configuration parameters: AllowURI, URISchemes.
|
39
|
+
Metrics/LineLength:
|
40
|
+
Max: 709
|
41
|
+
|
42
|
+
# Offense count: 3
|
43
|
+
Metrics/PerceivedComplexity:
|
44
|
+
Max: 13
|
45
|
+
|
46
|
+
# Offense count: 4
|
47
|
+
# Cop supports --auto-correct.
|
48
|
+
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
49
|
+
Style/AndOr:
|
50
|
+
Enabled: false
|
51
|
+
|
52
|
+
# Offense count: 2
|
53
|
+
Style/EmptyElse:
|
54
|
+
Enabled: false
|
55
|
+
|
56
|
+
# Offense count: 2
|
57
|
+
# Configuration parameters: NamePrefix, NamePrefixBlacklist.
|
58
|
+
Style/PredicateName:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# Offense count: 1
|
62
|
+
Style/RescueModifier:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
# Offense count: 4
|
66
|
+
# Cop supports --auto-correct.
|
67
|
+
# Configuration parameters: AllowAsExpressionSeparator.
|
68
|
+
Style/Semicolon:
|
69
|
+
Enabled: false
|
data/.simplecov
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# https://github.com/colszowka/simplecov#using-simplecov-for-centralized-config
|
2
|
+
# see https://github.com/colszowka/simplecov/blob/master/lib/simplecov/defaults.rb
|
3
|
+
# vim: set ft=ruby
|
4
|
+
@minimum_coverage = ENV.fetch("COVERAGE_MINIMUM") { 87.8 }.to_f.round(2)
|
5
|
+
if SimpleCov.respond_to?(:profiles)
|
6
|
+
SimpleCov.profiles
|
7
|
+
else
|
8
|
+
SimpleCov.adapters
|
9
|
+
end.define 'metric_fu' do
|
10
|
+
if defined?(load_profile)
|
11
|
+
load_profile 'test_frameworks'
|
12
|
+
else
|
13
|
+
load_adapter 'test_frameworks'
|
14
|
+
end
|
15
|
+
|
16
|
+
add_group "Cli", "lib/metric_fu/cli"
|
17
|
+
add_group "Data Structures", "lib/metric_fu/data_structures"
|
18
|
+
add_group "Formatters", "lib/metric_fu/formatter"
|
19
|
+
add_group "Hotspots", "lib/metric_fu/metrics/hotspots"
|
20
|
+
add_group "Metrics", "lib/metric_fu/metrics"
|
21
|
+
add_group "Reporters", "lib/metric_fu/reporting"
|
22
|
+
add_group "Templates", "lib/metric_fu/templates"
|
23
|
+
|
24
|
+
add_group "Long files" do |src_file|
|
25
|
+
src_file.lines.count > 100
|
26
|
+
end
|
27
|
+
class MaxLinesFilter < SimpleCov::Filter
|
28
|
+
def matches?(source_file)
|
29
|
+
source_file.lines.count < filter_argument
|
30
|
+
end
|
31
|
+
end
|
32
|
+
add_group "Short files", MaxLinesFilter.new(5)
|
33
|
+
|
34
|
+
# Exclude these paths from analysis
|
35
|
+
add_filter 'bundle'
|
36
|
+
add_filter 'vendor/bundle'
|
37
|
+
add_filter 'bin'
|
38
|
+
add_filter 'lib/metric_fu/tasks'
|
39
|
+
|
40
|
+
# https://github.com/colszowka/simplecov/blob/v0.9.1/lib/simplecov/defaults.rb#L60
|
41
|
+
# minimum_coverage @minimum_coverage
|
42
|
+
end
|
43
|
+
|
44
|
+
## RUN SIMPLECOV
|
45
|
+
if defined?(@running_tests)
|
46
|
+
@running_tests = false
|
47
|
+
else
|
48
|
+
@running_tests = caller.any? {|line| line =~ /exe\/rspec/ }
|
49
|
+
end
|
50
|
+
if ENV["COVERAGE"] =~ /\Atrue\z/i
|
51
|
+
puts "[COVERAGE] Running with SimpleCov HTML Formatter"
|
52
|
+
formatters = [SimpleCov::Formatter::HTMLFormatter]
|
53
|
+
begin
|
54
|
+
puts '[COVERAGE] Running with SimpleCov HTML Formatter'
|
55
|
+
require 'metric_fu/metrics/rcov/simplecov_formatter'
|
56
|
+
formatters << SimpleCov::Formatter::MetricFu
|
57
|
+
puts '[COVERAGE] Running with SimpleCov MetricFu Formatter'
|
58
|
+
rescue LoadError
|
59
|
+
puts '[COVERAGE] SimpleCov MetricFu formatter could not be loaded'
|
60
|
+
end
|
61
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[ *formatters ]
|
62
|
+
SimpleCov.start "metric_fu" if @running_tests
|
63
|
+
else
|
64
|
+
SimpleCov.formatters = []
|
65
|
+
end
|
66
|
+
SimpleCov.at_exit do
|
67
|
+
SimpleCov.result.format!
|
68
|
+
percent = Float(SimpleCov.result.covered_percent)
|
69
|
+
if percent < @minimum_coverage
|
70
|
+
abort "Spec coverage was not high enough: #{percent.round(2)} is < #{@minimum_coverage}%"
|
71
|
+
else
|
72
|
+
puts "Nice job! Spec coverage is still above #{@minimum_coverage}%"
|
73
|
+
end
|
74
|
+
end
|
data/.travis.yml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
bundler_args: --path vendor/bundle --jobs=3 --retry=3
|
4
|
+
script: bundle exec rspec
|
5
|
+
cache: bundler
|
6
|
+
|
7
|
+
before_install:
|
8
|
+
- gem install bundler
|
9
|
+
- bundle config --local without local_development yard guard
|
10
|
+
rvm:
|
11
|
+
- 2.4
|
12
|
+
- 2.5
|
13
|
+
- 2.6
|
14
|
+
- jruby
|
15
|
+
matrix:
|
16
|
+
allow_failures:
|
17
|
+
- rvm: jruby
|
18
|
+
fast_finish: true
|
data/.yardopts
ADDED
data/AUTHORS
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
How to contribute:
|
2
|
+
|
3
|
+
## Bug reports / Issues
|
4
|
+
|
5
|
+
* Is something broken or not working as expected? Check for an existing issue or [create a new one](https://github.com/metricfu/metric_fu/issues/new)
|
6
|
+
* See [Quick guide to writing good bug reports](https://github.com/metricfu/metric_fu/wiki/Issues:-Quick-guide-to-writing-good-bug-reports)
|
7
|
+
* IMPORTANT: Include the output of `metric_fu --debug-info`
|
8
|
+
|
9
|
+
## Code
|
10
|
+
|
11
|
+
1. Fork and clone the repo: `git clone git://github.com/yourghname/metric_fu.git && cd metric_fu`
|
12
|
+
2. Install the gem dependencies: `bundle install`
|
13
|
+
3. Make the changes you want and back them up with tests.
|
14
|
+
* Run the tests (`bundle exec rspec`)
|
15
|
+
* Run metric_fu on itself (`bundle exec ruby -Ilib bin/metric_fu`)
|
16
|
+
4. Update the HISTORY.md file with your changes and give yourself credit
|
17
|
+
5. Commit and create a pull request with details as to what has been changed and why
|
18
|
+
* Use well-described, small (atomic) commits.
|
19
|
+
* Include links to any relevant github issues.
|
20
|
+
* *Don't* change the VERSION file.
|
21
|
+
6. Extra Credit: [Confirm it runs and tests pass on the rubies specified in the travis config](.travis.yml). I will otherwise confirm it runs on these.
|
22
|
+
|
23
|
+
How I handle pull requests:
|
24
|
+
|
25
|
+
* If the tests pass and the pull request looks good, I will merge it.
|
26
|
+
* If the pull request needs to be changed,
|
27
|
+
* you can change it by updating the branch you generated the pull request from
|
28
|
+
* either by adding more commits, or
|
29
|
+
* by force pushing to it
|
30
|
+
* I can make any changes myself and manually merge the code in.
|
31
|
+
|
32
|
+
### Commit Messages
|
33
|
+
|
34
|
+
* [A Note About Git Commit Messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
35
|
+
* [http://stopwritingramblingcommitmessages.com/](http://stopwritingramblingcommitmessages.com/)
|
36
|
+
* [ThoughtBot style guide](https://github.com/thoughtbot/guides/tree/master/style#git)
|
37
|
+
|
38
|
+
### About Pull Requests (PR's)
|
39
|
+
|
40
|
+
* [All Your Open Source Code Are Belong To Us](http://www.benjaminfleischer.com/2013/07/30/all-your-open-source-code-are-belong-to-us/)
|
41
|
+
* [Using Pull Requests](https://help.github.com/articles/using-pull-requests)
|
42
|
+
* [Github pull requests made easy](http://www.element84.com/github-pull-requests-made-easy.html)
|
43
|
+
|
44
|
+
## Documentation
|
45
|
+
|
46
|
+
* If relevant, you may update [the metric_fu website](https://github.com/metricfu/metricfu.github.com) in a separate pull request to that repo
|
47
|
+
* Update the wiki
|
data/CONTRIBUTORS
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
Benjamin Fleischer
|
2
|
+
Jake Scruggs
|
3
|
+
Édouard Brière
|
4
|
+
Richard Huang
|
5
|
+
Grant McInnes
|
6
|
+
Petrik
|
7
|
+
Dan Mayer
|
8
|
+
Robin Curry
|
9
|
+
Sean Soper
|
10
|
+
Delwyn de Villiers
|
11
|
+
Martin Gotink
|
12
|
+
Carl Youngblood
|
13
|
+
Andre Arko
|
14
|
+
Chris Griego
|
15
|
+
Sathish
|
16
|
+
Michael Stark
|
17
|
+
Nick Quaranto
|
18
|
+
dan sinclair
|
19
|
+
joshuacronemeyer
|
20
|
+
jscruggs
|
21
|
+
David Chelimsky
|
22
|
+
adrien
|
23
|
+
Jay Zeschin
|
24
|
+
Greg Allen
|
25
|
+
Alex Rothenberg
|
26
|
+
calveto
|
27
|
+
Avdi Grimm
|
28
|
+
Kevin Rutherford
|
29
|
+
Randy Souza
|
30
|
+
GeorgeErickson
|
31
|
+
Josef Šimánek
|
32
|
+
Andy Gregorowicz
|
33
|
+
Tarsoly András
|
34
|
+
Benjamin Fleischer / Paul Swagerty
|
35
|
+
Nick Veys
|
36
|
+
unknown
|
37
|
+
Micah Geisel
|
38
|
+
Extrovert
|
39
|
+
Ben Turner
|
40
|
+
Andrew Timberlake
|
41
|
+
KAKUTANI Shintaro
|
42
|
+
Guilherme Souza
|
43
|
+
Przemysław Dąbek
|
44
|
+
carlost
|
45
|
+
David Barri
|
46
|
+
Beau Fabry
|
47
|
+
Chris Mason
|
48
|
+
Andrew Selder
|
49
|
+
iain
|
50
|
+
Mark Wilden
|
51
|
+
Alessandro Dias
|
52
|
+
Lars E. Hoeg
|
53
|
+
Eric Wollesen
|
54
|
+
Adam Bair
|
55
|
+
Jinzhu
|
56
|
+
Matthew Van Horn
|
57
|
+
Diego Carrion
|
58
|
+
saltracer
|
59
|
+
benlovell
|
60
|
+
ff-cviradiya
|
61
|
+
khall
|
62
|
+
Stefan Huber
|
63
|
+
Todd A. Jacobs
|
64
|
+
jayzes
|
65
|
+
Hans Hasselberg
|
66
|
+
Scyllinice
|
67
|
+
Bitdeli Chef
|
68
|
+
René Föhring
|
69
|
+
Matthew Gordon
|
70
|
+
factorylabs
|
71
|
+
Mike Ball
|
72
|
+
Guilherme Simões
|
73
|
+
Paul Elliott
|
74
|
+
Joel Nimety
|
75
|
+
Chris Ian Fiel
|
76
|
+
Mike Szyndel
|
data/DEV.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
## Contracted Interfaces
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
MetricFu.run_dir #=> Dir.pwd
|
5
|
+
MetricFu.run_dir = 'some_path'
|
6
|
+
MetricFu.run_path #=> Pathname(Dir.pwd)
|
7
|
+
MetricFu.root_dir
|
8
|
+
MetricFu.loader.load_user_configuration
|
9
|
+
MetricFu.loader.loaded_files
|
10
|
+
MetricFu.lib_require { 'utility' }
|
11
|
+
MetricFu.lib_dir #=> metric_fu/lib
|
12
|
+
MetricFu.lib_require('metrics') { 'flog/metric' }
|
13
|
+
MetricFu.metrics_require {'flog/metric' }
|
14
|
+
MetricFu.metrics_dir #=> metric_fu/lib/metrics
|
15
|
+
MetricFu.formatter_require { 'html' }
|
16
|
+
MetricFu.formatter_dir #=> metric_fu/lib/formatter
|
17
|
+
MetricFu.reporting_require { 'result' }
|
18
|
+
MetricFu.reporting_dir #=> metric_fu/lib/reporting
|
19
|
+
MetricFu.logging_require { 'mf_debugger' }
|
20
|
+
MetricFu.lib_require { 'logger' }
|
21
|
+
MetricFu.logging_dir #=> metric_fu/lib/logging
|
22
|
+
MetricFu.errors_require { 'analysis_error' }
|
23
|
+
MetricFu.errors_dir #=> metric_fu/lib/errors
|
24
|
+
MetricFu.data_structures_require { 'line_numbers' }
|
25
|
+
MetricFu.data_structures_dir #=> metric_fu/lib/data_structures
|
26
|
+
MetricFu.tasks_require { } # Doesn't work as expected. Don't use
|
27
|
+
MetricFu.tasks_dir #=> metric_fu/lib/tasks
|
28
|
+
|
29
|
+
MetricFu.configuration #=> MetricFu::Configuration.new
|
30
|
+
MetricFu.configuration.configure_metrics # for each metric, yield to block or runs enable, activate
|
31
|
+
MetricFu.configuration.configure_metric(:flog) do |metric|
|
32
|
+
metric.run_options #=> metric.default_run_options.merge(metric.configured_run_options)
|
33
|
+
metric.enable
|
34
|
+
metric.enabled = true
|
35
|
+
metric.activate
|
36
|
+
metric.activated = true
|
37
|
+
metric.name #=> :flog
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
## Templates
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
# Given
|
45
|
+
template = MetricFu::Templates::MetricsTemplate.new
|
46
|
+
|
47
|
+
# Render _report_footer.html.erb partial:
|
48
|
+
|
49
|
+
template.render_partial('report_footer')
|
50
|
+
|
51
|
+
# Render _graph.html.erb partial and set a graph_name instance variable:
|
52
|
+
|
53
|
+
template.render_partial 'graph', {:graph_name => 'reek'}
|
54
|
+
```
|
55
|
+
|
56
|
+
## Testing
|
57
|
+
|
58
|
+
`bundle exec rspec`
|
59
|
+
|
60
|
+
## Forking
|
61
|
+
|
62
|
+
## Issues / Pull Requests
|
63
|
+
|
64
|
+
* see [CONTRIBUTING](CONTRIBUTING.md)
|
65
|
+
|
66
|
+
## Building
|
67
|
+
|
68
|
+
`rake build` or `rake install`
|
69
|
+
|
70
|
+
## Releasing
|
71
|
+
|
72
|
+
0. Run `rake usage_test` to make sure the examples are still valid
|
73
|
+
1. Update lib/metric_fu/version.rb
|
74
|
+
2. Update HISTORY.md
|
75
|
+
3. Update CONTRIBUTORS and erd per README in etc
|
76
|
+
3. `rake release`
|