metricfu / metric_fu

A fist full of code metrics
http://metricfu.github.com/metric_fu
MIT License
624 stars 96 forks source link

reek: uninitialized constant Parser::Ruby21 (NameError) #305

Closed etagwerker closed 4 years ago

etagwerker commented 4 years ago

Hi there,

I'm submitting an issue based on this comment: https://github.com/metricfu/metric_fu/issues/292#issuecomment-334473763 (initially reported by @dbwest)

I just ran into the same problem:

$ metric_fu
******* STARTING METRIC churn
******* ENDING METRIC churn
******* STARTING METRIC reek
/Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:21:in `initialize': uninitialized constant Parser::Ruby21 (NameError)
Did you mean?  Parser::Ruby23
               Ruby21Parser
               Ruby24Parser
               Ruby23Parser
               Ruby22Parser
               Ruby26Parser
               Ruby25Parser
               Ruby20Parser
               RubyVM
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:38:in `new'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_code.rb:38:in `from'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `block in sources'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `map'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_locator.rb:19:in `sources'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/source/source_repository.rb:29:in `parse'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/gems/reek-2.2.1/lib/reek/core/examiner.rb:34:in `initialize'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:18:in `new'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:18:in `run!'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/metrics/reek/generator.rb:13:in `emit'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/generator.rb:104:in `generate_result'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/reporting/result.rb:48:in `add'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:21:in `block in measure'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:19:in `each'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:19:in `measure'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/run.rb:9:in `run'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/cli/helper.rb:19:in `run'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/lib/metric_fu/cli/client.rb:19:in `run'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bundler/gems/metric_fu-6ec57f23838b/bin/metric_fu:9:in `<top (required)>'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/metric_fu:23:in `load'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/metric_fu:23:in `<main>'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/ruby_executable_hooks:24:in `eval'
    from /Users/etagwerker/.rvm/gems/ruby-2.3.8@epetitions/bin/ruby_executable_hooks:24:in `<main>'

Here are the steps to reproduce:

git clone git@github.com:alphagov/e-petitions.git
git checkout metric_fu
bundle 
metric_fu

I tested with both v4.12.0 and master and I found the same result with both of them.

Update

$ ruby --version
ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-darwin17]
Blake-LeBlanc commented 4 years ago

Anything we can do in the meantime to get the process to complete?

I'm running ruby 2.7.0p0 and my output is very similar to OP's

uninitialized constant Parser::Ruby21 (NameError)
Did you mean? Parser::Ruby25 / Ruby VM

Thanks in advance!

etagwerker commented 4 years ago

@Blake-LeBlanc You might want to try with https://rubygems.org/gems/fastruby-metric_fu. I started that fork with a couple of changes to address this issue.

Blake-LeBlanc commented 4 years ago

@Blake-LeBlanc You might want to try with https://rubygems.org/gems/fastruby-metric_fu. I started that fork with a couple of changes to address this issue.

Great! Thank you @etagwerker , that runs on my end!