From 7f4edaff6e50bdfc524e7dc70ed96663fd7dcea2 Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 30 Jan 2014 10:51:10 -0800 Subject: chore(build): add jscs code style check to our build Closes #6062 --- .jscs.json | 3 +++ .jscs.json.todo | 22 ++++++++++++++++++++++ Gruntfile.js | 10 +++++++++- package.json | 5 +++-- 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 .jscs.json create mode 100644 .jscs.json.todo diff --git a/.jscs.json b/.jscs.json new file mode 100644 index 00000000..e2307d16 --- /dev/null +++ b/.jscs.json @@ -0,0 +1,3 @@ +{ + "disallowKeywords": ["with"] +} diff --git a/.jscs.json.todo b/.jscs.json.todo new file mode 100644 index 00000000..6f6f0416 --- /dev/null +++ b/.jscs.json.todo @@ -0,0 +1,22 @@ +// This is an incomplete TODO list of checks we want to start enforcing +// +// The goal is to enable these checks one by one by moving them to .jscs.json along with commits +// that correct the existing code base issues and make the new check pass. + +{ + "requireCurlyBraces": ["if", "else", "for", "while", "do", "try", "catch"], + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], + "disallowLeftStickedOperators": ["?", "+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + "disallowRightStickedOperators": ["?", "+", "/", "*", ":", "=", "==", "===", "!=", "!==", ">", ">=", "<", "<="], + "requireRightStickedOperators": ["!"], + "requireLeftStickedOperators": [","], + "disallowImplicitTypeConversion": ["string"], + "disallowMultipleLineBreaks": true, + "disallowKeywordsOnNewLine": ["else"], + "disallowTrailingWhitespace": true, + "requireLineFeedAtFileEnd": true, + "validateJSDoc": { + "checkParamNames": true, + "requireParamTypes": true + } +} diff --git a/Gruntfile.js b/Gruntfile.js index 721bc16e..d66f6620 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -12,6 +12,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-ddescribe-iit'); grunt.loadNpmTasks('grunt-jasmine-node'); + grunt.loadNpmTasks("grunt-jscs-checker"); grunt.loadNpmTasks('grunt-merge-conflict'); grunt.loadNpmTasks('grunt-parallel'); grunt.loadNpmTasks('grunt-shell'); @@ -145,6 +146,13 @@ module.exports = function(grunt) { } }, + jscs: { + src: ['src/**/*.js', 'test/**/*.js'], + options: { + config: ".jscs.json" + } + }, + build: { scenario: { dest: 'build/angular-scenario.js', @@ -301,6 +309,6 @@ module.exports = function(grunt) { grunt.registerTask('webserver', ['connect:devserver']); grunt.registerTask('package', ['bower','clean', 'buildall', 'minall', 'collect-errors', 'docs', 'copy', 'write', 'compress']); grunt.registerTask('package-without-bower', ['clean', 'buildall', 'minall', 'collect-errors', 'docs', 'copy', 'write', 'compress']); - grunt.registerTask('ci-checks', ['ddescribe-iit', 'merge-conflict', 'jshint']); + grunt.registerTask('ci-checks', ['ddescribe-iit', 'merge-conflict', 'jshint', 'jscs']); grunt.registerTask('default', ['package']); }; diff --git a/package.json b/package.json index eeec930e..7a505c81 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "url": "https://github.com/angular/angular.js.git" }, "devDependencies": { - "grunt": "~0.4.1", + "grunt": "~0.4.2", "bower": "~1.2.2", "grunt-bump": "~0.0.13", "grunt-contrib-clean": "~0.5.0", @@ -41,7 +41,8 @@ "grunt-shell": "~0.4.0", "semver": "~2.1.0", "lodash": "~2.1.0", - "browserstacktunnel-wrapper": "~1.1.1" + "browserstacktunnel-wrapper": "~1.1.1", + "grunt-jscs-checker": "~0.3.2" }, "licenses": [ { -- cgit v1.2.3