vscode( vscode-ruby +rubocop ) 保存時に自動修正するにはどうすればよいですか?
概要
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 では、コードの強調表示は正常に機能します。 *拡張機能がインストールされており、問題タブに警告が表示されていることに注意してください。
vscode-ruby とrubocop はファイル保存時にインデントと cop ルールを自動修正してくれると思っていましたが、どうやらそうではないようです。 コードをより美しく整形したい場合、どのように設定すればよいでしょうか?
解決策
vscode-ruby-rubocop GitHub のこのコメントによると、次の設定を使用できます。
{
"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.rubocop.executePath": "path/where/rubocop/is/located",
"ruby.format": "rubocop",
}
それらをローカルボックスのユーザー設定に適用しただけで、機能しているようです。 VS Code は、ruby.rubocop.executePath 設定が実行可能ではないというエラーをスローしていましたが、その行を削除してもそのエラーは表示されないようで、それに応じてコードがフォーマットされます。タイムアウトを低く設定すると (私は 2500 を試しました)、保存時に自動フォーマットが壊れるようなので、5000 のままにすることをお勧めします。