{"id":27567725,"url":"https://github.com/bbatsov/rubocop","last_synced_at":"2025-04-20T21:01:05.727Z","repository":{"id":36978238,"uuid":"4095287","full_name":"rubocop/rubocop","owner":"rubocop","description":"A Ruby static code analyzer and formatter, based on the community Ruby style guide.","archived":false,"fork":false,"pushed_at":"2025-04-15T00:50:51.000Z","size":50024,"stargazers_count":12721,"open_issues_count":359,"forks_count":3072,"subscribers_count":177,"default_branch":"master","last_synced_at":"2025-04-15T17:48:46.294Z","etag":null,"topics":["code-formatter","hacktoberfest","linter","rubocop","ruby","static-code-analysis"],"latest_commit_sha":null,"homepage":"https://docs.rubocop.org","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rubocop.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"bbatsov","patreon":"bbatsov","open_collective":"rubocop","tidelift":"rubygems/rubocop","custom":"https://www.paypal.me/bbatsov"}},"created_at":"2012-04-21T10:09:58.000Z","updated_at":"2025-04-15T10:05:17.000Z","dependencies_parsed_at":"2023-09-23T14:34:13.291Z","dependency_job_id":"b6a9751a-a419-4349-8be6-9585241d72bc","html_url":"https://github.com/rubocop/rubocop","commit_stats":{"total_commits":11448,"total_committers":1041,"mean_commits":"10.997118155619596","dds":0.806429070580014,"last_synced_commit":"d22bae6fcad1209bf183e19f2b329ded4c5f5bf9"},"previous_names":["rubocop-hq/rubocop","bbatsov/rubocop"],"tags_count":296,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubocop%2Frubocop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubocop%2Frubocop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubocop%2Frubocop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rubocop%2Frubocop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rubocop","download_url":"https://codeload.github.com/rubocop/rubocop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249961531,"owners_count":21352091,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-formatter","hacktoberfest","linter","rubocop","ruby","static-code-analysis"],"created_at":"2025-04-20T21:00:51.907Z","updated_at":"2025-04-20T21:01:05.717Z","avatar_url":"https://github.com/rubocop.png","language":"Ruby","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/rubocop/rubocop/master/logo/rubo-logo-horizontal-white.png\" alt=\"RuboCop Logo\"/\u003e\n\u003c/p\u003e\n\n----------\n[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)\n[![Gem Version](https://badge.fury.io/rb/rubocop.svg)](https://badge.fury.io/rb/rubocop)\n[![CI](https://github.com/rubocop/rubocop/actions/workflows/rubocop.yml/badge.svg)](https://github.com/rubocop/rubocop/actions/workflows/rubocop.yml)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/test_coverage)](https://codeclimate.com/github/rubocop/rubocop/test_coverage)\n[![Maintainability](https://api.codeclimate.com/v1/badges/d2d67f728e88ea84ac69/maintainability)](https://codeclimate.com/github/rubocop/rubocop/maintainability)\n[![Discord](https://img.shields.io/badge/chat-on%20discord-7289da.svg?sanitize=true)](https://discord.gg/wJjWvGRDmm)\n\n\u003e Role models are important. \u003cbr/\u003e\n\u003e -- Officer Alex J. Murphy / RoboCop\n\n**RuboCop** is a Ruby static code analyzer (a.k.a. `linter`) and code formatter. Out of the box it\nwill enforce many of the guidelines outlined in the community [Ruby Style\nGuide](https://rubystyle.guide). Apart from reporting the problems discovered in your code,\nRuboCop can also automatically fix many of them for you.\n\nRuboCop is extremely flexible and most aspects of its behavior can be tweaked via various\n[configuration options](https://github.com/rubocop/rubocop/blob/master/config/default.yml).\n\n----------\n[![Patreon](https://img.shields.io/badge/patreon-donate-orange.svg)](https://www.patreon.com/bbatsov)\n[![OpenCollective](https://opencollective.com/rubocop/backers/badge.svg)](#open-collective-for-individuals)\n[![OpenCollective](https://opencollective.com/rubocop/sponsors/badge.svg)](#open-collective-for-organizations)\n[![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop)](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop\u0026utm_medium=referral\u0026utm_campaign=readme)\n\nWorking on RuboCop is often fun, but it also requires a great deal of time and energy.\n\n**Please consider [financially supporting its ongoing development](#funding).**\n\n## Installation\n\n**RuboCop**'s installation is pretty standard:\n\n```sh\n$ gem install rubocop\n```\n\nIf you'd rather install RuboCop using `bundler`, add a line for it in your `Gemfile` (but set the `require` option to `false`, as it is a standalone tool):\n\n```rb\ngem 'rubocop', require: false\n```\n\nRuboCop is stable between minor versions, both in terms of API and cop configuration.\nWe aim to ease the maintenance of RuboCop extensions and the upgrades between RuboCop\nreleases. All big changes are reserved for major releases.\nTo prevent an unwanted RuboCop update you might want to use a conservative version lock\nin your `Gemfile`:\n\n```rb\ngem 'rubocop', '~\u003e 1.75', require: false\n```\n\nSee [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.\n\n## Quickstart\n\nJust type `rubocop` in a Ruby project's folder and watch the magic happen.\n\n```\n$ cd my/cool/ruby/project\n$ rubocop\n```\n\nYou can also use this magic in your favorite editor with RuboCop's [built-in LSP server](https://docs.rubocop.org/rubocop/usage/lsp.html).\n\n## Documentation\n\nYou can read a lot more about RuboCop in its [official docs](https://docs.rubocop.org).\n\n## Compatibility\n\nRuboCop officially supports the following runtime Ruby implementations:\n\n* MRI 2.7+\n* JRuby 9.4+\n\nTargets Ruby 2.0+ code analysis.\n\nSee the [compatibility documentation](https://docs.rubocop.org/rubocop/compatibility.html) for further details.\n\n## Readme Badge\n\nIf you use RuboCop in your project, you can include one of these badges in your readme to let people know that your code is written following the community Ruby Style Guide.\n\n[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)\n\n[![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)\n\n\nHere are the Markdown snippets for the two badges:\n\n``` markdown\n[![Ruby Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop)\n\n[![Ruby Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rubystyle.guide)\n```\n\n## Team\n\nHere's a list of RuboCop's core developers:\n\n* [Bozhidar Batsov](https://github.com/bbatsov) (author \u0026 head maintainer)\n* [Jonas Arvidsson](https://github.com/jonas054)\n* [Yuji Nakayama](https://github.com/yujinakayama) (retired)\n* [Evgeni Dzhelyov](https://github.com/edzhelyov) (retired)\n* [Ted Johansson](https://github.com/drenmi)\n* [Masataka Kuwabara](https://github.com/pocke)\n* [Koichi Ito](https://github.com/koic)\n* [Maxim Krizhanovski](https://github.com/darhazer)\n* [Benjamin Quorning](https://github.com/bquorning)\n* [Marc-André Lafortune](https://github.com/marcandre)\n* [Daniel Vandersluis](https://github.com/dvandersluis)\n\nSee the [team page](https://docs.rubocop.org/rubocop/about/team.html) for more details.\n\n## Logo\n\nRuboCop's logo was created by [Dimiter Petrov](https://www.chadomoto.com/). You can find the logo in various\nformats [here](https://github.com/rubocop/rubocop/tree/master/logo).\n\nThe logo is licensed under a\n[Creative Commons Attribution-NonCommercial 4.0 International License](https://creativecommons.org/licenses/by-nc/4.0/deed.en_GB).\n\n## Contributors\n\nHere's a [list](https://github.com/rubocop/rubocop/graphs/contributors) of\nall the people who have contributed to the development of RuboCop.\n\nI'm extremely grateful to each and every one of them!\n\nIf you'd like to contribute to RuboCop, please take the time to go\nthrough our short\n[contribution guidelines](CONTRIBUTING.md).\n\nConverting more of the Ruby Style Guide into RuboCop cops is our top\npriority right now. Writing a new cop is a great way to dive into RuboCop!\n\nOf course, bug reports and suggestions for improvements are always\nwelcome. GitHub pull requests are even better! :-)\n\n## Funding\n\nWhile RuboCop is free software and will always be, the project would benefit immensely from some funding.\nRaising a monthly budget of a couple of thousand dollars would make it possible to pay people to work on\ncertain complex features, fund other development related stuff (e.g. hardware, conference trips) and so on.\nRaising a monthly budget of over $5000 would open the possibility of someone working full-time on the project\nwhich would speed up the pace of development significantly.\n\nWe welcome both individual and corporate sponsors! We also offer a\nwide array of funding channels to account for your preferences\n(although\ncurrently [Open Collective](https://opencollective.com/rubocop) is our\npreferred funding platform).\n\n**If you're working in a company that's making significant use of RuboCop we'd appreciate it if you suggest to your company\nto become a RuboCop sponsor.**\n\nYou can support the development of RuboCop via\n[GitHub Sponsors](https://github.com/sponsors/bbatsov),\n[Patreon](https://www.patreon.com/bbatsov),\n[PayPal](https://paypal.me/bbatsov),\n[Open Collective](https://opencollective.com/rubocop)\nand [Tidelift](https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop\u0026utm_medium=referral\u0026utm_campaign=readme)\n.\n\n**Note:** If doing a sponsorship in the form of donation is problematic for your company from an accounting standpoint, we'd recommend\nthe use of Tidelift, where you can get a support-like subscription instead.\n\n### Open Collective for Individuals\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/rubocop#backer)]\n\n\u003ca href=\"https://opencollective.com/rubocop/individual/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/individual/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/individual/29/avatar.svg\"\u003e\u003c/a\u003e\n\n### Open Collective for Organizations\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/rubocop#sponsor)]\n\n\u003ca href=\"https://opencollective.com/rubocop/organization/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/9/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/10/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/10/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/11/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/11/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/12/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/12/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/13/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/13/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/14/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/14/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/15/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/15/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/16/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/16/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/17/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/17/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/18/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/18/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/19/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/19/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/20/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/20/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/21/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/21/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/22/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/22/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/23/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/23/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/24/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/24/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/25/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/25/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/26/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/26/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/27/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/27/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/28/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/28/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/rubocop/organization/29/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/rubocop/organization/29/avatar.svg\"\u003e\u003c/a\u003e\n\n## Release Notes\n\nRuboCop's release notes are available [here](https://github.com/rubocop/rubocop/releases).\n\n## Copyright\n\nCopyright (c) 2012-2025 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for\nfurther details.\n","funding_links":["https://github.com/sponsors/bbatsov","https://patreon.com/bbatsov","https://opencollective.com/rubocop","https://tidelift.com/funding/github/rubygems/rubocop","https://www.paypal.me/bbatsov","https://www.patreon.com/bbatsov","https://tidelift.com/badges/package/rubygems/rubocop","https://tidelift.com/subscription/pkg/rubygems-rubocop?utm_source=rubygems-rubocop\u0026utm_medium=referral\u0026utm_campaign=readme","https://paypal.me/bbatsov","https://opencollective.com/rubocop/individual/0/website","https://opencollective.com/rubocop/individual/1/website","https://opencollective.com/rubocop/individual/2/website","https://opencollective.com/rubocop/individual/3/website","https://opencollective.com/rubocop/individual/4/website","https://opencollective.com/rubocop/individual/5/website","https://opencollective.com/rubocop/individual/6/website","https://opencollective.com/rubocop/individual/7/website","https://opencollective.com/rubocop/individual/8/website","https://opencollective.com/rubocop/individual/9/website","https://opencollective.com/rubocop/individual/10/website","https://opencollective.com/rubocop/individual/11/website","https://opencollective.com/rubocop/individual/12/website","https://opencollective.com/rubocop/individual/13/website","https://opencollective.com/rubocop/individual/14/website","https://opencollective.com/rubocop/individual/15/website","https://opencollective.com/rubocop/individual/16/website","https://opencollective.com/rubocop/individual/17/website","https://opencollective.com/rubocop/individual/18/website","https://opencollective.com/rubocop/individual/19/website","https://opencollective.com/rubocop/individual/20/website","https://opencollective.com/rubocop/individual/21/website","https://opencollective.com/rubocop/individual/22/website","https://opencollective.com/rubocop/individual/23/website","https://opencollective.com/rubocop/individual/24/website","https://opencollective.com/rubocop/individual/25/website","https://opencollective.com/rubocop/individual/26/website","https://opencollective.com/rubocop/individual/27/website","https://opencollective.com/rubocop/individual/28/website","https://opencollective.com/rubocop/individual/29/website","https://opencollective.com/rubocop/organization/0/website","https://opencollective.com/rubocop/organization/1/website","https://opencollective.com/rubocop/organization/2/website","https://opencollective.com/rubocop/organization/3/website","https://opencollective.com/rubocop/organization/4/website","https://opencollective.com/rubocop/organization/5/website","https://opencollective.com/rubocop/organization/6/website","https://opencollective.com/rubocop/organization/7/website","https://opencollective.com/rubocop/organization/8/website","https://opencollective.com/rubocop/organization/9/website","https://opencollective.com/rubocop/organization/10/website","https://opencollective.com/rubocop/organization/11/website","https://opencollective.com/rubocop/organization/12/website","https://opencollective.com/rubocop/organization/13/website","https://opencollective.com/rubocop/organization/14/website","https://opencollective.com/rubocop/organization/15/website","https://opencollective.com/rubocop/organization/16/website","https://opencollective.com/rubocop/organization/17/website","https://opencollective.com/rubocop/organization/18/website","https://opencollective.com/rubocop/organization/19/website","https://opencollective.com/rubocop/organization/20/website","https://opencollective.com/rubocop/organization/21/website","https://opencollective.com/rubocop/organization/22/website","https://opencollective.com/rubocop/organization/23/website","https://opencollective.com/rubocop/organization/24/website","https://opencollective.com/rubocop/organization/25/website","https://opencollective.com/rubocop/organization/26/website","https://opencollective.com/rubocop/organization/27/website","https://opencollective.com/rubocop/organization/28/website","https://opencollective.com/rubocop/organization/29/website"],"categories":["Code Analysis and Metrics","Code Analysis and Linter","Coding Style","Code Quality","代码风格","Code Style","Tools","Linters","Ruby: [`ruby-lang.org`](https://www.ruby-lang.org)","Ruby Linter / Code Checker / Static Code Analyzer"],"sub_categories":["Code Metrics","Omniauth","Projects","Code quality analysis","Ruby","Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbatsov%2Frubocop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbatsov%2Frubocop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbatsov%2Frubocop/lists"}