From 5ce0b342577076a4355ba1bb0ad0aef98261f236 Mon Sep 17 00:00:00 2001 From: Oleg Date: Fri, 13 Sep 2013 00:51:59 +0400 Subject: [PATCH] Fix #12757 - use jscs to check the style guide Close gh-1396 --- .jscs.json | 23 +++++++++++++++++++++++ Gruntfile.js | 32 +++++++++++++++++++++----------- package.json | 1 + 3 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 .jscs.json diff --git a/.jscs.json b/.jscs.json new file mode 100644 index 0000000000..6540c8f397 --- /dev/null +++ b/.jscs.json @@ -0,0 +1,23 @@ +{ + "requireCurlyBraces": [ "if", "else", "for", "while", "do" ], + "requireSpaceAfterKeywords": [ "if", "else", "for", "while", "do", "switch", "return" ], + "requireSpacesInFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "disallowSpacesInFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "requireMultipleVarDecl": true, + "requireSpacesInsideObjectBrackets": "all", + "requireSpacesInsideArrayBrackets": "all", + "disallowLeftStickedOperators": [ "?", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<=" ], + "disallowRightStickedOperators": [ "?", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + "requireRightStickedOperators": [ "!" ], + "requireLeftStickedOperators": [ "," ], + "disallowKeywords": [ "with" ], + "disallowMultipleLineBreaks": true, + "disallowKeywordsOnNewLine": [ "else" ], + "requireLineFeedAtFileEnd": true, + + "excludeFiles": [ "src/intro.js", "src/outro.js" ] +} diff --git a/Gruntfile.js b/Gruntfile.js index 4e4cd06f54..aee785decf 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -2,14 +2,15 @@ module.exports = function( grunt ) { "use strict"; + function readOptionalJSON( filepath ) { + var data = {}; + try { + data = grunt.file.readJSON( filepath ); + } catch(e) {} + return data; + } + var gzip = require( "gzip-js" ), - readOptionalJSON = function( filepath ) { - var data = {}; - try { - data = grunt.file.readJSON( filepath ); - } catch(e) {} - return data; - }, srcHintOptions = readOptionalJSON( "src/.jshintrc" ); // The concatenated file won't pass onevar @@ -50,19 +51,24 @@ module.exports = function( grunt ) { pkg: { src: [ "package.json" ] }, + + jscs: { + src: [ ".jscs.json" ] + }, + bower: { src: [ "bower.json" ] } }, jshint: { src: { - src: [ "src/**/*.js" ], + src: "src/**/*.js", options: { jshintrc: "src/.jshintrc" } }, dist: { - src: [ "dist/jquery.js" ], + src: "dist/jquery.js", options: srcHintOptions }, grunt: { @@ -72,12 +78,15 @@ module.exports = function( grunt ) { } }, tests: { - src: [ "test/**/*.js" ], + src: "test/**/*.js", options: { jshintrc: "test/.jshintrc" } } }, + jscs: { + src: "src/**/*.js" + }, testswarm: { tests: "ajax attributes callbacks core css data deferred dimensions effects event manipulation offset queue selector serialize support traversing Sizzle".split(" ") }, @@ -137,12 +146,13 @@ module.exports = function( grunt ) { grunt.loadNpmTasks( "grunt-contrib-jshint" ); grunt.loadNpmTasks( "grunt-contrib-uglify" ); grunt.loadNpmTasks( "grunt-jsonlint" ); + grunt.loadNpmTasks( "grunt-jscs-checker" ); // Integrate jQuery specific tasks grunt.loadTasks( "build/tasks" ); // Short list as a high frequency watch task - grunt.registerTask( "dev", [ "build:*:*", "jshint" ] ); + grunt.registerTask( "dev", [ "build:*:*", "jshint", "jscs" ] ); // Default grunt grunt.registerTask( "default", [ "jsonlint", "dev", "pre-uglify", "uglify", "post-uglify", "dist:*", "compare_size" ] ); diff --git a/package.json b/package.json index 82ee4a6f0b..57ab77d593 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "grunt-contrib-uglify": "~0.2.4", "grunt-contrib-watch": "~0.5.3", "grunt-git-authors": "~1.2.0", + "grunt-jscs-checker": "~0.2.3", "grunt-jsonlint": "~1.0.1", "gzip-js": "0.3.2", "testswarm": "~1.1.0",