vscode(vscode-ruby + rubocop)如何在保存时自动更正?

时间:2017-12-30 03:35:23

标签: ruby visual-studio-code rubocop

环境

  • vscode版本1.19.1(1.19.1)
  • rubocop(0.52.1)
  • Darwin mbp 16.7.0 Darwin Kernel Version 16.7.0:Wed Oct 4 00:17:00 PDT 2017; root:xnu-3789.71.6~1 / RELEASE_X86_64 x86_64
  • ruby​​ 2.3.5p376(2017-09-14修订版59905)[x86_64-darwin16]

跟随https://github.com/rubyide/vscode-ruby#linters并安装了所有宝石,并像这样编辑了settings.json。

{

  "ruby.rubocop.executePath": "/Users/ac/.rbenv/shims/",
  "ruby.rubocop.onSave": true,
  "ruby.lint": {
    "ruby": {
      "unicode": true //Runs ruby -wc -Ku
    },
    "reek": true,
    "rubocop": {
      "lint": true,
      "rails": true
    },
    "fasterer": true,
    "debride": {
      "rails": true //Add some rails call conversions.
    },
    "ruby-lint": true
  },
  "ruby.locate": {
    "include": "**/*.rb",
    "exclude": "{**/@(test|spec|tmp|.*),**/@(test|spec|tmp|.*)/**,**/*_spec.rb}"
  }

}

在vscode上,代码突出显示工作正常 *只需注意,您会看到已安装的扩展程序,以及问题选项卡中的警告。

rubocop is working ok

问题

我受到vscode-rubyrubocop会自动纠正文件保存上的缩进和警察规则的压缩,但显然它没有。
如果我希望它像prettier那样格式化我的代码,我应该如何设置它?

4 个答案:

答案 0 :(得分:3)

现在,添加这些行就足够了:

{
  "ruby.rubocop.onSave": true,
  "editor.formatOnSave": true,
}

答案 1 :(得分:1)

不幸的是,目前的rubocop扩展无法做到这一点。主要用例是在你的红宝石上lint并在IDE中显示视觉提示。

它目前是github上的一个开放问题/功能请求。查看此问题以查看进度,直至解决。

https://github.com/misogi/vscode-ruby-rubocop/issues/49

答案 2 :(得分:1)

为确保自动校正适用于ruby-rubocop,请添加以下设置 确保将“ ruby​​.rubocop.executePath”:“ path / where / rubocop / is / located”设置为默认值 “ ruby​​.rubocop.executePath”:“”,

将以下内容添加到vscode中的json文件中

"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.rubocop.executePath": "",
"ruby.format": "rubocop",

答案 3 :(得分:0)

在vscode-ruby-rubocop GitHub上,按this comment,您可以使用以下设置:

{
    "editor.formatOnSave": true,
    "editor.formatOnSaveTimeout": 5000,
    "ruby.rubocop.executePath": "path/where/rubocop/is/located",
    "ruby.format": "rubocop",
}

只需将它们应用到我在本地机器上的用户设置中,它似乎可以正常工作。 VS Code对我的ruby.rubocop.executePath设置抛出了一个错误,说它不可执行,并且删除该行似乎并不导致该错误显示,并且仍相应地格式化了我的代码。设置较低的超时时间(我尝试设置为2500)似乎也会破坏保存时的自动格式,因此建议将其设置为5000。