Skip to content
This repository was archived by the owner on Mar 23, 2024. It is now read-only.

Creating a New Rule

Henry Zhu edited this page Oct 6, 2015 · 3 revisions

This is a new contributors guide to writing new rules and submitting them as contributions to JSCS:

Feel free to submit a work in progress PR and ask for feedback or help with ASTs or our APIs. It can be difficult when first learning about ASTs but it picks up quickly!

  • lib/rules has rules with hyphen separated file names. For example: disallow-anonymous-functions.js. Each rule is accompanied by JS doc style documentation at the beginning which is used on the website, e.g. http://jscs.info/rule/disallowAnonymousFunctions.
  • test/specs/rules contains tests for each rule, one per file.
  • JSCS uses mocha to run its tests.
  • To test out your new rule, type npm test and make sure there are no errors with the tests you wrote (this runs jshint/jscs as well as unit tests).
    • You can also run a specific subset of rules with -g, e.g. mocha -g "disallow-anonymous-functions" or mocha -g "#1831"

Definitely check out the existing rules for conventions/help or look for and older PR that starts with New Rule: newRuleHere. Using a tool like http://astexplorer.net/ is recommended.

  • Make a rule implementation like lib/rules/awesome-new-rule.js.
  • Register the rule in the registerDefaultRules method of StringChecker (lib/string-checker.js).
    • this.registerRule(require('../rules/awesome-new-rule'));
  • Add your rule's tests like test/specs/rules/awesome-new-rule.js
  • Add your rule to a group in grouping.json (If you don't know just add it to the last group).
Clone this wiki locally