使用rubocop的Emacs flycheck模式出错



我使用带有rubocop检查器的flycheck模式。

当我打开一些rb文件时,

Checker ruby-rubocop returned non-zero exit code 1, but no errors from output: /Users/abc/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/specification.rb:2157:in `method_missing': undefined method `this' for #<Gem::Specification:0x3fc38c8edb10 rubocop-0.35.1> (NoMethodError)
    from /Users/abc/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/specification.rb:1056:in `find_active_stub_by_path'
    from /Users/abc/.rvm/rubies/ruby-2.2.3/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:63:in `require'
    from /Users/abc/.rvm/gems/ruby-2.2.3/gems/rubocop-0.35.1/bin/rubocop:6:in `<top (required)>'
    from /Users/abc/.rvm/gems/ruby-2.2.3/bin/rubocop:23:in `load'
    from /Users/abc/.rvm/gems/ruby-2.2.3/bin/rubocop:23:in `<main>'
    from /Users/abc/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `eval'
    from /Users/abc/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `<main>'
Checker definition probably flawed.

飞行检查模式不工作

我也使用射弹/射弹轨道模式。但是有些项目的rb文件并没有引发错误。某个项目出现错误。

如果不看到它在命令行上运行,很难告诉您发生了什么。

我也遇到了同样的错误,结果发现我使用的是旧版本的Rubocop,而FlyCheck调用的rubocop可执行文件带有一个它不理解的选项(--display-cop-names)。

因此,从命令行运行它,并发布结果,然后我们可以尝试诊断问题。

值得一提的是,我看到的是:

/Users/alexmoore-niemi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:2158:in `method_missing': undefined method `this' for #<Gem::Specification:0x3fce0dc538dc rubocop-0.47.1> (NoMethodError)
    from /Users/alexmoore-niemi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb:1057:in `find_active_stub_by_path'
    from /Users/alexmoore-niemi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:64:in `require'
    from /Users/alexmoore-niemi/.rvm/gems/ruby-2.3.0/gems/rubocop-0.47.1/bin/rubocop:6:in `<top (required)>'
    from /Users/alexmoore-niemi/.rvm/gems/ruby-2.3.0/bin/rubocop:23:in `load'
    from /Users/alexmoore-niemi/.rvm/gems/ruby-2.3.0/bin/rubocop:23:in `<main>'
    from /Users/alexmoore-niemi/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/alexmoore-niemi/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

但这个问题只出现在我的一个项目中;rubocop在另一个项目中执行良好!

因此,我卸载了rubocop,运行了gem update --system,然后重新安装了它,它在两个项目中都再次工作。

我不知道为什么,但在之后

$ rubocop --auto-gen-config

在我的Rails APP_ROOT中,现在一切都很好。

最新更新