VScode 上的 rubocop 不是 working.Error "rubocop is not executable"

rubocop on VScode not working.Error "rubocop is not executable"

最近我在 vscode 上安装了 rubocop。然而,work.Error下面没有消息。

rubocop is not excutable 
execute path is empty! please check ruby.rubocop.executePath

我该如何解决?我搜索了一些文章,一直没有解决...

比照。 vscode-ruby-rubocop https://github.com/misogi/vscode-ruby-rubocop

看看configuration docs

{
  // If not specified searches for 'rubocop' executable available on PATH (default and recommended)
  "ruby.rubocop.executePath": "",
  ...
}

因此,默认情况下不会设置 executePath,因为它期望您在 PATH 中包含 rubocop 可执行文件。

简单来说,您可以做两件事,将 rubocop 可执行文件路径添加到您的 PATH,或者将其添加到包选项中。

您可以使用 which rubocop 检查 rubocop 可执行目录(然后复制并粘贴)。

已接受的答案对我不起作用。但是,我确实找到了 jdarnok 对此 GitHub issue 的评论对我有用。

首先,为了获取程序文件的用户路径,我运行:

rbenv which rubocop

这给了我这个结果:

/Users/<your username>/.rbenv/versions/2.6.2/gemsets/Rails4.2_EnergyLink/bin/rubocop

那我运行:

which rubocop

这给了我这个结果:

/Users/<your username>/.rbenv/shims/rubocop

解决方案

Ruby > Rubocop: Execute Path下的VS Code设置里我粘贴了:

/Users/<your username>/.rbenv/shims/

其他可能的解决方案

这个Whosebug post指的是其他一些可能的解决方案,例如:

  • 将PATH中的bin替换为wrappers
  • 刷新executable hooks
  • 更新捆绑器
  • 更新宝石

tl;博士

确保您首先安装了 Rubocop。

VS Code Rubocop 教程

Install Rubocop

gem install rubocop

您可以像这样检查它是否正常工作:

rubocop -v

安装 VS 代码扩展

搜索 ruby-rubocop in the marketplace 并安装它。

为您的项目配置 Rubocop

.rubocop.yml 文件添加到项目的根目录。您可以在 default config file 中看到所有配置选项以及此类文件的外观。请注意,如果文件中有过时或错误的规则,您将收到错误消息,Rubocop 将无法运行。 VS Code 会提醒你:

简答:尝试以不同的方式开始VSCode。

说明: 一个进程继承了它启动时的所有环境配置。如果在你的全局环境中安装了 rubocop,那么,无论你如何启动都很棒 VSCode rubocop 将可用到 plug-in。不利的一面是,rubocop 现在可用于所有事物,其中大部分将永远不需要它,并且所有使用它的事物都需要相同版本的 rubocop。

如果使用 ruby 管理器将 rubocop 安装在 gemset 中,或者您有类似 dot-file 管理器的东西来操纵您的环境,当您启动时,rubocop 可能不在路径中 VSCode.

我总是从终端启动 VSCode。我打开一个终端,然后 cd 进入我的项目文件夹。我的 ruby 管理器 (rvm) 和 dot-file 管理器 (direnv) 自动添加和更改环境中的一些变量。然后我 运行 code . 开始 VSCode 我的项目。这确保 VSCode 在与我的应用 运行.

相同的环境配置中 运行ning

当我 运行 进入这个问题时,是因为我的包想要的版本和 vscode 中的 rubocop 想要的版本不同。

在 vscode rubocop 设置中,检查 `execute rubocop using bundler(即 'bundle exec rubocop')并消除对我有用的执行路径。 Ruby > Rubocop: Use Bundler checkbox