From 2445b179eeff47a8f74b78d6dc85e9e1445f140c Mon Sep 17 00:00:00 2001 From: Gunther Brunner Date: Tue, 9 Sep 2014 16:28:00 +0900 Subject: [PATCH] Added JSCS style checking. However, there are thousands of errors: it may need some rule relaxing. Still needs to check for JSHint overlap. Heated rules left out: "disallowAnonymousFunctions": true, "disallowCommaBeforeLineBreak": true "requireCommaBeforeLineBreak": true, "disallowKeywordsOnNewLine": true, "requireKeywordsOnNewLine": true --- .jscsrc | 93 +++++++++++++++++++++++++++++++++++++++++++++++ gulpfile.js | 14 ++++++- webpack.config.js | 20 +++++----- 3 files changed, 115 insertions(+), 12 deletions(-) create mode 100644 .jscsrc diff --git a/.jscsrc b/.jscsrc new file mode 100644 index 0000000000..f6d7240f31 --- /dev/null +++ b/.jscsrc @@ -0,0 +1,93 @@ +{ + "requireCurlyBraces": [ + "if", + "else", + "for", + "while", + "do", + "try", + "catch", + "case", + "default" + ], + "requireSpaceAfterKeywords": [ + "do", + "for", + "if", + "else", + "switch", + "case", + "try", + "catch", + "void", + "while", + "with", + "return", + "typeof", + "function" + ], + "requireSpaceBeforeBlockStatements": true, + "requireParenthesesAroundIIFE": true, + + "requireSpacesInConditionalExpression": true, + "requireSpacesInFunctionExpression": { + "beforeOpeningRoundBrace": true, + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInNamedFunctionExpression": { + "beforeOpeningRoundBrace": true, + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInFunctionDeclaration": { + "beforeOpeningRoundBrace": true, + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInFunction": { + "beforeOpeningRoundBrace": true, + "beforeOpeningCurlyBrace": true + }, + "disallowMultipleVarDecl": true, + "requireBlocksOnNewline": true, + "disallowPaddingNewlinesInBlocks": true, + "disallowEmptyBlocks": true, + "disallowSpacesInsideArrayBrackets": "nested", + "disallowQuotedKeysInObjects": "allButReserved", + "disallowSpaceAfterObjectKeys": true, + "requireOperatorBeforeLineBreak": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowSpaceBeforePostfixUnaryOperators": true, + "requireSpaceBeforeBinaryOperators": true, + "requireSpaceAfterBinaryOperators": true, + "disallowImplicitTypeConversion": [ + "numeric", + "boolean", + "binary", + "string" + ], + "requireCamelCaseOrUpperCaseIdentifiers": true, + "disallowKeywords": ["with"], + "disallowMultipleLineStrings": true, + "disallowMultipleLineBreaks": true, + "validateLineBreaks": "LF", + "validateQuoteMarks": { + "mark": "'", + "escape": true + }, + "validateIndentation": 2, + "disallowMixedSpacesAndTabs": true, + "disallowTrailingWhitespace": true, + "disallowTrailingComma": true, + "requireLineFeedAtFileEnd": true, + "maximumLineLength": 90, + "requireCapitalizedConstructors": true, + "safeContextKeyword": ["that"], + "requireDotNotation": true, + "disallowYodaConditions": true, + "validateJSDoc": { + "checkParamNames": true, + "checkRedundantParams": true, + "requireParamTypes": true + }, + "requireSpaceAfterLineComment": true, + "disallowNewlineBeforeBlockStatements": true +} diff --git a/gulpfile.js b/gulpfile.js index 42a8d55f78..fa739a6fc0 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -15,6 +15,7 @@ var protractorConfig = './res/test/protractor.conf' var karma = require('karma').server var karmaConfig = '/res/test/karma.conf.js' var stream = require('stream') +var jscs = require('gulp-jscs') gulp.task('jshint', function () { return gulp.src([ @@ -34,6 +35,15 @@ gulp.task('jsonlint', function () { .pipe(jsonlint.reporter()) }) +gulp.task('jscs', function () { + return gulp.src([ + 'lib/**/*.js', 'res/app/**/*.js', 'res/auth-ldap/**/*.js', + 'res/auth-mock/**/*.js', 'res/common/**/*.js', 'res/test/**/*.js', + '*.js' + ]) + .pipe(jscs()) +}); + gulp.task('lint', ['jshint', 'jsonlint']) gulp.task('test', ['lint', 'protractor']) gulp.task('build', ['translate', 'webpack:build']) @@ -65,7 +75,7 @@ gulp.task('protractor-explorer', function (callback) { }, callback) }) -gulp.task('protractor', ['webdriver-update'],function (callback) { +gulp.task('protractor', ['webdriver-update'], function (callback) { gulp.src(["./res/test/e2e/**/*.js"]) .pipe(protractor.protractor({ configFile: protractorConfig, @@ -162,7 +172,7 @@ gulp.task('jade', function (cb) { locals: { // So res/views/docs.jade doesn't complain markdownFile: { - parseContent: function() { + parseContent: function () { } } } diff --git a/webpack.config.js b/webpack.config.js index 17e3531ca3..f06f687b6f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,6 @@ var pathutil = require('./lib/util/pathutil') var webpack = require('webpack') -var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin") +var CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin') module.exports = { webpack: { @@ -38,14 +38,14 @@ module.exports = { { test: /\.css$/, loader: 'style!css' }, { test: /\.less$/, loader: 'style-loader!css-loader!less-loader'}, { test: /\.json$/, loader: 'json' }, - { test: /\.jpg$/, loader: "url-loader?limit=1000&mimetype=image/jpeg" }, - { test: /\.png$/, loader: "url-loader?limit=1000&mimetype=image/png" }, - { test: /\.gif$/, loader: "url-loader?limit=1000&mimetype=image/gif" }, - { test: /\.svg/, loader: "url-loader?limit=1&mimetype=image/svg+xml" }, - { test: /\.woff/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, - { test: /\.otf/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, - { test: /\.ttf/, loader: "url-loader?limit=1&mimetype=application/font-woff" }, - { test: /\.eot/, loader: "url-loader?limit=1&mimetype=vnd.ms-fontobject" }, + { test: /\.jpg$/, loader: 'url-loader?limit=1000&mimetype=image/jpeg' }, + { test: /\.png$/, loader: 'url-loader?limit=1000&mimetype=image/png' }, + { test: /\.gif$/, loader: 'url-loader?limit=1000&mimetype=image/gif' }, + { test: /\.svg/, loader: 'url-loader?limit=1&mimetype=image/svg+xml' }, + { test: /\.woff/, loader: 'url-loader?limit=1&mimetype=application/font-woff' }, + { test: /\.otf/, loader: 'url-loader?limit=1&mimetype=application/font-woff' }, + { test: /\.ttf/, loader: 'url-loader?limit=1&mimetype=application/font-woff' }, + { test: /\.eot/, loader: 'url-loader?limit=1&mimetype=vnd.ms-fontobject' }, { test: /\.jade$/, loader: 'template-html-loader' }, { test: /\.html$/, loader: 'html-loader' }, { test: /angular\.js$/, loader: 'exports?angular'}, @@ -82,7 +82,7 @@ module.exports = { , ['main'] ) ) - , new CommonsChunkPlugin("entry/commons.entry.js") + , new CommonsChunkPlugin('entry/commons.entry.js') ] }, webpackServer: {