在VScode上,Rubocop不能正常使用。出现错误提示:"rubocop is not executable"。

35

最近我在VSCode上安装了Rubocop,但它无法正常工作。以下是错误消息。

rubocop is not excutable 
execute path is empty! please check ruby.rubocop.executePath
我该如何解决它?我查阅了一些文章,但从未得到解决...
参见 vscode-ruby-rubocop https://github.com/misogi/vscode-ruby-rubocop
6个回答

71

对我来说,被接受的答案不起作用。然而,在这个GitHub问题的评论中,我找到了jdarnok的评论,这对我有用。

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

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

解决方法

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

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

其他潜在的解决方法

这个Stackoverflow帖子涉及到一些其他可能的解决方法,例如:

  • wrappers代替PATH中的bin
  • 刷新executable hooks
  • 更新bundler
  • 更新gems

1
“将 PATH 中的 bin 替换为 wrappers” 对我来说似乎起作用了。谢谢! - Abdelrahman ElZamzamy
不用谢 ;) (jdarnok) - Konrad Janczyk

23

简述

确保您首先安装了Rubocop。

VS Code Rubocop教程

安装Rubocop

gem install rubocop

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

rubocop -v

安装 VS Code 扩展

在扩展市场搜索ruby-rubocop 并安装它。

在 VS Code 扩展市场安装 Rubocop

为你的项目配置 Rubocop

.rubocop.yml文件添加到你的项目根目录。你可以在默认配置文件中查看所有配置选项以及该文件应该如何编写。请注意,如果文件中存在过时或错误规则,你将收到一个错误提示并且Rubocop将无法工作。VS Code会提醒你:

Rubocop 配置错误


14

请查看配置文档

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

因此,默认情况下,executePath不会被设置,因为它期望你的PATH中有rubocop可执行文件。

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

你可以使用which rubocop命令检查rubocop可执行文件所在的目录(然后复制并粘贴它)。


1
谢谢!我尝试了 $ which rubocop,然后出现了 rubocop not found 的提示。当我使用 $ rbenv which rubocop 时,返回了 Users/user/.rbenv/versions/2.5.1/bin/rubocop。那么,我应该如何设置路径到 ruby.rubocop.executePath - ShogoTGM
2
似乎你的shell没有运行你已安装的rbenv版本的Ruby。与ruby -vwhich ruby相比,rbenv listrbenv versions列出了什么(我使用rvm,不知道命令,抱歉)?我认为切换到rbenv 2.5.1然后从终端运行code .会帮助VScode找到rubocop - t56k
抱歉回复晚了...感谢您的建议!它起作用了! - ShogoTGM
1
从终端运行 code . 就像 @t56k 提到的那样,对我也起作用了。我正在使用带有 RVM 的 Ruby,在 M1 空气上遇到了类似的问题。 - F.E.A
运行代码。对我也起作用。谢谢你。 - Vicente Matus

11

简短回答: 尝试以不同的方式启动VSCode。

解释: 一个进程会继承启动它的环境配置。如果rubocop已安装在全局环境中,那么无论你如何启动VSCode,插件都可以使用它。但缺点是,现在所有东西都可以使用rubocop,其中大多数永远不需要它,而所有使用它的事物都需要要求相同版本的rubocop。

如果rubocop是使用一个ruby管理器安装在gemset中的,或者您有像dot-file管理器这样操纵环境的工具,则当您启动VSCode时,rubocop可能不在PATH中。

我总是从终端启动VSCode。我打开终端并cd到我的项目文件夹。我的ruby管理器(rvm)和dot-file管理器(direnv)会自动添加和更改环境中的某些变量。然后我运行code .来启动与我的应用程序相同环境配置的VSCode。


1
当我遇到这个问题时,是因为我的捆绑包想要的版本和 VSCode 中 rubocop 想要的版本不同。
在 VSCode 的 rubocop 设置中,勾选“使用 bundler 执行 rubocop(即 'bundle exec rubocop')”并消除执行路径对我有用。Ruby > Rubocop: 使用 Bundler 复选框

0

遇到了同样的错误。问题在于VS Code隐藏了详细的错误信息。

要查看完整的错误信息并帮助解决问题:

打开 帮助 -> 开发人员工具 -> 控制台 (点击这里)

在那里,您将看到实际的错误信息。

我有2个损坏的代码片段需要更新,而且可执行文件路径也是错误的。

非常烦人,但如果您打开开发人员工具并检查控制台,您将能够更好地进行调试并解决任何出现的问题。

Screenshot of VS Code with Debug Console


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接