mcpField
R
rrubocop

rrubocop

本地服务
github.com开发工具2今天更新

关于 rrubocop

rrubocop 是面向使用 RuboCop 配置和工作流团队的 Rust Ruby 代码检查器。它支持类似 RuboCop 的输出和自动修正,并提供 MCP 检查与修正工具。

主要功能

  1. 01兼容 RuboCop 配置
  2. 02类似 RuboCop 的文本与 JSON 输出
  3. 03安全及完整自动修正
  4. 04覆盖 Ruby 项目的内置规则
  5. 05内容寻址的检查缓存
  6. 06MCP 检查与自动修正工具

适用场景

  1. 01检查现有 Ruby 项目
  2. 02沿用项目的 `.rubocop.yml`
  3. 03通过命令行自动修正违规
  4. 04让编码 Agent 检查并修复 Ruby 代码

MCP 相关

运行 `rrubocop --mcp`,通过 stdio 暴露 `rubocop_inspection` 和 `rubocop_autocorrection`。MCP 客户端可检查路径或内联源码,并对文件系统目标应用修正。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
cargorrubocop0.8.17

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

rrubocop

速度快 10 倍的 RuboCop 即插即用替代方案——使用相同的 CLI、.rubocop.yml 和违规输出,无需维护 RuboCop gem。代码检查和简单配置无需 Ruby;复杂 ERB 仍需要 Ruby。将它指向现有项目,即可像使用 RuboCop 一样使用。

单个二进制文件——无论使用 rbenv、rvm、系统 Ruby 还是 Docker,运行方式都相同。使用 tree-sitter;代码检查或处理简单 ERB 时无需 Ruby 运行时。不支持的 ERB 会回退到 ruby / bundle exec ruby。

即插即用的兼容性:读取现有的 .rubocop.yml,输出类似 RuboCop 的文本/JSON,支持 -a/-A 自动修正,并持续扩展 cop 覆盖范围。

基准版本(显示在 --help / --version 中):rubocop 1.91.0,以及 rubocop-rails 2.37.0、rubocop-performance 1.27.0、rubocop-rspec 3.9.0、rubocop-rspec_rails 2.32.0、rubocop-factory_bot 2.28.0——版本锁定于 src/resources/baseline.json。

已在 600 多个已安装的 Ruby gem 项目中验证兼容性测试(在相同代码树上运行 RuboCop 和 rrubocop)。

安装

brew install adrianov/rrubocop/rrubocop
cargo install rrubocop

macOS(从 GitHub Releases 下载 .tar.gz;包含二进制文件和 man 手册):

# Apple Silicon — use the *-x86_64-apple-darwin.tar.gz asset on Intel Macs
curl -LO https://github.com/adrianov/rrubocop/releases/download/v0.8.16/rrubocop-0.8.16-aarch64-apple-darwin.tar.gz
tar -xzf rrubocop-0.8.16-aarch64-apple-darwin.tar.gz
sudo cp rrubocop-0.8.16-aarch64-apple-darwin/rrubocop /usr/local/bin/
sudo mkdir -p /usr/local/share/man/man1
sudo cp rrubocop-0.8.16-aarch64-apple-darwin/rrubocop.1 /usr/local/share/man/man1/

Ubuntu / Debian(从 GitHub Releases 下载 .deb;适用于 amd64、Ubuntu 22.04+ / Debian bookworm+):

# example for v0.8.16 — use the asset name from the release page
curl -LO https://github.com/adrianov/rrubocop/releases/download/v0.8.16/rrubocop_0.8.16-1_amd64.deb
sudo dpkg -i rrubocop_0.8.16-1_amd64.deb
man rrubocop
rrubocop [OPTIONS] [PATH]...

