From 2c8bf249707c6a778852d65c6c20970b2511515d Mon Sep 17 00:00:00 2001 From: janraasch Date: Tue, 21 Jan 2014 12:16:39 +0100 Subject: [PATCH] chore(release): v0.0.1 initial release --- .editorconfig | 13 ++++ .gitattributes | 1 + .gitignore | 6 ++ .npmignore | 0 .travis.yml | 8 +++ CHANGELOG.md | 5 ++ LICENSE | 19 ++++++ coffeelint.json | 42 ++++++++++++ gulpfile.coffee | 49 ++++++++++++++ index.coffee | 105 +++++++++++++++++++++++++++++ package.json | 53 +++++++++++++++ readme.md | 72 ++++++++++++++++++++ screenshot.png | Bin 0 -> 80374 bytes test/fixtures/class-global.coffee | 14 ++++ test/fixtures/class-strict.coffee | 5 ++ test/fixtures/code-bottom.coffee | 2 + test/fixtures/code-mixed.coffee | 5 ++ test/main.coffee | 107 ++++++++++++++++++++++++++++++ 18 files changed, 506 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 .travis.yml create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 coffeelint.json create mode 100644 gulpfile.coffee create mode 100644 index.coffee create mode 100644 package.json create mode 100644 readme.md create mode 100644 screenshot.png create mode 100644 test/fixtures/class-global.coffee create mode 100644 test/fixtures/class-strict.coffee create mode 100644 test/fixtures/code-bottom.coffee create mode 100644 test/fixtures/code-mixed.coffee create mode 100644 test/main.coffee diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c308ed0 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7fbc086 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +node_modules/ +temp/ +coverage/ +*.log +index.js diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..e69de29 diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..5ca71f4 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: + - '0.10' + - '0.11' +before_script: + - npm config set coverage true +after_success: + - npm run-script coveralls diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..2bf78f7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ + +### 0.0.1 (2014-01-21) + +Initial release. + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a0e32ee --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Jan Raasch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/coffeelint.json b/coffeelint.json new file mode 100644 index 0000000..0955d6a --- /dev/null +++ b/coffeelint.json @@ -0,0 +1,42 @@ +{ + "indentation": { + "value": 4 + }, + "line_endings": { + "level": "error", + "value": "unix" + }, + "colon_assignment_spacing": { + "name": "colon_assignment_spacing", + "level": "error", + "spacing": { + "left": 0, + "right": 1 + } + }, + "space_operators": { + "level": "error" + }, + "newlines_after_classes": { + "value": 3, + "level": "error" + }, + "no_stand_alone_at": { + "level": "error" + }, + "arrow_spacing": { + "level": "error" + }, + "cyclomatic_complexity": { + "level": "error" + }, + "empty_constructor_needs_parens": { + "level": "error" + }, + "no_empty_param_list": { + "level": "error" + }, + "no_unnecessary_fat_arrows": { + "level": "error" + } +} diff --git a/gulpfile.coffee b/gulpfile.coffee new file mode 100644 index 0000000..5b61758 --- /dev/null +++ b/gulpfile.coffee @@ -0,0 +1,49 @@ +fs = require 'fs' +{spawn} = require 'child_process' +gulp = require 'gulp' +coffee = require 'gulp-coffee' +coffeelint = require 'gulp-coffeelint' +clean = require 'gulp-clean' +{log,colors} = require 'gulp-util' + +# compile `index.coffee` +gulp.task 'coffee', -> + gulp.src('index.coffee') + .pipe(coffee bare: true) + .pipe(gulp.dest './') + +# remove `index.js` and `coverage` dir +gulp.task 'clean', -> + gulp.src(['index.js', 'coverage'], read: false) + .pipe(clean()) + +# run tests +gulp.task 'test', ['coffee'], -> + spawn 'npm', ['test'], stdio: 'inherit' + +# create changelog +gulp.task 'changelog', -> + changelog = require 'conventional-changelog' + changelog({ + repository: 'https://github.com/janraasch/generator-gulpplugin-coffee' + version: require('./package.json').version + }, (err, log) -> + fs.writeFileSync 'CHANGELOG.md', log + ) + +# test drive +gulp.task 'selfie', -> + usestrict = require './index.coffee' + gulp.src('./{,test/,test/fixtures/}*.coffee') + .pipe(coffeelint null, false, [usestrict]) + .pipe(coffeelint.reporter()) + +# start workflow +gulp.task 'default', -> + gulp.run 'coffee' + + gulp.watch ['./{,test/,test/fixtures/}*.coffee'], (e) -> + log "File #{e.type} #{colors.magenta e.path}" + gulp.run 'test' + +# Generated on 2014-01-20 using generator-gulpplugin-coffee 0.0.2 diff --git a/index.coffee b/index.coffee new file mode 100644 index 0000000..7c5cee8 --- /dev/null +++ b/index.coffee @@ -0,0 +1,105 @@ +'use strict' +isUseStrictValue = (node) -> + (node.constructor.name is 'Value') and + node.isString() and + (node.base.value is '"use strict"' or + node.base.value is "'use strict'") + +useStrictAtTopOf = (node) -> + firstChild = null + + # let's not bother with empty nodes + # i.e. empty functions + return {boolean: true} if node.isEmpty() + + # get first child + node.eachChild (child) -> + firstChild = child + false + + # return result + boolean: isUseStrictValue firstChild + firstChild: firstChild + +class UseStrictRule + rule: + name: 'use_strict' + level: 'error' + message: 'Missing \'use strict\' statement' + allowGlobal: true + requireGlobal: false + description: """ +

