与其他工具集成

加速集成

RuboCop 集成了许多其他工具,包括可能尝试为您自动更正的编辑器。在这些情况下,rubocop 会被反复调用,这可能会导致一些缓慢,因为 rubocop 必须在每次调用时都加载其整个环境。

您可以通过使用 "服务器"rubocop-daemon 来缓解一些启动时间。rubocop-daemonrubocop 的一个包装器,它将所有内容加载到一个守护进程中,以便后续运行在第一次执行后节省启动时间。有关设置说明和如何在某些编辑器和其他工具中使用它的示例,请参阅 rubocop-daemon 文档。

RuboCop 的内置 缓存 也应该用于确保未更改的源文件不会被不必要地重新评估。

编辑器集成

所有流行的编辑器都提供某种形式的代码 linter 集成。通常,这可以通过 LSP(如果底层服务器支持)或通过调用 linter 并处理其输出以在编辑器中显示来实现。

如上所述,rubocop 二进制文件启动速度相对较慢,这在调用 linter 的情况下会造成问题。RuboCop "服务器" 功能旨在解决此问题并提供闪电般的快速编辑器集成。

LSP

语言服务器协议 是为各种编程语言提供跨编辑器支持的现代标准。RuboCop LSP 功能旨在提供内置语言服务器。以下是与内置服务器交互的 LSP 客户端

以下 Ruby LSP 服务器在内部使用 RuboCop 来提供代码 linting 功能

Emacs

rubocop.el 是一个简单的 Emacs RuboCop 接口。它允许您在 Emacs 中运行 RuboCop 并快速在代码中的问题之间跳转。

flycheck > 0.9 也支持 RuboCop,并在可用时默认使用它。

Vim

RuboCop 受 syntasticneomakeale 支持。

还有 vim-rubocop 插件。

Helix

Helix 本地支持 Solargraph 以提供 LSP 功能。有关格式化支持,请参阅 RuboCop 的外部二进制格式化程序配置 以使用捆绑或全局安装的 RuboCop 版本。

Sublime Text

对于 ST,您可能会发现 SublimeLinter-rubocopSublime RuboCop 插件有用。

您也可以考虑使用上面提到的利用 RuboCop 的 LSP 服务器之一,方法是使用 Sublime-LSP 插件并按照其 文档 进行配置。

Brackets

brackets-rubocop 扩展在 Brackets 中显示 RuboCop 结果。它可以通过 Brackets 中的扩展管理器安装。

TextMate2

textmate2-rubocop 包在新的窗口中显示格式化的 RuboCop 结果。安装说明可以在 此处 找到。

Atom

Atom 的 linter 插件 linter-rubocop 运行 RuboCop 并突出显示 Atom 中的违规行为。

LightTable

插件 lt-rubocop 提供 LightTable 集成。

RubyMine / Intellij IDEA

从 2017.1 版本开始,RuboCop 支持 可用

Visual Studio Code

扩展 ruby 为 Visual Studio Code 提供 RuboCop 集成。RuboCop 也用于此扩展的格式化功能。

其他编辑器

这是一个为 RuboCop 做贡献的好机会 - 为你最喜欢的编辑器实现 RuboCop 集成。

与 overcommit 的 Git pre-commit hook 集成

overcommit 是一个完全可配置且可扩展的 Git commit hook 管理器。要将 RuboCop 与 overcommit 一起使用,请将以下内容添加到你的 .overcommit.yml 文件中

PreCommit:
  RuboCop:
    enabled: true

与 pre-commit 的 Git pre-commit hook 集成

pre-commit 是一个用于管理和维护多语言 pre-commit hook 的框架。要将 RuboCop 与 pre-commit 一起使用,请将以下内容添加到你的 .pre-commit-config.yaml 文件中

- repo: https://github.com/rubocop/rubocop
  rev: v1.8.1
  hooks:
    - id: rubocop

如果你的 RuboCop 配置使用扩展,请确保将 gem 作为 additional_dependencies 中的条目包含在内

- repo: https://github.com/rubocop/rubocop
  rev: v1.8.1
  hooks:
    - id: rubocop
      additional_dependencies:
        - rubocop-rails
        - rubocop-rspec

Guard 集成

如果你喜欢 Guard,你可能会喜欢 guard-rubocop。它允许你在修改文件时使用 RuboCop 自动检查 Ruby 代码风格。

Mega-Linter 集成

你可以使用 Mega-Linter 在每个 PR 上自动运行 RuboCop,并对你的仓库中检测到的所有文件类型进行 lint。

请按照 安装说明 激活 RuboCop,无需任何额外配置。

Mega-Linter 的 Ruby 风格 针对 Ruby 代码风格检查进行了优化。

Rake 集成

要在你的 Rakefile 中使用 RuboCop,请添加以下内容:

require 'rubocop/rake_task'

RuboCop::RakeTask.new

如果你运行 rake -T,应该会看到以下两个 RuboCop 任务:

$ rake rubocop                                 # Run RuboCop
$ rake rubocop:autocorrect                     # Autocorrect RuboCop offenses

以上将使用默认值。

require 'rubocop/rake_task'

desc 'Run RuboCop on the lib directory'
RuboCop::RakeTask.new(:rubocop) do |task|
  task.patterns = ['lib/**/*.rb']
  # only show the files with failures
  task.formatters = ['files']
  # don't abort rake on failure
  task.fail_on_error = false
end