.jscsrc
{
"fileExtensions": [".js"],
"excludeFiles": [
"test/**",
"benchmarks/**",
"docs/**",
"node_modules/**",
"coverage/**"
],
//RESTRICTIONS:
//"disallowAnonymousFunctions": false, //anonymous functions are allowed but discouraged
"disallowImplicitTypeConversion": ["numeric", "boolean", "binary", "string"],
"disallowKeywordsOnNewLine": ["else"], //the `else` keyword cannot be placed on a newline
"disallowMultipleLineStrings": true, //multiline strings are not allowed; use concatenation instead
//"disallowMultipleSpaces": true,
"disallowMultipleVarDecl": true, //variables must be declared on separated lines; do not use comma like in var a,b;
"disallowNewlineBeforeBlockStatements": true, //the opening curly brace of a block cannot be on a newline
"disallowOperatorBeforeLineBreak": ["."], //the dot operator should not be placed at the end of a line
"disallowSpaceAfterObjectKeys": true,
"disallowSpaceAfterPrefixUnaryOperators": true,
"disallowSpaceBeforeComma": true,
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"disallowSpaceBeforeSemicolon": true,
"disallowSpacesInCallExpression": true,
"disallowSpacesInFunctionDeclaration": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInNamedFunctionExpression": {
"beforeOpeningRoundBrace": true
},
"disallowSpacesInsideBrackets": true,
"disallowSpacesInsideParentheses": true,
"disallowTrailingComma": true,
"disallowTrailingWhitespace": true,
//ENFORCEMENTS
"maximumLineLength": {
"value": 100,
"tabSize": 2,
"allExcept": ["regex", "comments", "urlComments", "require"]
},
//"maximumNumberOfLines": 250, //don't limit number of lines as jscs counts comment lines as well
"requireCamelCaseOrUpperCaseIdentifiers": true,
"requireCapitalizedConstructors": true,
"requireCommaBeforeLineBreak": true,
"requireCurlyBraces": true,
"requireFunctionDeclarations": true,
"requireLineBreakAfterVariableAssignment": true,
"requireLineFeedAtFileEnd": true,
"requireObjectKeysOnNewLine": true,
"requireOperatorBeforeLineBreak": true,
"requirePaddingNewLineAfterVariableDeclaration": true,
"requirePaddingNewLinesAfterUseStrict": true,
"requirePaddingNewLinesBeforeLineComments": { "allExcept": "firstAfterCurly" },
//"requirePaddingNewLinesInObjects": true,
"requireParenthesesAroundIIFE": true,
"requireSemicolons": true,
"requireSpaceAfterBinaryOperators": true,
"requireSpaceBeforeBinaryOperators": true,
"requireSpaceBeforeBlockStatements": true,
"requireSpaceBeforeObjectValues": true,
"requireSpaceBetweenArguments": true,
"requireSpacesInConditionalExpression": true,
"requireSpacesInForStatement": true,
"safeContextKeyword": ["self"],
"validateAlignedFunctionParameters": true,
"validateIndentation": {
"value": 2,
"allExcept": ["comments", "emptylines"]
},
"validateLineBreaks": "LF",
"validateNewlineAfterArrayElements": {
"ignoreBrackets": true
},
"validateParameterSeparator": ", ",
"validateQuoteMarks": {
"mark": "\"",
"escape": true
},
"jsDoc": {
"checkAnnotations": {
"preset": "closurecompiler",
"extra": {
"interface": true,
"final": true,
"implements": true,
"abstract": true,
"external": true,
"readonly": true,
"callback": true,
"memberof": true,
"fires": true,
"emits": true,
"file": true,
"alias": true,
"module": true
}
},
"checkParamNames": true,
"requireParamTypes": true,
"checkRedundantParams": true,
"checkReturnTypes": true,
"checkRedundantReturns": true,
"requireReturnTypes": true,
"checkTypes": "capitalizedNativeCase",
"checkRedundantAccess": "enforceLeadingUnderscore",
"enforceExistence": true,
"leadingUnderscoreAccess": true,
"requireHyphenBeforeDescription": true,
"requireNewlineAfterDescription": true,
//"requireDescriptionCompleteSentence": true,
"requireParamDescription": true
}
}