功能

  • 配置 — 兼容 RuboCop 的配置解析:向上查找配置、inherit_from / inherit_gem / require/plugins、inherit_mode(合并/覆盖)、嵌套的 .rubocop.yml 覆盖、DisabledByDefault、NewCops / Enabled: pending,以及每个 cop 的 Enabled / Exclude / Include / 选项;按版本随附公共 gem 的默认配置/inherit_gem YAML(来自 Gemfile.lock;YAML 相同时使用 same_as 别名),并在内存中解析;私有/未列出的 gem 会回退到 bundle info --path;原生展开 YAML 中的简单 ERB(仅不支持的标签需要 Ruby)
  • 自动修正 — -a(安全)/ -A(全部)
  • 输出 — progress(随文件处理完成逐步输出标记)、text、json、github、quiet、files、……(TTY 颜色行为与 RuboCop 相同;--color / --no-color)
  • 指令 — # rubocop:disable / enable
  • 解析器 — tree-sitter-ruby(不使用 Prism / CRuby)
  • 缓存 — 内容寻址的 cache.redb,位于 $RRUBOCOP_CACHE_DIR 或 $XDG_CACHE_HOME/rrubocop / ~/.cache/rrubocop 下(风格与 abcop 相同);--cache false 会跳过读取,但仍会写入
  • 使用大模型时优先通过 MCP 使用。 rrubocop --mcp 是通过 Agent 使用 rrubocop 的最佳方式:模型写入代码后即可收到违规信息,因此能在同一轮中修复并自动修正,立即交付有效代码,而不是等到之后的 CLI/CI 检查。官方 Rust rmcp SDK;提供与 RuboCop 1.85+ 相同的工具:rubocop_inspection 和 rubocop_autocorrection

参考实现:nitrocop(架构和测试样例)、上游 RuboCop。

内置 cops

各部门从常见的 RuboCop 插件集(nitrocop / gem 源码)开始,按广度优先方式逐步扩展。主要覆盖范围:

部门说明
Layout/*90 个布局 cop(对齐、间距、空行、缩进;全部支持自动修正)
Lint/*、Style/*、Naming/*、Security/*69 / 143 / 9 / 4 个
Metrics/*AbcSize、BlockNesting、ClassLength、CollectionLiteralLength、ModuleLength、ParameterLists
Rails/*63 个 rails cop
Performance/*24 个性能 cop
RSpec/*104 个 rspec cop
RSpecRails/*2 个(HttpStatus、InferredSpecType)
FactoryBot/*4 个(AssociationStyle、AttributeDefinedStatically、CreateList、FactoryClassName)
Bundler/*、Gemspec/*、Rake/*4 / 4 / 5 个
GraphQL/*26 个 rubocop-graphql cop

使用 rrubocop --list-cops 查看完整的已注册 cop 列表,使用 rrubocop --list-autocorrectable-cops 查看支持 -a/-A 的 cop(目前有 181 个支持自动修正;Layout 已完整覆盖,Style/Lint/Rails/RSpec 持续扩展)。

用法

rrubocop                         # lint .
rrubocop app lib                 # paths
rrubocop -f json .               # JSON offenses
rrubocop -a .                    # safe autocorrect
rrubocop -A .                    # all autocorrect
rrubocop --only Metrics/AbcSize lib
rrubocop --rubocop-version 1.79.2 . # emulate a project's pinned RuboCop (matches CI's bundled gem)
rrubocop --list-cops
rrubocop -L                      # list target files
rrubocop -F 10                   # stop after 10 offenses (off by default; `-F` = 1)
                                 # with `-a`/`-A`, N is non-autocorrectable offenses only
rrubocop --mcp                   # MCP server on stdio (for AI clients)

退出代码:0 表示无问题,1 表示存在达到或超过 --fail-level 的问题,2 表示错误。

MCP(Model Context Protocol)

推荐用于大模型 / Agent 工作流。 将 rrubocop 接入为 MCP 服务,让模型在编辑时调用 rubocop_inspection / rubocop_autocorrection:反馈会在同一轮中返回,Agent 可以尽快修正,并在首次编写时就生成干净的代码,而不是等到 CI 中才发现问题。

rrubocop --mcp 会通过 stdio 运行一个长期运行的 MCP 服务——思路与 RuboCop 的 MCP 相同,且无需 Ruby mcp gem。工具:

工具用途
rubocop_inspection通过 path / paths(字符串或数组;文件系统检查时必需)和/或内联 source_code 执行 lint;返回 LSP 格式的问题 JSON
rubocop_autocorrection目标与检查相同;safety: true = 仅执行安全修正;设置文件系统 path 时会写入文件

始终传入 path 或 paths(优先使用绝对文件路径或目录;path 可以是字符串或数组)。服务会从第一个目标开始向上查找 .rubocop.yml。文件系统操作若未指定目标,会报错(避免 MCP 的 cwd 设置错误时扫描 $HOME)。不含已识别 Ruby 扩展名、文件名或 shebang 的文件(例如 YAML/JSON 配置文件)会被静默跳过——与上游 MCP 相同,其 TargetFinder 以 :only_recognized_file_types 模式运行——因此传入混合路径不会产生 Lint/Syntax 噪声;summary.target_file_count 只反映实际检查的文件。若从 $HOME 启动长期运行的全局 MCP,它会继承 ~/.rubocop.yml(常见设置是 AllCops: Enabled: false),从而漏掉 RSpec/ExampleLength 等项目规则。

  • MCP Registry 名称:mcp-name: io.github.adrianov/rrubocop

元数据位于 server.json(crates.io 上的 Cargo 软件包)。每个 v* 标签都会将该条目发布到 MCP Registry。

客户端配置示例(Cursor / VS Code / Windsurf):

{
  "mcpServers": {
    "rrubocop": {
      "type": "stdio",
      "command": "rrubocop",
      "args": ["--mcp"],
      "cwd": "/path/to/your/project"
    }
  }
}

Claude Code:

claude mcp add rrubocop -- rrubocop --mcp

此功能面向 MCP 客户端,不适用于交互式使用。

缓存

内容寻址缓存位于 $RRUBOCOP_CACHE_DIR 下(或 $XDG_CACHE_HOME/rrubocop / ~/.cache/rrubocop)。缓存键涵盖内容、版本、规则修订版、--only/--except、--rubocop-version、配置指纹和路径。缓存会自动修剪至 20 000 条;--cache false 会跳过读取,但仍会写入。自动修正运行不会使用缓存。项目目录内不会写入任何内容。

基准测试

在大型 Rails 代码库(约 3.8k 个 Ruby 文件)上进行冷启动检查(关闭缓存),同一主机:

工具用时结果备注
bundle exec rubocop --cache false2m 37s(2:36.64)0 个问题CPU 使用率约 99%(主要为单核)
rrubocop --cache false7.0s(7.005)0 个问题CPU 使用率约 1040%(并行运行)
nitrocop --no-cache8.9s(8.906)约 21k 个问题CPU 使用率约 1000%;并非公平的对等测试(见下文)

在同样干净的结果下,rrubocop 的耗时比 RuboCop 快约 22×(156.6s / 7.0s)。RuboCop 的用户态时间为 155s;rrubocop 在多个核心上共使用了 71s 的 CPU 时间。

**nitrocop 注意事项:**开箱即用时,它无法遵循与 bundle exec rubocop 相同的禁用 cop、自定义规则和 gem 配置(例如 inherit_gem 加载失败、跳过或尚未实现的 cop),因此报告了约 21k 个误报,而 RuboCop 和 rrubocop 的检查结果均干净。要匹配该基线,需要额外设置(--migrate、插件和配置接线)。8.9s 仅代表原始吞吐量,不代表可直接替换并达到同等效果。

在 rails/rails(main,通过 bundle exec 使用 RuboCop 1.79.2)上进行冷启动检查(关闭缓存),同一主机(4 核),两者结果均干净(0 个问题)。两次运行取平均值:

工具用时备注
bundle exec rubocop --cache false1m 7s(67.254)CPU 使用率约 99%(主要为单核);3543 个文件
rrubocop --cache false5.7s(5.668)CPU 使用率约 357%(并行运行);3446 个文件

耗时快约 12×(67.254s / 5.668s)。RuboCop 的用户态时间为 66.9s;rrubocop 在多个核心上共使用了 20.2s 的 CPU 时间。

同一主机,冷启动 --cache false,在 Active Support 和 Active Record 上的问题集合一致(共同 .rb 文件的 fp=0、fn=0):

目标RuboCoprrubocop提速倍数
activesupport(rails main)11.566s(531 个文件)1.872s约 6.2×
activerecord(rails main)29.611s(1162 个文件)2.780s约 10.7×
activesupport(v8.1.3.1)10.729s(506 个文件)1.795s约 6.0×
activerecord(v8.1.3.1)27.847s(1126 个文件)2.656s约 10.5×

在全新的 rails new 应用上进行冷启动检查(Rails 8.1.3.1,通过 inherit_gem 使用默认的 rubocop-rails-omakase,通过 bundle exec 使用 RuboCop 1.90.0),并运行脚手架、模型、邮件程序和任务生成器(41 个相同的目标文件)。问题集合一致:fp=0、fn=0(两者均干净)。两次运行取平均值:

工具用时
bundle exec rubocop --cache false0.722s
rrubocop --cache false0.593s

与 nitrocop 进行交叉测试

使用本地构建的 nitrocop:

testdata/cross_test_nitrocop.py /path/to/fixture_dir

比较 (path, line, cop_name) 问题集合。

许可证

GPL-3.0-or-later。有关 nitrocop 衍生设计/逻辑的 MIT 归属信息,请参阅 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。