This rule enforces the ussage of strict mode. By setting + requireGlobal to true, you can also require a file to + have a global 'use strict' statement at the top. And, by setting + allowGlobal to true (or false) you can allow + (or disallow) 'use strict' statements at the top of a file

+

+            #
+            # If requireGlobal is false
+            #
+
+            # Good
+            goodfunc = (please) ->
+                'use strict'
+                allright
+
+            # Bad
+            badfunc = (idonot) ->
+                obey
+            
+ """ + + lintAST: (node, astApi) -> + createError = astApi.createError + {requireGlobal, allowGlobal} = astApi.config[@rule.name] + firstChild = null + + # let's not bother with empty nodes + return undefined if node.isEmpty() + + # check global `use strict` + useStrict = useStrictAtTopOf node + if useStrict.boolean is true + if allowGlobal is off + @errors.push( + createError( + lineNumber: + useStrict.firstChild.locationData.first_line + 1 + message: + '\'use strict\' at top of file' + ) + ) + else + allowGlobal is on + # no errors and done + return undefined + else + if requireGlobal is true + @errors.push( + createError( + lineNumber: + useStrict.firstChild.locationData.first_line + 1 + ) + ) + return undefined + + # seems like we really need to walk down the tree + # and find find first level functions + node.traverseChildren false, (child) => + useStr = null + if child.constructor.name is 'Code' + useStr = useStrictAtTopOf child.body + if not useStr.boolean + @errors.push( + createError( + lineNumber: + useStr.firstChild.locationData.first_line + 1 + ) + ) + true + + undefined + + +module.exports = UseStrictRule diff --git a/package.json b/package.json new file mode 100644 index 0000000..deebb45 --- /dev/null +++ b/package.json @@ -0,0 +1,53 @@ +{ + "name": "coffeelint-use-strict", + "version": "0.0.1", + "description": "A CoffeeLint rule that enforces usage of strict mode", + "keywords": [ + "coffee", + "coffeescript", + "coffeelint", + "rule", + "usestrict", + "use strict", + "'use strict'", + "\"use strict\"", + "coffeelintrule", + "coffeelintmodule", + "coffeelint-rule", + "coffeelint-module", + "codeconventions" + ], + "repository": "janraasch/coffeelint-use-strict", + "author": { + "name": "Jan Raasch", + "email": "jan@janraasch.com", + "url": "http://janraasch.com" + }, + "files": [ + "index.js" + ], + "scripts": { + "prepublish": "gulp coffee --require coffee-script", + "test": "coffeelint gulpfile.coffee index.coffee test -f ./coffeelint.json && istanbul test _mocha --report lcovonly -- ./test/*.coffee --require coffee-script --reporter spec", + "coveralls": "cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "screenshot": "coffeelint index.coffee" + }, + "devDependencies": { + "coffee-script": "~1.6.3", + "coffeelint": "~1.0.2", + "mocha": "~1.17.0", + "gulp-util": "~2.2.12", + "istanbul": "~0.2.3", + "should": "~3.0.1", + "coveralls": "~2.6.1", + "gulp": "~3.4.0", + "gulp-coffee": "~1.2.2", + "gulp-clean": "~0.2.2", + "gulp-coffeelint": "~0.1.2", + "conventional-changelog": "0.0.4" + }, + "engines": { + "node": ">=0.8.0" + }, + "license": "MIT" +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..b80aa98 --- /dev/null +++ b/readme.md @@ -0,0 +1,72 @@ +# coffeelint-use-strict [![NPM version][npm-image]][npm-url] +[![Build Status][travis-image]][travis-url] [![Coverage Status][coveralls-image]][coveralls-url] [![Dependency Status][depstat-image]][depstat-url] [![devDependency Status][devdepstat-image]][devdepstat-url] + +> [CoffeeLint][coffeelint] rule that enforces usage of [strict mode][moz-strictmode-doc]. + +![example-output](screenshot.png) + +## Usage + +First, install `coffeelint-use-strict` as a development dependency: + +```shell +npm install --save-dev coffeelint-use-strict +``` + +Then, add a `"use_strict"` key with value `{"module": "coffeelint-use-strict"}` to your `coffeelint.json`, e.g. + +```json +{ + "use_strict": { + "module": "coffeelint-use-strict", + "level": "error", + "allowGlobal": false, + "requireGlobal": false + } +} +``` + +The `coffeelint` cli will then load this rule automatically. See the [documentation][coffeelint-api-doc] for other ways to make use of custom rules. + +## Options + +### level +Type: `String` +Default: `'error'` + +The severity level of the violated rule. `level` must be one of `'ignore'`, `'warn'`, or `'error'`. + +### allowGlobal +Type: `Boolean` +Default: `true` + +Allow the `'use strict'` statement to be at the top of a file. + +### requireGlobal +Type: `Boolean` +Default: `false` + +Require the `'use strict'` statement to be at the top of a file. + +## License + +[MIT License](http://en.wikipedia.org/wiki/MIT_License) © [Jan Raasch](http://janraasch.com) + +[coffeelint]: http://www.coffeelint.org +[coffeelint-api-doc]: http://www.coffeelint.org/#api +[moz-strictmode-doc]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FFunctions_and_function_scope%2FStrict_mode + +[npm-url]: https://npmjs.org/package/coffeelint-use-strict +[npm-image]: https://badge.fury.io/js/coffeelint-use-strict.png + +[travis-url]: http://travis-ci.org/janraasch/coffeelint-use-strict +[travis-image]: https://secure.travis-ci.org/janraasch/coffeelint-use-strict.png?branch=master + +[coveralls-url]: https://coveralls.io/r/janraasch/coffeelint-use-strict +[coveralls-image]: https://coveralls.io/repos/janraasch/coffeelint-use-strict/badge.png + +[depstat-url]: https://david-dm.org/janraasch/coffeelint-use-strict +[depstat-image]: https://david-dm.org/janraasch/coffeelint-use-strict.png + +[devdepstat-url]: https://david-dm.org/janraasch/coffeelint-use-strict#info=devDependencies +[devdepstat-image]: https://david-dm.org/janraasch/coffeelint-use-strict/dev-status.png diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6de3613305ddf8d1102c238b76ec5307eb0ac0 GIT binary patch literal 80374 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

T##O7F#;Q)}p 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 literal 0 HcmV?d00001 diff --git a/test/fixtures/class-global.coffee b/test/fixtures/class-global.coffee new file mode 100644 index 0000000..c34c388 --- /dev/null +++ b/test/fixtures/class-global.coffee @@ -0,0 +1,14 @@ +# what the +# sdsd# +#sfdsf +'use strict' +fuck = 'me' +-> + fucker +class SomeClass + what: -> + isthis() + and: -> + what = -> + isthat() + other() diff --git a/test/fixtures/class-strict.coffee b/test/fixtures/class-strict.coffee new file mode 100644 index 0000000..cfffd81 --- /dev/null +++ b/test/fixtures/class-strict.coffee @@ -0,0 +1,5 @@ +# what the +class SomeClass + what: -> + 'use strict' + isthis() diff --git a/test/fixtures/code-bottom.coffee b/test/fixtures/code-bottom.coffee new file mode 100644 index 0000000..89ef0f6 --- /dev/null +++ b/test/fixtures/code-bottom.coffee @@ -0,0 +1,2 @@ +(-> somecode()) +'use strict' diff --git a/test/fixtures/code-mixed.coffee b/test/fixtures/code-mixed.coffee new file mode 100644 index 0000000..8f84c01 --- /dev/null +++ b/test/fixtures/code-mixed.coffee @@ -0,0 +1,5 @@ +(yo) -> + 'use strict' + code +(yo2) -> + notsostrict diff --git a/test/main.coffee b/test/main.coffee new file mode 100644 index 0000000..d258c33 --- /dev/null +++ b/test/main.coffee @@ -0,0 +1,107 @@ +# module dependencies +fs = require 'fs' +should = require 'should' +CoffeeScript = require 'coffee-script' + +# SUT +Rule = require '../' + +getFixtureAST = (fixture) -> + file = "#{__dirname}/fixtures/#{fixture}.coffee" + source = fs.readFileSync(file).toString() + CoffeeScript.nodes source + +describe 'coffeelint-use-strict', -> + rule = null + + beforeEach -> + rule = new Rule() + rule.errors = [] + + describe 'no matter what', -> + astApi = {} + + beforeEach -> + astApi = + config: use_strict: {} + createError: (e) -> e + + it 'it passes through empty files', -> + rule.lintAST CoffeeScript.nodes(''), astApi + rule.errors.should.have.length 0 + + it 'it passes through empty functions', -> + rule.lintAST CoffeeScript.nodes('->'), astApi + rule.errors.should.have.length 0 + + describe 'requires global use strict', -> + astApi = {} + + beforeEach -> + astApi = + config: use_strict: requireGlobal: true + createError: (e) -> e + + it 'if the option is set', -> + rule.lintAST getFixtureAST('class-global'), astApi + rule.errors.should.have.length 0 + rule.lintAST getFixtureAST('class-strict'), astApi + rule.errors.should.have.length 1 + rule.errors[0].should.have.property 'lineNumber' + rule.errors[0].lineNumber.should.equal 2 + + describe 'allows use strict on top of file', -> + astApi = {} + + beforeEach -> + astApi = + config: use_strict: allowGlobal: true + createError: (e) -> e + + it 'if the allowGlobal is true', -> + rule.lintAST getFixtureAST('class-global'), astApi + rule.errors.should.have.length 0 + rule.lintAST getFixtureAST('class-strict'), astApi + rule.errors.should.have.length 0 + + it 'but use strict at bottom is not enough', -> + rule.lintAST getFixtureAST('code-bottom'), astApi + rule.errors.should.have.length 1 + rule.errors[0].should.have.property 'lineNumber' + rule.errors[0].lineNumber.should.equal 1 + + describe 'does not allow use strict on top of a file', -> + astApi = {} + + beforeEach -> + astApi = + config: use_strict: allowGlobal: false + createError: (e) -> e + + it 'if the allowGlobal is false', -> + rule.lintAST getFixtureAST('class-global'), astApi + rule.errors.should.have.length 4 + rule.errors[0].should.have.property 'lineNumber' + rule.errors[0].lineNumber.should.equal 4 + rule.errors[0].should.have.property 'message' + rule.errors[0].message.should.equal "'use strict' at top of file" + rule.errors[1].should.have.property 'lineNumber' + rule.errors[1].lineNumber.should.equal 7 + rule.errors[2].should.have.property 'lineNumber' + rule.errors[2].lineNumber.should.equal 10 + rule.errors[3].should.have.property 'lineNumber' + rule.errors[3].lineNumber.should.equal 12 + + describe 'checks for local (function scope) use strict', -> + astApi = {} + + beforeEach -> + astApi = + config: use_strict: {} + createError: (e) -> e + + it 'by default', -> + rule.lintAST getFixtureAST('code-mixed'), astApi + rule.errors.should.have.length 1 + rule.errors[0].should.have.property 'lineNumber' + rule.errors[0].lineNumber.should.equal 5