RuboCop 如何用 --changed 只检查当前分支改动的代码?
RuboCop 如何用 --changed 只检查当前分支改动的代码【免费下载链接】rubocopA Ruby static code analyzer and formatter, based on the community Ruby style guide.项目地址: https://gitcode.com/GitHub_Trending/rub/rubocop在一个已经运行多年的 Ruby 项目里直接在根目录执行rubocop会递归检查目录下所有 Ruby 文件。代码库越大、历史遗留的 offense 越多一次全量检查的输出就越长而且大部分结果和你刚写的代码没有关系。RuboCop 从 1.91.0 开始提供--changed选项它向 git 询问哪些文件发生了变化然后只检查这些文件让你用一条命令完成只查当前分支改动的检查。该选项只在 git 仓库内有效并且要求 git 已安装、位于PATH上项目本身需要先安装 RuboCop见 Installation。工作原理git 决定要检查哪些文件--changed不做自己的文件扫描它把文件列表交给 git 回答再与 RuboCop 常规的检查目标取交集。据 Getting Started 的说明rubocop --changed默认对比HEAD即自上次提交以来有差异的文件包括已修改、已暂存和未跟踪的文件。未跟踪的新文件同样算作改动CLI Reference 中同样标注 defaulting toHEAD、Untracked files count as changed。rubocop --changedREVISION可以换成任意 git 修订号作为对比基线例如--changedmain覆盖分支相对 main 的全部改动。被删除的文件会被跳过没有内容可检查。.rubocop.yml里的Include/Exclude依然生效。最终检查的是git 说有改动与RuboCop 本来就会检查两者的交集。被检查的是整个文件而不是改动的行。你碰过的文件里没写的部分仍然会被报告 offense。如果需要行级过滤文档提到可以使用 Pronto 等第三方工具。准备条件用 gem 安装$ gem install rubocop或者用 bundler 管理时在Gemfile中声明注意require: falsegem rubocop, require: false运行前提项目目录位于 git 仓库内。在 git 仓库之外--changed会直接报错而不是猜测。git 命令可用。若 git 不在PATH上RuboCop 会报--changed requires git to be installed and on your PATH.见 lib/rubocop/changed_files.rb。仓库没有任何提交时所有文件都算改动--changed等价于检查全部文件。本地检查只看工作区改动的文件在分支上改完代码后运行$ rubocop --changed进度输出的第一行会显示形如Inspecting N files的统计N 应等于你改动含新增的文件数而不是整个仓库的文件数。要确认具体是哪些改动文件被标记了 offense可以加上机器可解析的filesformatter见 Formatters它只输出有 offense 的文件名$ rubocop --changed --format files该 formatter 每个文件占一行输出方便管道给其他工具文档给出的示例用法是rubocop --format files | xargs vim。两个可以直接对照的判断结果来自 spec/rubocop/cli/changed_spec.rb 验证的行为工作区干净、没有任何改动时--changed无文件可查输出包含no offenses detected退出码为 0。改动文件存在 offense 时--format files输出该文件名退出码为 1。如果只想在改动后预览自动修复会做什么可以加--diff$ rubocop --changed --diff--diff只打印 autocorrect 将要产生的 unified diff不写任何文件。文档把这一组合推荐用于大型代码库采纳中期的本地快速检查改动几个文件后提交前先在改动范围内预览修复内容。在 CI 中相对 main 检查整个分支本地场景对比的是HEADCI 上更常见的需求是这个分支相对 main 改了什么就查什么。文档给出的命令是$ git fetch origin main --depth1 $ rubocop --changedorigin/main文档对这一用法的定位是在 CI 上让新代码遵守整个仓库尚未达到的标准而不需要一份.rubocop_todo.yml。历史债务不会因为一次全量检查而挡住新提交的合并。把范围再缩小到某个目录在命令行上给出的路径会与改动文件列表进一步取交集而不是替换它。例如只关心lib下的改动$ rubocop --changed --format files lib注意书写位置如果写成rubocop --changed libCLI 会把紧跟在--changed后面的lib解析成修订号。测试验证了这一形式会以退出码 2 结束stderr 报告--changed takes a git revision, but lib is a path.Getting Started 文档中以rubocop --changed lib举例说明路径收窄但实际 CLI 解析行为以上面测试验证的形式为准。把路径放在其他选项之后是可靠的写法。结果判断退出码--changed的退出码遵循 RuboCop 通用规则见 CLI Reference0没有 offense或所有 offense 低于--fail-level。默认情况下使用--autocorrect时已被自动修复的 offense 不算失败。1发现一个或多个达到--fail-level的 offense。默认即未被自动修复的 offense。2异常终止无效配置、无效 CLI 选项或内部错误。--changed相关的报错场景都落在这档场景表现在 git 仓库外运行报错stderr 含not a git repository不会猜测文件列表修订号不存在如--changedno-such-revision退出码 2stderr 报告--changed could not ask git which files changed与--stdin同时使用退出码 2报告--changed cannot be used with --stdin.git 未安装或不在PATH上报告--changed requires git to be installed and on your PATH.可选把 --changed 设为默认行为默认命令行选项会从.rubocop文件和RUBOCOP_OPTS环境变量加载再与显式传入的命令行选项合并优先级从高到低为显式命令行选项 RUBOCOP_OPTS.rubocop文件。因此可以把--changed写入这两处之一让本地每次运行默认只检查改动文件需要全量检查时再显式去掉。相关文档Getting Started — Inspecting Only What Changed 一节--changed的完整用法示例CLI Reference —--changed[REVISION]参数说明与退出码定义Formatters —files等机器可解析输出格式lib/rubocop/changed_files.rb — 向 git 查询改动文件的实现与全部报错文案spec/rubocop/cli/changed_spec.rb —--changed的行为验证包括各类错误退出场景【免费下载链接】rubocopA Ruby static code analyzer and formatter, based on the community Ruby style guide.项目地址: https://gitcode.com/GitHub_Trending/rub/rubocop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

IoT-For-Beginners 制造篇:从图像分类到边缘部署的果蔬质量检测实战指南

IoT-For-Beginners 制造篇:从图像分类到边缘部署的果蔬质量检测实战指南

IoT-For-Beginners 制造篇:从图像分类到边缘部署的果蔬质量检测实战指南 【免费下载链接】IoT-For-Beginners 12 Weeks, 24 Lessons, IoT for All! 项目地址: https://gitcode.com/GitHub_Trending/io/IoT-For-Beginners 导读 本文围绕 IoT-For-Beginners 开…

2026/11/5 9:22:14 阅读更多 →
Eigent 开发者模式:如何保留 Docker 数据库并对 server API 进行热重载

Eigent 开发者模式:如何保留 Docker 数据库并对 server API 进行热重载

Eigent 开发者模式:如何保留 Docker 数据库并对 server API 进行热重载 【免费下载链接】eigent Eigent: The Open Source Cowork Desktop - Local and Free Alternative to Claude Cowork and Codex 项目地址: https://gitcode.com/GitHub_Trending/ei/eigent …

2026/11/13 17:29:23 阅读更多 →
3 步搞定抖音无水印批量下载:douyin-downloader 上手指南

3 步搞定抖音无水印批量下载:douyin-downloader 上手指南

3 步搞定抖音无水印批量下载:douyin-downloader 上手指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…

2026/10/24 3:08:51 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