cstyle-based JavaScript style checker
Switch branches/tags
Nothing to show
Pull request Compare This branch is 24 commits behind davepacheco:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.




jsstyle is a style checker for JavaScript coding style. This tool is derived from the cstyle tool used to check for the style used in the Solaris kernel, sometimes known as "Bill Joy Normal Form". This tool is a little bit configurable. However it strives to enforces a single coding style based on that cstyle. See "Configuration Options" below.

The original cstyle tool can be found here: http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/tools/scripts/cstyle.pl

The document describing C Style is available here: http://www.cis.upenn.edu/~lee/06cse480/data/cstyle.ms.pdf

Examples of conditions checked by this tool include:

  • Strings must be quoted with single quotes.
  • Blocks must be indented with tabs, not spaces.
  • Continuation lines must be indented with 4 spaces.
  • Keywords (for, if, function, etc.) must be followed with a space.
  • One line cannot contain multiple keywords.
  • Relational operators must be surrounded with spaces.
  • There must be no spaces between tabs, nor tabs between spaces.
  • Lines must not end with whitespace.
  • Multi-line block comments must start and end with a blank line.
  • Return expressions must be parenthesized.


No known bugs. No new features planned.


jsstyle [OPTIONS] file1.js [file2.js ...]

Configuration Options

Configuration options may be specified in a file (one option per line) with the "-f PATH" switch, or on the command line with the "-o OPTION1,OPTION2" switch.

As stated about, jsstyle is opinionated and intends to stay that way. That said, this author was arm twisted under duress to allow the following configurability.

doxygen                 Allow doxygen-style block comments `/** /*!`.
splint                  Allow splint-style lint comments `/*@ ... @*/`.
                        This is legacy. Does anyone use this?
indent=<NUM|tab>        An integer number of spaces for indentation, or
                        'tab' for tab indentation (the default).
literal-string-quote    'single' (the default) or 'double'. Specifies
                        the preferred quote character for literal strings.
unparenthesized-return  Boolean option, set to 0 to disable the
                        "unparenthesized return expression" check.
                        Boolean option, set to 0 to disable the
                        "missing blank after start comment" check.