{"id":16965152,"url":"https://github.com/gregswindle/eslint-plugin-crc","last_synced_at":"2026-03-07T21:32:20.825Z","repository":{"id":46940990,"uuid":"83913414","full_name":"gregswindle/eslint-plugin-crc","owner":"gregswindle","description":"Analyze, model, and refactor JavaScript codebases with auto-generated Class-Responsibility-Collaborator models.","archived":false,"fork":false,"pushed_at":"2026-02-01T09:33:26.000Z","size":3165,"stargazers_count":6,"open_issues_count":51,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-01T19:51:58.674Z","etag":null,"topics":["ast","cli","code-analysis","crc","crc-model","eslint","javascript","javascript-tools","refactor","refactor-javascript-codebases","refactoring","refactoring-tools","reports","responsibility-collaborator","uml"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/gregswindle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/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,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-03-04T17:59:00.000Z","updated_at":"2024-12-28T19:35:34.000Z","dependencies_parsed_at":"2023-11-27T15:27:34.921Z","dependency_job_id":"64049bb1-e9c7-46e9-8eb2-594818055516","html_url":"https://github.com/gregswindle/eslint-plugin-crc","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/gregswindle/eslint-plugin-crc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregswindle%2Feslint-plugin-crc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregswindle%2Feslint-plugin-crc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregswindle%2Feslint-plugin-crc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregswindle%2Feslint-plugin-crc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregswindle","download_url":"https://codeload.github.com/gregswindle/eslint-plugin-crc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregswindle%2Feslint-plugin-crc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30231634,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T19:01:10.287Z","status":"ssl_error","status_checked_at":"2026-03-07T18:59:58.103Z","response_time":53,"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":["ast","cli","code-analysis","crc","crc-model","eslint","javascript","javascript-tools","refactor","refactor-javascript-codebases","refactoring","refactoring-tools","reports","responsibility-collaborator","uml"],"created_at":"2024-10-13T23:45:09.872Z","updated_at":"2026-03-07T21:32:20.803Z","avatar_url":"https://github.com/gregswindle.png","language":"JavaScript","readme":"# `eslint-plugin-crc`\n\n\u003e Analyze, model, and refactor JavaScript codebases with auto-generated Class-Responsibility-Collaborator models.\n\n[![License][license-image]][license-url]\n[![FOSSA Status][fossa-image]][fossa-url]\n[![NSP Status][nsp-image]][nsp-url]\n[![Dependencies][daviddm-image]][daviddm-url]\n[![Dependencies][daviddm-dev-image]][daviddm-dev-url]\u003cbr\u003e\n[![Travis branch][travis-image]][travis-url]\n[![AppVeyor Windows build status][appveyor-image]][appveyor-url]\n[![Coveralls coverage][coveralls-image]][coveralls-url]\n[![Codacy Badge][codacy-image]][codacy-url]\n[![Quality Gate][sonar-quality-gate-image]][sonar-quality-gate-url]\n[![PRs Welcome][makeapullrequest-image]][makeapullrequest-url]\n\n## Table of contents\n\n\u003c!-- ⛔️ AUTO-GENERATED-CONTENT:START (TOC:excludeText=Table of contents) --\u003e\n- [1. Refactoring with CRC models](#1-refactoring-with-crc-models)\n- [2. Installation](#2-installation)\n- [3. Configuration](#3-configuration)\n- [4. Usage](#4-usage)\n- [5. Anatomy of a CRC model](#5-anatomy-of-a-crc-model)\n- [6. Benefits](#6-benefits)\n  * [6.1. Simplicity](#61-simplicity)\n  * [6.2. Behavior-driven development](#62-behavior-driven-development)\n- [7. Contributing](#7-contributing)\n- [8. Version](#8-version)\n- [9. License](#9-license)\n- [10. References](#10-references)\n\u003c!-- ⛔️ AUTO-GENERATED-CONTENT:END --\u003e\n\n## 1. Refactoring with CRC models\n\n\u003e ![Citation][icon-quote-left-image] Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.\n\u003e\n\u003e Its heart is a series of small behavior preserving transformations. Each transformation (called a “refactoring”) does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it’s less likely to go wrong. The system is kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.\u003csup\u003e\u003ca href=\"#ref-refactoring-definition\"\u003e[1]\u003c/a\u003e\u003c/sup\u003e\n\nCRC Models can help you pinpoint where problems might be, and reveal potential improvements to your design.\n\n---\n\n**Example:** two prototypes (classes) called Polygon and Square:\n\n\u003c!-- crc-model-template:html,markdown --\u003e\n\n\u003ctable width=\"100%\"\u003e\n \u003cthead\u003e\n   \u003ctr valign=\"top\" align=\"left\"\u003e\n     \u003cth colspan=\"2\"\u003e\n       \u003ch3\u003e\n         \u003ctt\u003e\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes\"\u003eclass\u003c/a\u003e\u003c/tt\u003e\n           Polygon\n           \u003ctt\u003eextends\n           \u003ca rel=\"noopener\" href=\"https://is.gd/ZZBLcn\" target=\"mdn\"\u003eObject\u003c/a\u003e\u003c/tt\u003e\n      \u003c/h3\u003e\n      \u003cblockquote\u003e\n\n      \u003c/blockquote\u003e\n      \u003c/th\u003e\n\n   \u003c/tr\u003e\n   \u003ctr valign=\"top\" align=\"left\"\u003e\n     \u003cth\u003eResponsibilities\u003c/th\u003e\n     \u003cth\u003eCollaborators\u003c/th\u003e\n   \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctfoot valign=\"top\" align=\"left\"\u003e\n   \u003ctr valign=\"top\" align=\"left\" width=\"100%\"\u003e\n     \u003ctd bgcolor=\"#fcfcfc\" colspan=\"2\"\u003e\n       \u003cdetails\u003e\n         \u003csummary\u003e\u003cimg src=\"docs/img/icons8/icon-javascript-filled-25.png\" alt=\"Select to toggle\" align=\"top\"\u003e Details...\u003c/summary\u003e\n           \u003cdl\u003e\n           \u003cdt\u003e\u003cstrong\u003eSource code\u003c/strong\u003e\u003c/dt\u003e\n           \u003cdd\u003e\u003cblockquote\u003e\n\n```js\nclass Polygon {\n  constructor(height, width) {\n    this.height = height;\n    this.width = width;\n    this.name = \"Polygon\";\n  }\n}\n\nmodule.exports = Polygon;\n```\n\n\u003c/blockquote\u003e\u003c/dd\u003e\n           \u003cdt\u003e\u003cstrong\u003eReferences\u003c/strong\u003e\u003c/dt\u003e\n           \u003cdd\u003e\n             \u003cblockquote\u003e\u003cstrong\u003ePolygon is referenced \u003cem\u003en\u003c/em\u003e times in \u003cem\u003en\u003csub\u003e1\u003c/sub\u003e\u003c/em\u003e files.\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n           \u003col\u003e\n             \u003cli\u003eTODO: reference one.\u003c/li\u003e\n             \u003cli\u003eTODO: reference two.\u003c/li\u003e\n             \u003cli\u003eTODO: reference one.\u003c/li\u003e\n          \u003c/ol\u003e\u003c/blockquote\u003e\u003c/dd\u003e\n           \u003c/dl\u003e\n       \u003c/details\u003e\n     \u003c/td\u003e\n   \u003c/tr\u003e\n \u003c/tfoot\u003e\n \u003ctbody\u003e\n   \u003ctr valign=\"top\" align=\"left\"\u003e\n   \u003ctd width=\"50%\"\u003e\n     \u003col\u003e Undetermined. \u003c/ol\u003e\n   \u003c/td\u003e\n   \u003ctd width=\"50%\"\u003e\n     \u003col\u003e None found. \u003c/ol\u003e\n   \u003c/td\u003e\n   \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!--/crc-model-template:html,markdown --\u003e\n\n\u003c!-- crc-model-template:html,markdown --\u003e\n\n\u003ctable width=\"100%\"\u003e\n  \u003cthead\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003cth colspan=\"2\"\u003e\n        \u003ch3\u003e\n          \u003ctt\u003e\u003ca href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes\"\u003eclass\u003c/a\u003e\u003c/tt\u003e\n            \u003cstrong\u003eSquare\u003c/strong\u003e\n            \u003ctt\u003eextends\n            \u003ca href=\"Polygon\"\u003ePolygon\u003c/a\u003e\u003c/tt\u003e\n       \u003c/h3\u003e\n       \u003cblockquote\u003e\n         A plane figure with four equal straight sides and four right angles.\n       \u003c/blockquote\u003e\n       \u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003cth\u003eResponsibilities\u003c/th\u003e\n      \u003cth\u003eCollaborators\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctfoot valign=\"top\" align=\"left\"\u003e\n    \u003ctr valign=\"top\" align=\"left\" width=\"100%\"\u003e\n      \u003ctd bgcolor=\"#fcfcfc\" colspan=\"2\"\u003e\n        \u003cdetails\u003e\n          \u003csummary\u003e\u003cimg src=\"docs/img/icons8/icon-javascript-filled-25.png\" alt=\"Select to toggle\" align=\"top\"\u003e Details...\u003c/summary\u003e\n            \u003cdl\u003e\n            \u003cdt\u003e\u003cstrong\u003eExample\u003c/dt\u003e\n            \u003cdd\u003e\u003cblockquote\u003e\n\n```js\nlet shape = new Square(5);\nconsole.log(`${shape.name} has\n  a height ${shape.height} and\n  a width of ${shape.width},\n  for an area of ${shape.area}.`);\n// =\u003e\n// Square has\n//  a height 5 and\n//  a width of 5,\n//  for an area of 25.\n```\n\n\u003c/blockquote\u003e\n\u003c/dd\u003e\n            \u003cdt\u003e\u003cstrong\u003eSource code\u003c/strong\u003e\u003c/dt\u003e\n            \u003cdd\u003e\u003cblockquote\u003e\n\n```js\n/**\n * A plane figure with four equal straight sides and four right\n * angles.\n *\n * @property {number} area - The extent of a two-dimensional figure\n * or shape, or planar lamina, in the plane.\n * @property {string=Square} name - The geometric `object`'s name.\n * @example\n * let shape = new Square(5)\n * console.log(`${shape.name} has\n *   a height ${shape.height} and\n *   a width of ${shape.width},\n *   for an area of ${shape.area}.`)\n * @extends Polygon\n */\nclass Square extends Polygon {\n  /**\n   * Call the parent class's constructor with lengths\n   * provided for the Polygon's width and height.\n   * @param {!number=0} length - The length of all sides.\n   * @constructor\n   */\n  constructor(length = 0) {\n    super(length, length);\n    this.name = \"Square\";\n  }\n\n  get area() {\n    return this.height * this.width;\n  }\n\n  set area(value) {\n    this.height = this.width = Math.sqrt(value);\n  }\n}\n\nmodule.exports = Square;\n```\n\n\u003c/blockquote\u003e\u003c/dd\u003e\n            \u003cdt\u003e\u003cstrong\u003eReferences\u003c/strong\u003e\u003c/dt\u003e\n            \u003cdd\u003e\n              \u003cblockquote\u003e\u003cstrong\u003eSquare is referenced \u003cem\u003en\u003c/em\u003e times in \u003cem\u003en\u003csub\u003e1\u003c/sub\u003e\u003c/em\u003e files.\u003c/strong\u003e\u003cbr\u003e\u003cbr\u003e\n            \u003col\u003e\n              \u003cli\u003eTODO: reference one.\u003c/li\u003e\n              \u003cli\u003eTODO: reference two.\u003c/li\u003e\n              \u003cli\u003eTODO: reference one.\u003c/li\u003e\n           \u003c/ol\u003e\u003c/blockquote\u003e\u003c/dd\u003e\n            \u003c/dl\u003e\n        \u003c/details\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tfoot\u003e\n  \u003ctbody\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003ctd width=\"50%\"\u003e\n        \u003col\u003e\n            \u003cli\u003eGet the extent of a two-dimensional figure\n            or shape, or planar lamina, in the plane.\u003c/li\u003e\n            \u003cli\u003eSet the extent of a two-dimensional figure\n            or shape, or planar lamina, in the plane.\u003c/li\u003e\u003c/ol\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"50%\"\u003e\n        \u003col\u003e\n          \u003cli\u003e\u003ccode\u003e\u003ca rel=\"noopener\" title=\"View documentation for Math.\" href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math\"\u003eMath\u003c/a\u003e [\u003ca title=\"Introduced on line 10, column 20.\" href=\"#\"\u003e10\u003c/a\u003e:\u003ca title=\"Introduced on line 10, column 20.\" href=\"#\"\u003e20\u003c/a\u003e]\u003c/code\u003e\n        \u003c/ol\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!--/crc-model-template:html,markdown --\u003e\n\n## 2. Installation\n\nYou'll first need to install [ESLint](http://eslint.org):\n\n```\n$ npm i eslint --save-dev\n```\n\nNext, install `eslint-plugin-crc`:\n\n```\n$ npm install eslint-plugin-crc --save-dev\n```\n\n**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-crc` globally.\n\n## 3. Configuration\n\nAdd `crc` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:\n\n```json\n{\n  \"plugins\": [\"crc\"]\n}\n```\n\nThen configure the rules you want to use under the rules section.\n\n```json\n{\n  \"rules\": {\n    \"crc/generate-crc\": 2\n  }\n}\n```\n\n## 4. Usage\n\nFor local installations, run:\n\n```bash\n$ ./node_modules/.bin/eslint \\\n  -f './lib/formatters/crc/index.js' tests/fixtures/crc/class-declaration/*.js \\\n  -o reports/crc-model-report.md\n```\n\nIf you installed `eslint-plugin-crc` globally, run:\n\n```bash\n$ eslint \\\n  -f './lib/formatters/crc/index.js' tests/fixtures/crc/class-declaration/*.js \\\n  -o reports/crc-model-report.md\n```\n\n## 5. Anatomy of a CRC model\n\nCRC Models use a simple and scannable template that consist of three simple sections for:\n\n1.  **Name**: what the class (or object) is called in source code.\n2.  **Responsibilities**: the work that the class/object is supposed to perform, and the data it's supposed to maintain.\n3.  **Collaborators**: other objects this class directly invokes in order to do its work.\n\n\u003ctable width=\"100%\"\u003e\n  \u003cthead\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003cth colspan=\"2\"\u003e\u003ccode\u003eClass/Object name\u003c/code\u003e\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003cth\u003eResponsibilities\u003c/th\u003e\n      \u003cth\u003eCollaborators\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr valign=\"top\" align=\"left\"\u003e\n      \u003ctd width=\"50%\"\u003e\n      \u003cp\u003eThe \u003ccode\u003eclass/object\u003c/code\u003e's activities and purpose:\n        \u003col\u003e\n          \u003cli\u003eWhat the class/object does.\n          \u003cli\u003eThe information it maintains.\n        \u003c/ol\u003e\u003c/p\u003e\n      \u003c/td\u003e\n      \u003ctd width=\"50%\"\u003e\n      \u003cp\u003eObjects that this \u003ccode\u003eclass\u003c/code\u003e depends on to:\n        \u003col\u003e\n          \u003cli\u003eAssist \u003ccode\u003eClass name\u003c/code\u003e with its work.\n          \u003cli\u003eProvide info/data that \u003ccode\u003eClass name\u003c/code\u003e needs.\n        \u003c/ol\u003e\u003c/p\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003e ![Use of terms][icon-info-image] Despite the implementation of the `class`, `constructor`, `static`, `extends`, and `super` keywords in ES2015, JavaScript _still_ achieves encapsulation, inheritance, and polymorphism with `prototype` chains. Nevertheless, I use the word `class` to refer to JavaScript objects with `prototype`-based inheritance.\n\n## 6. Benefits\n\n### 6.1. Simplicity\n\nCRC Models express how classes (i.e., prototyped JavaScript objects) behave and interact in order to fulfill their specified responsibilities.\n\n\u003e ![Citation][icon-quote-left-image] A Class Responsibility Collaborator (CRC) model...is...divided into three sections.... A class represents a collection of similar objects, a responsibility is something that a class knows or does, and a collaborator is another class that a class interacts with to fulfill its responsibilities.\u003csup\u003e\u003ca href=\"#ref-crc-definition\"\u003e[2]\u003c/a\u003e\u003c/sup\u003e\n\nCRC models are simple to read, write, and update. CRC models focus on the **purpose** of classes instead of their **mechanics**. Because of their simplicity, CRC models are useful for determining why software might be difficult to extend or change.\n\n### 6.2. Behavior-driven development\n\nBehavior-driven development (BDD) seeks to incorporate **_design_** as a routine exercise during product delivery. BDD prescribes iterative activities intended to redefine and contextualize design, testing, and programming as unified activities that share common specifications expressing a product's behavior instead of its technical implementation. BDD extends TDD's focus on refactoring to how classes behave with each other. The very structure of Class-Responsibility-Collaboration models, with their emphasis on the appropriate distribution of responsibilities among classes (and therefore how those classes collaborate) reflects BDD's emphasis on behavior instead of technical assertions.\n\n## 7. Contributing\n\n\u003e [![PRs Welcome][makeapullrequest-image]][makeapullrequest-url] We welcome contributors and pull requests.\n\nCheck out the guidelines for\n\n* [Contributing to `eslint-plugin-crc`](https://github.com/gregswindle/eslint-plugin-crc/blob/master/.github/CONTRIBUTING.md) and our\n* [Contributor Covenant Code of Conduct][code-of-conduct-url].\n\nContributions are stories with a beginning, a middle, and an end, all told through issues, comments, commit logs, and pull requests.\n\n* [Peruse open issues][issues-url] or\n* [Open a new pull request (PR)][pr-url].\n\n## 8. Version\n\n`eslint-plugin-crc`'s latest version is \u003c!-- semver --\u003e [`v0.2.0`][changelog-url] \u003c!-- semverend --\u003e . Please read the [CHANGELOG][changelog-url] for details.\n\n## 9. License\n\n[MIT][license-url] © [Greg Swindle][author-url]\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fgregswindle%2Feslint-plugin-crc.svg?type=large)](https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fgregswindle%2Feslint-plugin-crc?ref=badge_large)\n\n## 10. References\n\n\u003ca name=\"ref-refactoring-definition\"\u003e\u003c/a\u003e\n**[1]** M. Fowler, \"Refactoring\", Refactoring.com, 2017. [Online]. Available: https://refactoring.com/. [Accessed: 22- Nov- 2017]\n\n\u003ca name=\"ref-crc-definition\"\u003e\u003c/a\u003e\n**[2]** S. Ambler, \"Class Responsibility Collaborator (CRC) Models: An Agile Introduction\", Agilemodeling.com, 2017. [Online]. Available: http://agilemodeling.com/artifacts/crcModel.htm. [Accessed: 22- Nov- 2017]\n\n---\n\n[![License][license-image]][license-url] [![Readme Score][readme-score-img]][readme-score-url] [![Greenkeeper][greenkeeper-img]][greenkeeper-url]\n\n[api-docs-url]: https://github.com/gregswindle/eslint-plugin-crc/docs/API.md\n[apigee-edge-js-url]: http://docs.apigee.com/api-services/reference/javascript-object-model\n[appveyor-image]: https://img.shields.io/appveyor/ci/gregswindle/eslint-plugin-crc.svg?style=flat-square\u0026logo=appveyor\n[appveyor-url]: https://ci.appveyor.com/project/gregswindle/eslint-plugin-crc\n[author-url]: https://github.com/gregswindle\n[changelog-url]: https://github.com/gregswindle/eslint-plugin-crc/blob/master/CHANGELOG.md\n[codacy-coverage-image]: https://api.codacy.com/project/badge/Coverage/fa4ade3f68a04b9cad26165a59ceb88e\n[codacy-coverage-url]: https://www.codacy.com/app/greg_7/eslint-plugin-crc?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=gregswindle/eslint-plugin-crc\u0026utm_campaign=Badge_Coverage\n[codacy-image]: https://img.shields.io/codacy/grade/685cb41fec6746038e6deaa1bfddb71a.svg?style=flat-square\n[codacy-url]: https://www.codacy.com/app/greg_7/eslint-plugin-crc?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=gregswindle/eslint-plugin-crc\u0026utm_campaign=Badge_Grade\n[code-of-conduct-url]: https://github.com/gregswindle/eslint-plugin-crc/blob/master/.github/CODE_OF_CONDUCT.md\n[complexity-report-url]: https://github.com/escomplex/complexity-report\n[coveralls-image]: https://img.shields.io/coveralls/github/gregswindle/eslint-plugin-crc.svg?style=flat-square\n[coveralls-url]: https://coveralls.io/github/gregswindle/eslint-plugin-crc?branch=master\n[daviddm-dev-image]: https://david-dm.org/gregswindle/eslint-plugin-crc/dev-status.svg?style=flat-square\n[daviddm-dev-url]: https://david-dm.org/gregswindle/eslint-plugin-crc?type=dev\n[daviddm-image]: https://david-dm.org/gregswindle/eslint-plugin-crc.svg?theme=shields.io\u0026style=flat-square\n[daviddm-url]: https://david-dm.org/gregswindle/eslint-plugin-crc\n[editorconfig-url]: http://editorconfig.org/\n[eslint-github-url]: https://github.com/eslint/eslint\n[fossa-image]: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fgregswindle%2Feslint-plugin-crc.svg?type=shield\u0026style=flat-square\n[fossa-url]: https://app.fossa.io/projects/git%2Bgithub.com%2Fgregswindle%2Feslint-plugin-crc?ref=badge_shield\n[greenkeeper-img]: https://badges.greenkeeper.io/gregswindle/eslint-plugin-crc.svg?style=flat-square\n[greenkeeper-url]: https://greenkeeper.io/\n[issues-url]: https://github.com/gregswindle/eslint-plugin-crc/issues\n[icon-info-image]: docs/img/icons8/icon-info-30.png\n[icon-quote-left-image]: docs/img/icons8/icon-quote-left-25.png\n[jsdoc2md-url]: https://github.com/jsdoc2md/jsdoc-to-markdown\n[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square\n[license-url]: https://github.com/gregswindle/eslint-plugin-crc/blob/master/LICENSE\n[lint-def-url]: https://en.wikipedia.org/wiki/Lint_(software)\n[makeapullrequest-image]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[makeapullrequest-url]: http://makeapullrequest.com\n[npm-image]: https://badge.fury.io/js/eslint-plugin-crc.svg\n[npm-url]: https://npmjs.org/package/eslint-plugin-crc\n[nsp-image]: https://nodesecurity.io/orgs/gregswindle/projects/da7e6d96-620d-4acb-8559-85c06c66921a/badge?style=flat-square\n[nsp-url]: https://nodesecurity.io/orgs/gregswindle/projects/da7e6d96-620d-4acb-8559-85c06c66921a\n[pr-url]: https://github.com/gregswindle/eslint-plugin-crc/pulls\n[readme-score-img]: http://readme-score-api.herokuapp.com/score.svg?url=https://github.com/gregswindle/eslint-plugin-crc\n[readme-score-url]: http://clayallsopp.github.io/readme-score?url=https://github.com/gregswindle/eslint-plugin-crc\n[scoreme-url]: http://clayallsopp.github.io/readme-score/\n[sonar-cognitive-img]: http://sonarcloud.io/api/badges/measure?key=gregswindle-eslint-plugin-crc\u0026metric=cognitive_complexity\n[sonar-cognitive-url]: https://sonarcloud.io/component_measures/metric/cognitive_complexity/list?id=gregswindle-eslint-plugin-crc\n[sonar-complexity-img]: http://sonarcloud.io/api/badges/measure?key=gregswindle-eslint-plugin-crc\u0026metric=function_complexity\n[sonar-complexity-url]: https://sonarcloud.io/component_measures/domain/Complexity?id=gregswindle-eslint-plugin-crc\n[sonar-coverage-img]: http://sonarcloud.io/api/badges/measure?key=gregswindle-eslint-plugin-crc\u0026metric=coverage\n[sonar-coverage-url]: https://sonarcloud.io/component_measures/domain/Coverage?id=gregswindle-eslint-plugin-crc\n[sonar-quality-gate-image]: https://sonarcloud.io/api/badges/gate?key=gregswindle-eslint-plugin-crc\n[sonar-quality-gate-url]: https://sonarcloud.io/dashboard/index/gregswindle-eslint-plugin-crc\n[sonar-tech-debt-img]: https://sonarcloud.io/api/badges/measure?key=gregswindle-eslint-plugin-crc\u0026metric=sqale_debt_ratio\n[sonar-tech-debt-url]: https://sonarcloud.io/component_measures/metric/sqale_index/list?id=gregswindle-eslint-plugin-crc\n[travis-image]: https://img.shields.io/travis/gregswindle/eslint-plugin-crc/master.svg?style=flat-square\n[travis-url]: https://travis-ci.org/gregswindle/eslint-plugin-crc\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregswindle%2Feslint-plugin-crc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregswindle%2Feslint-plugin-crc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregswindle%2Feslint-plugin-crc/lists"}