node-jscs
JSCS — JavaScript Code Style.
jscs
is a code style checker. You can configure jscs
for your project in detail using over 60 validation rules. jQuery preset is also available.
Friendly packages
- Grunt task: https://github.com/gustavohenke/grunt-jscs-checker/
- Gulp task: https://github.com/sindresorhus/gulp-jscs/
- SublimeText 3 Plugin: https://github.com/SublimeLinter/SublimeLinter-jscs/
- Syntastic VIM Plugin: https://github.com/scrooloose/syntastic/.../syntax_checkers/javascript/jscs.vim/
- Brackets Extension: https://github.com/globexdesigns/brackets-jscs
- Web Essentials for Visual Studio 2013: https://github.com/madskristensen/WebEssentials2013/
Installation
jscs
can be installed using npm
:
npm install jscs
To run jscs
, you can use the following command from the project root:
./node_modules/.bin/jscs path[ path[...]]
Configuration
If there is no --config
option specified, jscs
it will consequentially search for jscsConfig
option in package.json
file then for .jscsrc
and .jscs.json
files in the current working directory then in nearest ancestor until it hits the system root.
requireCurlyBraces
Requires curly braces after statements.
Type: Array
Values: Arrow of quoted keywords
JSHint: curly
Example
"requireCurlyBraces": [
"if",
"else",
"for",
"while",
"do",
"try",
"catch",
"case",
"default"
]
Valid
if (x) {
x++;
}
Invalid
if (x) x++;
requireSpaceAfterKeywords
Requires space after keyword.
Type: Array
Values: Array of quoted keywords
Example
"requireSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"return",
"try",
"catch"
]
Valid
return true;
Invalid
if(x) {
x++;
}
disallowSpaceAfterKeywords
Disallows space after keyword.
Type: Array
Values: Array of quoted keywords
Example
"disallowSpaceAfterKeywords": [
"if",
"else",
"for",
"while",
"do",
"switch",
"try",
"catch"
]
Valid
if(x > y) {
y++;
}
requireSpaceBeforeBlockStatements
Requires space before block statements (for loops, control structures).
Type: Boolean
Values: true
Example
"requireSpaceBeforeBlockStatements": true
Valid
if (cond) {
foo();
}
for (var e in elements) {
bar(e);
}
while (cond) {
foo();
}
Invalid
if (cond){
foo();
}
for (var e in elements){
bar(e);
}
while (cond){
foo();
}
disallowSpaceBeforeBlockStatements
Disallows space before block statements (for loops, control structures).
Type: Boolean
Values: true
Example
"disallowSpaceBeforeBlockStatements": true
Valid
if (cond){
foo();
}
for (var e in elements){
bar(e);
}
while (cond){
foo();
}
Invalid
if (cond) {
foo();
}
for (var e in elements) {
bar(e);
}
while (cond) {
foo();
}
requireParenthesesAroundIIFE
Requires parentheses around immediately invoked function expressions.
Type: Boolean
Values: true
JSHint: immed
Example
"requireParenthesesAroundIIFE": true
Valid
var a = (function(){ return 1; })();
var b = (function(){ return 2; }());
var c = (function(){ return 3; }).call(this, arg1);
var d = (function(){ return 3; }.call(this, arg1));
var e = (function(){ return d; }).apply(this, args);
var f = (function(){ return d; }.apply(this, args));
Invalid
var a = function(){ return 1; }();
var c = function(){ return 3; }.call(this, arg1);
var d = function(){ return d; }.apply(this, args);
requireSpacesInFunctionExpression
Requires space before ()
or {}
in function declarations.
Type: Object
Values: beforeOpeningRoundBrace
and beforeOpeningCurlyBrace
as child properties. Child properties must be set to true
.
Example
"requireSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function () {}
function a () {}
Invalid
function() {}
function (){}
disallowSpacesInFunctionExpression
Disallows space before ()
or {}
in function declarations and expressions (both named and anonymous).
Type: Object
Values: "beforeOpeningRoundBrace"
and "beforeOpeningCurlyBrace"
as child properties. Child properties must be set to true
.
Example
"disallowSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function(){}
function a(){}
Invalid
function () {}
function a (){}
requireSpacesInAnonymousFunctionExpression
Requires space before ()
or {}
in anonymous function expressions.
Type: Object
Values: beforeOpeningRoundBrace
and beforeOpeningCurlyBrace
as child properties. Child properties must be set to true
.
Example
"requireSpacesInAnonymousFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function () {}
Invalid
function() {}
function (){}
disallowSpacesInAnonymousFunctionExpression
Disallows space before ()
or {}
in anonymous function expressions.
Type: Object
Values: "beforeOpeningRoundBrace"
and "beforeOpeningCurlyBrace"
as child properties. Child properties must be set to true
.
Example
"disallowSpacesInAnonymousFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function(){}
Invalid
function () {}
function (){}
requireSpacesInNamedFunctionExpression
Requires space before ()
or {}
in named function expressions.
Type: Object
Values: beforeOpeningRoundBrace
and beforeOpeningCurlyBrace
as child properties. Child properties must be set to true
.
Example
"requireSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function a () {}
Invalid
function a() {}
function a(){}
disallowSpacesInNamedFunctionExpression
Disallows space before ()
or {}
in named function expressions.
Type: Object
Values: "beforeOpeningRoundBrace"
and "beforeOpeningCurlyBrace"
as child properties. Child properties must be set to true
.
Example
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function a(){}
Invalid
function a () {}
function a (){}
requireSpacesInFunctionDeclaration
Requires space before ()
or {}
in function declarations.
Type: Object
Values: beforeOpeningRoundBrace
and beforeOpeningCurlyBrace
as child properties. Child properties must be set to true
.
Example
"requireSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function a () {}
Invalid
function a() {}
function a (){}
disallowSpacesInFunctionDeclaration
Disallows space before ()
or {}
in function declarations.
Type: Object
Values: "beforeOpeningRoundBrace"
and "beforeOpeningCurlyBrace"
as child properties. Child properties must be set to true
.
Example
"disallowSpacesInFunctionExpression": {
"beforeOpeningRoundBrace": true,
"beforeOpeningCurlyBrace": true
}
Valid
function a(){}
Invalid
function a () {}
function a (){}
disallowMultipleVarDecl
Disallows multiple var
declaration (except for-loop).
Type: Boolean
Values: true
Example
"disallowMultipleVarDecl": true
Valid
var x = 1;
var y = 2;
for (var i = 0, j = arr.length; i < j; i++) {}
Invalid
var x = 1,
y = 2;
requireMultipleVarDecl
Requires multiple var
declaration.
Type: Boolean
or String
Values: true
or onevar
if requireMultipleVarDecl
defined as a boolean
value, it will report only consecutive vars, if, on the other hand,
value equals to onevar
string, requireMultipleVarDecl
will allow only one var
per function scope.
JSHint: onevar
Example
"requireMultipleVarDecl": true
Valid
var x = 1,
y = 2;
Invalid
var x = 1;
var y = 2;
requireBlocksOnNewline
Requires blocks to begin and end with a newline
Type: Boolean
or Integer
Values: true
validates all non-empty blocks, Integer
specifies a minimum number of statements in the block before validating.
Example
"requireBlocksOnNewline": true
true
Valid for mode if (true) {
doSomething();
}
var abc = function() {};
Invalid
if (true) {doSomething();}
1
Valid for mode if (true) {
doSomething();
doSomethingElse();
}
if (true) { doSomething(); }
var abc = function() {};
Invalid
if (true) { doSomething(); doSomethingElse(); }
requirePaddingNewlinesInBlock
Requires blocks to begin and end with 2 newlines
Type: Boolean
or Integer
Values: true
validates all non-empty blocks, Integer
specifies a minimum number of statements in the block before validating.
Example
"requirePaddingNewlinesInBlock": true
true
Valid for mode if (true) {
doSomething();
}
var abc = function() {};
Invalid
if (true) {doSomething();}
if (true) {
doSomething();
}
1
Valid for mode if (true) {
doSomething();
doSomethingElse();
}
if (true) {
doSomething();
}
if (true) { doSomething(); }
var abc = function() {};
Invalid
if (true) { doSomething(); doSomethingElse(); }
if (true) {
doSomething();
doSomethingElse();
}
disallowPaddingNewlinesInBlock
Disallows blocks from beginning and ending with 2 newlines.
Type: Boolean
Values: true
validates all non-empty blocks.
Example
"disallowPaddingNewlinesInBlock": true
Valid
if (true) {
doSomething();
}
if (true) {doSomething();}
var abc = function() {};
Invalid
if (true) {
doSomething();
}
disallowEmptyBlocks
Disallows empty blocks (except for catch blocks).
Type: Boolean
Values: true
JSHint: noempty
Example
"disallowEmptyBlocks": true
Valid
if ( a == b ) { c = d; }
try { a = b; } catch( e ){}
Invalid
if ( a == b ) { } else { c = d; }
disallowSpacesInsideObjectBrackets
Disallows space after opening object curly brace and before closing.
Type: Boolean
Values: true
Example
"disallowSpacesInsideObjectBrackets": true
Valid
var x = {a: 1};
Invalid
var x = { a: 1 };
disallowSpacesInsideArrayBrackets
Disallows space after opening array square bracket and before closing.
Type: Boolean
Values: true
Example
"disallowSpacesInsideArrayBrackets": true
Valid
var x = [1];
Invalid
var x = [ 1 ];
disallowSpacesInsideParentheses
Disallows space after opening round bracket and before closing.
Type: Boolean
Values: true
Example
"disallowSpacesInsideParentheses": true
Valid
var x = (1 + 2) * 3;
Invalid
var x = ( 1 + 2 ) * 3;
requireSpacesInsideObjectBrackets
Requires space after opening object curly brace and before closing.
Type: String
Values: "all"
for strict mode, "allButNested"
ignores closing brackets in a row.
Example
"requireSpacesInsideObjectBrackets": "all"
"all"
Valid for mode var x = { a: { b: 1 } };
"allButNested"
Valid for mode var x = { a: { b: 1 }};
Invalid
var x = {a: 1};
requireSpacesInsideArrayBrackets
Requires space after opening array square bracket and before closing.
Type: String
Values: "all" for strict mode, "allButNested" ignores closing brackets in a row.
Example
"requireSpacesInsideArrayBrackets": "all"
"all"
Valid for mode var x = [ 1 ];
"allButNested"
Valid for mode var x = [[ 1 ], [ 2 ]];
Invalid
var x = [1];
disallowQuotedKeysInObjects
Disallows quoted keys in object if possible.
Type: String
or Boolean
Values:
true
for strict mode"allButReserved"
allows ES3+ reserved words to remain quoted which is helpful when using this option with JSHint'ses3
flag.
Example
"disallowQuotedKeysInObjects": true
true
Valid for mode var x = { a: { default: 1 } };
"allButReserved"
Valid for mode var x = {a: 1, 'default': 2};
Invalid
var x = {'a': 1};
disallowDanglingUnderscores
Disallows identifiers that start or end in _
, except for some popular exceptions:
_
(underscore.js)__filename
(node.js global)__dirname
(node.js global)
Type: Boolean
Values: true
JSHint: nomen
Example
"disallowDanglingUnderscores": true
Valid
var x = 1;
var y = _.extend;
var z = __dirname;
var w = __filename;
var x_y = 1;
Invalid
var _x = 1;
var x_ = 1;
var x_y_ = 1;
disallowSpaceAfterObjectKeys
Disallows space after object keys.
Type: Boolean
Values: true
Example
"disallowSpaceAfterObjectKeys": true
Valid
var x = {a: 1};
Invalid
var x = {a : 1};
requireSpaceAfterObjectKeys
Requires space after object keys.
Type: Boolean
Values: true
Example
"requireSpaceAfterObjectKeys": true
Valid
var x = {a : 1};
Invalid
var x = {a: 1};
disallowCommaBeforeLineBreak
Disallows commas as last token on a line in lists.
Type: Boolean
Values: true
JSHint: laxcomma
Example
"disallowCommaBeforeLineBreak": true
Valid
var x = {
one: 1
, two: 2
};
var y = { three: 3, four: 4};
Invalid
var x = {
one: 1,
two: 2
};
requireCommaBeforeLineBreak
Requires commas as last token on a line in lists.
Type: Boolean
Values: true
JSHint: laxcomma
Example
"requireCommaBeforeLineBreak": true
Valid
var x = {
one: 1,
two: 2
};
var y = { three: 3, four: 4};
Invalid
var x = {
one: 1
, two: 2
};
requireAlignedObjectValues
Requires proper alignment in object literals.
Type: String
Values:
- "all"
for strict mode,
- "skipWithFunction"
ignores objects if one of the property values is a function expression,
- "skipWithLineBreak"
ignores objects if there are line breaks between properties
Example
"requireAlignedObjectValues": "all"
Valid
var x = {
a : 1,
bcd : 2,
ef : 'str'
};
Invalid
var x = {
a : 1,
bcd : 2,
ef : 'str'
};
requireOperatorBeforeLineBreak
Requires operators to appear before line breaks and not after.
Type: Array
Values: Array of quoted operators
JSHint: laxbreak
Example
"requireOperatorBeforeLineBreak": [
"?",
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!==",
">",
">=",
"<",
"<="
]
Valid
x = y ? 1 : 2;
x = y ?
1 : 2;
Invalid
x = y
? 1 : 2;
disallowLeftStickedOperators
Disallows sticking operators to the left.
Type: Array
Values: Array of quoted operators
Example
"disallowLeftStickedOperators": [
"?",
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!==",
">",
">=",
"<",
"<="
]
Valid
x = y ? 1 : 2;
Invalid
x = y? 1 : 2;
requireRightStickedOperators
Requires sticking operators to the right.
Type: Array
Values: Array of quoted operators
Example
"requireRightStickedOperators": ["!"]
Valid
x = !y;
Invalid
x = ! y;
disallowRightStickedOperators
Disallows sticking operators to the right.
Type: Array
Values: Array of quoted operators
Example
"disallowRightStickedOperators": [
"?",
"+",
"/",
"*",
":",
"=",
"==",
"===",
"!=",
"!==",
">",
">=",
"<",
"<="
]
Valid
x = y + 1;
Invalid
x = y +1;
requireLeftStickedOperators
Requires sticking operators to the left.
Type: Array
Values: Array of quoted operators
Example
"requireLeftStickedOperators": [","]
Valid
x = [1, 2];
Invalid
x = [1 , 2];
disallowSpaceAfterPrefixUnaryOperators
Requires sticking unary operators to the right.
Type: Array
Values: Array of quoted operators
Example
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"]
Valid
x = !y; y = ++z;
Invalid
x = ! y; y = ++ z;
requireSpaceAfterPrefixUnaryOperators
Disallows sticking unary operators to the right.
Type: Array
Values: Array of quoted operators
Example
"requireSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"]
Valid
x = ! y; y = ++ z;
Invalid
x = !y; y = ++z;
disallowSpaceBeforePostfixUnaryOperators
Requires sticking unary operators to the left.
Type: Array
Values: Array of quoted operators
Example
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"]
Valid
x = y++; y = z--;
Invalid
x = y ++; y = z --;
requireSpaceBeforePostfixUnaryOperators
Disallows sticking unary operators to the left.
Type: Array
Values: Array of quoted operators
Example
"requireSpaceBeforePostfixUnaryOperators": ["++", "--"]
Valid
x = y ++; y = z --;
Invalid
x = y++; y = z--;
disallowSpaceBeforeBinaryOperators
Requires sticking binary operators to the left.
Type: Array
Values: Array of quoted operators
Example
"disallowSpaceBeforeBinaryOperators": [
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!=="
]
Valid
x+ y;
Invalid
x + y;
requireSpaceBeforeBinaryOperators
Disallows sticking binary operators to the left.
Type: Array
Values: Array of quoted operators
Example
"requireSpaceBeforeBinaryOperators": [
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!=="
]
Valid
x !== y;
Invalid
x!== y;
disallowSpaceAfterBinaryOperators
Requires sticking binary operators to the right.
Type: Array
Values: Array of quoted operators
Example
"disallowSpaceAfterBinaryOperators": [
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!=="
]
Valid
x +y;
Invalid
x+ y;
requireSpaceAfterBinaryOperators
Disallows sticking binary operators to the right.
Type: Array
Values: Array of quoted operators
Example
"requireSpaceAfterBinaryOperators": [
"+",
"-",
"/",
"*",
"=",
"==",
"===",
"!=",
"!=="
]
Valid
x + y;
Invalid
x +y;
disallowImplicitTypeConversion
Disallows implicit type conversion.
Type: Array
Values: Array of quoted types
Example
"disallowImplicitTypeConversion": ["numeric", "boolean", "binary", "string"]
Valid
x = Boolean(y);
x = Number(y);
x = String(y);
x = s.indexOf('.') !== -1;
Invalid
x = !!y;
x = +y;
x = '' + y;
x = ~s.indexOf('.');
requireCamelCaseOrUpperCaseIdentifiers
Requires identifiers to be camelCased or UPPERCASE_WITH_UNDERSCORES
Type: Boolean
Values: true
JSHint: camelcase
Example
"requireCamelCaseOrUpperCaseIdentifiers": true
Valid
var camelCase = 0;
var CamelCase = 1;
var _camelCase = 2;
var camelCase_ = 3;
var UPPER_CASE = 4;
Invalid
var lower_case = 1;
var Mixed_case = 2;
var mixed_Case = 3;
disallowKeywords
Disallows usage of specified keywords.
Type: Array
Values: Array of quoted keywords
Example
"disallowKeywords": ["with"]
Invalid
with (x) {
prop++;
}
disallowMultipleLineStrings
Disallows strings that span multiple lines without using concatenation.
Type: Boolean
Values: true
JSHint: multistr
Example
"disallowMultipleLineStrings": true
Valid
var x = "multi" +
"line";
var y = "single line";
Invalid
var x = "multi \
line";
disallowMultipleLineBreaks
Disallows multiple blank lines in a row.
Type: Boolean
Values: true
Example
"disallowMultipleLineBreaks": true
Valid
var x = 1;
x++;
Invalid
var x = 1;
x++;
validateLineBreaks
Option to check line break characters
Type: String
Values: "CR"
, "LF"
, "CRLF"
Example
"validateLineBreaks": "LF"
Valid
var x = 1;<LF>
x++;
Invalid
var x = 1;<CRLF>
x++;
validateQuoteMarks
Requires all quote marks to be either the supplied value, or consistent if true
Type: String
or Object
Values:
"\""
: all strings require double quotes"'"
: all strings require single quotestrue
: all strings require the quote mark first encountered in the source codeObject
:escape
: allow the "other" quote mark to be used, but only to avoid having to escapemark
: the same effect as the non-object values
JSHint: quotmark
Example
"validateQuoteMarks": "\""
"validateQuoteMarks": { "mark": "\"", "escape": true }
{ "mark": "\"", "escape": true }
Valid example for mode var x = "x";
var y = '"x"';
{ "mark": "\"", "escape": true }
Invalid example for mode var x = "x";
var y = 'x';
"\""
or mode true
Valid example for mode var x = "x";
"'"
or mode true
Valid example for mode var x = 'x';
true
Invalid example for mode var x = "x", y = 'y';
validateIndentation
Validates indentation for arrays, objects, switch statements, and block statements
Type: Integer
or String
Values: A positive integer or "\t"
JSHint: indent
Example
"validateIndentation": "\t",
2
Valid example for mode if (a) {
b=c;
function(d) {
e=f;
}
}
2
Invalid example for mode if (a) {
b=c;
function(d) {
e=f;
}
}
Valid example for mode "\t"
if (a) {
b=c;
function(d) {
e=f;
}
}
Invalid example for mode "\t"
if (a) {
b=c;
function(d) {
e=f;
}
}
disallowMixedSpacesAndTabs
Requires lines to not contain both spaces and tabs consecutively, or spaces after tabs only for alignment if "smart"
Type: Boolean
or String
Values: true
or "smart"
JSHint: smarttabs
Example
"disallowMixedSpacesAndTabs": true
true
Valid example for mode \tvar foo = "blah blah";
\s\s\s\svar foo = "blah blah";
\t/**
\t\s*
\t\s*/ //a single space to align the star in a multi-line comment is allowed
true
Invalid example for mode \t\svar foo = "blah blah";
\s\tsvar foo = "blah blah";
"smart"
Valid example for mode \tvar foo = "blah blah";
\t\svar foo = "blah blah";
\s\s\s\svar foo = "blah blah";
\t/**
\t\s*
\t\s*/ //a single space to align the star in a multi-line comment is allowed
"smart"
Invalid example for mode \s\tsvar foo = "blah blah";
disallowTrailingWhitespace
Requires all lines to end on a non-whitespace character
Type: Boolean
Values: true
JSHint: trailing
Example
"disallowTrailingWhitespace": true
Valid
var foo = "blah blah";
Invalid
var foo = "blah blah"; //<-- whitespace character here
disallowTrailingComma
Disallows an extra comma following the final element of an array or object literal.
Type: Boolean
Values: true
JSHint: es3
Example
"disallowTrailingComma": true
Valid
var foo = [1, 2, 3];
var bar = {a: "a", b: "b"}
Invalid
var foo = [1, 2, 3, ];
var bar = {a: "a", b: "b", }
requireTrailingComma
Requires an extra comma following the final element of an array or object literal.
Type: Boolean
Values: true
Example
"requireTrailingComma": true
Valid
var foo = [1, 2, 3,];
var bar = {a: "a", b: "b",}
Invalid
var foo = [1, 2, 3];
var bar = {a: "a", b: "b"}
disallowKeywordsOnNewLine
Disallows placing keywords on a new line.
Type: Array
Values: Array of quoted keywords
Example
"disallowKeywordsOnNewLine": ["else"]
Valid
if (x < 0) {
x++;
} else {
x--;
}
Invalid
if (x < 0) {
x++;
}
else {
x--;
}
requireKeywordsOnNewLine
Requires placing keywords on a new line.
Type: Array
Values: Array of quoted keywords
Example
"requireKeywordsOnNewLine": ["else"]
Valid
if (x < 0) {
x++;
}
else {
x--;
}
Invalid
if (x < 0) {
x++;
} else {
x--;
}
requireLineFeedAtFileEnd
Requires placing line feed at file end.
Type: Boolean
Values: true
Example
"requireLineFeedAtFileEnd": true
maximumLineLength
Requires all lines to be at most the number of characters specified
Type: Integer
Values: A positive integer
JSHint: maxlen
Example
"maximumLineLength": 40
Valid
var aLineOf40Chars = 123456789012345678;
Invalid
var aLineOf41Chars = 1234567890123456789;
requireCapitalizedConstructors
Requires constructors to be capitalized (except for this
)
Type: Boolean
Values: true
JSHint: newcap
Example
"requireCapitalizedConstructors": true
Valid
var a = new B();
var c = new this();
Invalid
var d = new e();
safeContextKeyword
Option to check var that = this
expressions
Type: 'Array' or String
Values: String value used for context local declaration
Example
"safeContextKeyword": [ "that" ]
Valid
var that = this;
Invalid
var _this = this;
requireDotNotation
Requires member expressions to use dot notation when possible
Type: Boolean
Values: true
JSHint: sub
Example
"requireDotNotation": true
Valid
var a = b[c];
var a = b.c;
var a = b[c.d];
var a = b[1];
var a = b['while']; //reserved word
Invalid
var a = b['c'];
disallowYodaConditions
Requires the variable to be the left hand operator when doing a boolean comparison
Type: Boolean
Values: true
Example
"disallowYodaConditions": true
Valid
if (a == 1) {
return
}
Invalid
if (1 == a) {
return
}
validateJSDoc
Enables JSDoc validation.
Type: Object
Values:
- "checkParamNames" ensures param names in jsdoc and in function declaration are equal
- "requireParamTypes" ensures params in jsdoc contains type
- "checkRedundantParams" reports redundant params in jsdoc
Example
"validateJSDoc": {
"checkParamNames": true,
"checkRedundantParams": true,
"requireParamTypes": true
}
Valid
/**
* Adds style error to the list
*
* @param {String} message
* @param {Number|Object} line
* @param {Number} [column]
*/
add: function(message, line, column) {
}
Invalid
/**
* Adds style error to the list
*
* @param {String} message
* @param {Number|Object} line
* @param {Number} [column]
*/
add: function() {
}
excludeFiles
Disables style checking for specified paths.
Type: Array
Values: Array of file matching patterns
Example
"excludeFiles": ["node_modules/**"]
additionalRules
Path to load additional rules
Type: Array
Values: Array of file matching patterns
Example
"additionalRules": ["project-rules/*.js"]
preset
Extends defined rules with preset rules.
Type: String
Values: "jquery"
Example
"preset": "jquery"
If you want specifically disable preset rule assign it to null
"preset": "jquery",
requireCurlyBraces: null
Browser Usage
File jscs-browser.js contains browser-compatible version of jscs
.
Download and include jscs-browser.js
into your page.
<script src="jscs-browser.js"></script>
<script>
var checker = new JscsStringChecker();
checker.registerDefaultRules();
checker.configure({disallowMultipleVarDecl: true});
var errors = checker.checkString('var x, y = 1;');
errors.getErrorList().forEach(function(error) {
console.log(errors.explainError(error));
});
</script>