{"id":28727043,"url":"https://github.com/nulogy/nucop","last_synced_at":"2026-03-17T20:04:57.519Z","repository":{"id":40687552,"uuid":"186173687","full_name":"nulogy/nucop","owner":"nulogy","description":"Nulogy's implementation of RuboCop","archived":false,"fork":false,"pushed_at":"2025-07-21T20:35:39.000Z","size":110,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-12-04T13:45:28.640Z","etag":null,"topics":["rubocop","rubocop-rails","rubocop-rspec","ruby"],"latest_commit_sha":null,"homepage":null,"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/nulogy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"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}},"created_at":"2019-05-11T19:28:41.000Z","updated_at":"2025-07-21T20:35:43.000Z","dependencies_parsed_at":"2025-06-15T13:11:13.245Z","dependency_job_id":"699758ea-22be-4515-8007-5615e901d44c","html_url":"https://github.com/nulogy/nucop","commit_stats":{"total_commits":68,"total_committers":3,"mean_commits":"22.666666666666668","dds":0.5,"last_synced_commit":"05461c380572c06e501d6e6c74579ca2f804992b"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nulogy/nucop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nulogy%2Fnucop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nulogy%2Fnucop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nulogy%2Fnucop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nulogy%2Fnucop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nulogy","download_url":"https://codeload.github.com/nulogy/nucop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nulogy%2Fnucop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30630040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["rubocop","rubocop-rails","rubocop-rspec","ruby"],"created_at":"2025-06-15T13:11:05.406Z","updated_at":"2026-03-17T20:04:57.514Z","avatar_url":"https://github.com/nulogy.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nucop\n\nThis gem contains custom cops and additional tooling for Nulogy's implementation of [RuboCop](https://github.com/rubocop-hq/rubocop).\n\nThis functionality is executed by the `bin/nucop` executable. If you installed the gem, it will be added to your path.\n\n## Purpose\n\nWhen integrating RuboCop into large existing project, it is likely that it will have an overwhelming number of offenses.\nTo aid adoption, RuboCop can generate a `.rubocop_todo.yml` file to exclude existing violations.\n\nThis presents two problems:\n\n* It is harder for developers to fix existing problems, since TODO violations are ignored\n* Cops with too many violations are disabled, so new violations can be introduced into the codebase\n\nEditors can help with the former. However, `nucop` provides a couple tools to help speed adoption:\n\n1. Enforced cops\n\nThis is a new list of cops and/or departments that MUST not have violations.\n\nThis is useful in CI if you do not want developers to add new `Layout/` violations, etc.\n\nAlso, if `nucop regen_backlog` is used to regenerate the TODO file, any cops that had TODO violations,\nbut no longer have violations are automatically added to enforced cops list.\n\n2. `nucop modified_lines`\n\nThis command will print ALL RuboCop violations (i.e. including TODO violations) for all code lines changes since some git SHA.\n\nThis can be useful for local development, to increases visibility of existing violations during development cycles, but does\nnot hold up code in CI.\n\nFinally, several custom cops are included, which may be application/framework/gem specific.\n\n## CLI Commands\n\nThe [nucop CLI](lib/nucop/cli.rb) provides the following commands:\n\n| Command              | Description                                                                                              |\n|----------------------|----------------------------------------------------------------------------------------------------------|\n| diff_enforced        | run RuboCop on the current diff using only the enforced cops                                             |\n| diff_enforced_github | run RuboCop on the current diff using only the enforced cops (uses GitHub to determine the current diff) |\n| diff                 | run RuboCop on the current diff                                                                          |\n| diff_github          | run RuboCop on the current diff (uses GitHub to determine the current diff)                              |                                                                          |\n| rubocop              | run RuboCop on files provided (without backlog by default)                                               |\n| regen_backlog        | update the RuboCop backlog, updating enforced cops list                                                  |\n| update_enforced      | update the enforced cops list with file with cops that no longer have violations                         |\n| modified_lines       | display RuboCop violations for ONLY modified lines                                                       |\n| ready_for_promotion  | display the next n cops with the fewest violations                                                       |\n\n## Requirements\n\nBeyond a working Ruby installation and what is specified in the gemspec, we make some assumptions about your environment:\n\n* [git](https://git-scm.com/) for SCM\n* `grep`\n\n## Configuration\n\n`nucop` can be configured by the YAML file `.nucop.yml`.\n\nSee the example config file `.nucop.yml.example`\n\n| Option                   | Description                                                                                                                         | Default               |\n|--------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------|\n| rubocop_todo_file        | A generated file, containing the RuboCop TODO violations (i.e. RuboCop backlog)                                                     | .rubocop_todo.yml     |\n| diffignore_file          | A file of paths or files that removed. Must be passable to `grep -f`.                                                               | .nucop_diffignore     |\n\n## TODO\n\n* Update README\n  * Describe features\n  * Document commands\n* Undocumented option `junit_report` in `rubocop` command\n* Introduce `RubocopCommandBuilder`\n* Add tests!\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnulogy%2Fnucop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnulogy%2Fnucop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnulogy%2Fnucop/lists"}