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

kgsdhlau  于 2022-11-04  发布在  Ruby
关注(0)|答案(7)|浏览(224)

环境

  • vscode版本1.19.1(1.19.1)
  • 红铜矿(0.52.1)
  • 达尔文mbp 16.7.0达尔文内核版本16.7.0:2017年太平洋夏令时10月4日星期三00:17:00;根目录:xnu-3789.71.6~1/版本_x86_64 x86_64
  • Ruby2.3.5p376(2017年9月14日修订版59905)[x86_64-达尔文16]

按照https://github.com/rubyide/vscode-ruby#linters,安装所有gem,并编辑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上,程式码反白显示运作良好。

  • 请注意,您会看到已安装的扩展,并在problem选项卡中显示警告。

问题

我的印象是vscode-rubyrubocop会在**文件保存 * 时自动更正缩进和复制规则,但显然它不会。
如果我想让它像prettier一样格式化我的代码,我应该如何设置?

afdcj2ne

afdcj2ne1#

根据对vscode-ruby-rubocop GitHub的评论,您可以使用以下设置:

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

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

xzlaal3s

xzlaal3s2#

我已经尝试了其他人分享的所有选项,它为我修复了链接(所以当我的代码格式不正确时,我会收到警告),但它没有修复保存时的缩进或其他格式。
对我来说,添加一个默认的格式化程序选项似乎很有用。如果你看一下vscode的右下角,你会看到一个通知图标,它可能会抛出一些警告,对你的配置有帮助。对我来说,它是添加:

"[ruby]": {
  "editor.defaultFormatter": "misogi.ruby-rubocop"
}
nkhmeac6

nkhmeac63#

现在,只需添加以下行就足够了:

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

qacovj5a4#

我有这个问题一段时间,没有其他解决方案为我工作。
根据github的评论,解决的问题是:
我将PATH中的bin替换为wrappers,并解决了该问题:vscode设置:ruby.rubocop.executePath": "/Users/USER_NAME/.rvm/gems/ruby-2.6.5/wrappers/

**注:**如果上述方法都不适用,您可以检查另一个有用的方法,即检查您的个人文件夹中是否有.rubocop.yml文件(~/.rubocop.yml),然后删除它,这样您就只需要处理项目的.rubocop.yml文件。

vm0i2vca

vm0i2vca5#

要确保自动更正与ruby-rubocop一起工作,请添加以下设置,并确保“ruby.rubocop.executePath”:“/rubocop/所在的路径”,设置为默认的“ruby.rubocop.executePath”:“",
在vscode中将以下内容添加到json文件中

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

lhcgjxsq6#

谢天谢地,这条评论现在已经过时了
--不幸的是,当前的rubocop扩展无法实现这一点。主要的用例是在IDE中lint您的ruby并显示可视提示。
这是github上目前尚未解决的问题/功能要求。请检视此问题以查看进度,直到问题解决为止。
https://github.com/misogi/vscode-ruby-rubocop/issues/49

xbp102n0

xbp102n07#

我对ruby-rubocop这个扩展很纠结,上次更新是在2021年12月。它似乎还在使用自动更正命令--autocorrect,而Rubocop现在使用的是--auto-correct。我换了另一个扩展ruby-rubocop-revived,它修复了我的自动更正问题。
它还引入了useServer选项,可加快执行速度。
以下是我使用的设置:


# .vscode/settings.json

  "ruby.format": "rubocop",
  "ruby.rubocop.onSave": true,
  "ruby.rubocop.useServer": true,
  "[ruby]": {
    "editor.defaultFormatter": "rebornix.ruby"
  },

相关问题