RuboCop

榜样很重要。

— 警官亚历克斯·J·墨菲 / 机器战警

概述

RuboCop 是一个 Ruby 静态代码分析器(又称代码 linter)和代码格式化程序。它开箱即用,将强制执行社区 Ruby 风格指南 中概述的许多指南。

RuboCop 在您通常期望的 linter 功能之上提供了许多功能

  • 适用于所有主要的 Ruby 实现

  • 自动更正它检测到的许多代码违规

  • 强大的代码格式化功能

  • 用于交互式使用和将数据馈送到其他工具的多种结果格式化程序

  • 能够为代码库的不同部分设置不同的配置

  • 能够仅针对特定文件或文件部分禁用某些 cop

  • 极其灵活的配置,允许您将 RuboCop 适应几乎所有风格和偏好

  • 使用自定义 cop 和格式化程序扩展 RuboCop 很容易

  • 大量现成的 扩展(例如 rubocop-railsrubocop-rspecrubocop-performancerubocop-minitest

  • 广泛的编辑器/IDE 支持

  • 许多在线服务在内部使用 RuboCop(例如 HoundCI 和 CodeClimate)

  • 有史以来最好的徽标/贴纸

该项目与记录和推广 Ruby 社区最佳实践的几项工作密切相关

RuboCop(及其核心扩展)的长期目标是使用 cop 涵盖社区风格指南中的所有指南。

理念

RuboCop 最初的目标是成为一个遵循 Ruby 风格指南(类似于 `gofmt`)的固执己见的代码风格检查器/格式化器。在那个年代,代码风格检查器只支持一种风格,你甚至无法关闭单个检查器。最终,我们意识到,在 Ruby 社区中,存在着许多相互竞争的风格和偏好,要找到一套让每个人都满意的默认设置将非常具有挑战性。这部分是由于 Ruby 本身的文化和理念,部分是由于近 20 年来缺乏共同标准。很难改变这些,但实际上也没有必要。

我们收到的早期反馈促使我们采用了一种(极端)可配置性和灵活性的理念,并试图涵盖 Ruby 中所有常见的编程风格。虽然我们仍然相信坚持社区风格指南有很多好处,但我们也承认 Ruby 的精髓在于多样性,以及以你喜欢的方式做事。无论你有什么风格偏好,RuboCop 都能满足你的需求。这是我们的承诺和保证。当然,这要是在理智的范围内。

下一步

那么,接下来该做什么呢?虽然你可以随意浏览文档,但这里有一些建议。

  • 请参阅 "基本用法",以熟悉 RuboCop 的功能。

  • 根据你的风格/偏好调整 RuboCop。RuboCop 是一个非常灵活的工具,其行为的绝大多数方面都可以通过各种 配置选项 进行调整。请参阅 "配置" 了解更多详细信息。

  • 请参阅 "版本控制",了解有关 RuboCop 版本控制、更新以及引入新代码风格检查器的过程。

  • 探索 现有的扩展