Use the standard .jshintrc file for JSHint options.

This commit is contained in:
Robin Ward 2013-12-31 12:41:40 -05:00
parent e3e4c62887
commit 6c4417e0f0
4 changed files with 70 additions and 202 deletions

68
.jshintrc Normal file
View File

@ -0,0 +1,68 @@
{
"predef":["Ember",
"jQuery",
"$",
"RSVP",
"Discourse",
"$LAB",
"Em",
"PreloadStore",
"Handlebars",
"I18n",
"bootbox",
"module",
"integration",
"test",
"ok",
"expect",
"equal",
"blank",
"present",
"visit",
"count",
"exists",
"asyncTestDiscourse",
"fixture",
"find",
"sinon",
"moment",
"start",
"_",
"console",
"alert",
"controllerFor",
"testController",
"containsInstance",
"parseHTML",
"deepEqual",
"notEqual",
"Blob",
"File"],
"node" : false,
"browser" : true,
"boss" : true,
"curly": false,
"debug": false,
"devel": false,
"eqeqeq": true,
"evil": true,
"forin": false,
"immed": false,
"laxbreak": false,
"newcap": true,
"noarg": true,
"noempty": false,
"nonew": false,
"nomen": false,
"onevar": false,
"plusplus": false,
"regexp": false,
"undef": true,
"unused": true,
"sub": true,
"strict": false,
"white": false,
"eqnull": true,
"quotmark": false,
"lastsemic": true
}

View File

@ -28,6 +28,7 @@ window.Discourse = Ember.Application.createWithMixins(Discourse.Ajax, {
titleChanged: function() {
var title = "";
if (this.get('title')) {
title += "" + (this.get('title')) + " - ";
}

View File

@ -1,133 +0,0 @@
# ------------ rake task options ------------
# JS files to check by default, if no parameters are passed to rake jshint
# (you may want to limit this only to your own scripts and exclude any external scripts and frameworks)
# this can be overridden by adding 'paths' and 'exclude_paths' parameter to rake command:
# rake jshint paths=path1,path2,... exclude_paths=library1,library2,...
paths:
- app/assets/javascripts/**/*.js
- spec/javascripts/**/*.js
- spec/phantom_js/**/*.js
- test/javascripts/**/*.js
exclude_paths:
- app/assets/javascripts/defer/*
- app/assets/javascripts/locales/i18n.js
# ------------ jshint options ------------
# visit http://jshint.com/ for complete documentation
# "enforce" type options (true means potentially more warnings)
adsafe: false # true if ADsafe rules should be enforced. See http://www.ADsafe.org/
bitwise: true # true if bitwise operators should not be allowed
newcap: true # true if Initial Caps must be used with constructor functions
eqeqeq: true # true if === should be required (for ALL equality comparisons)
immed: false # true if immediate function invocations must be wrapped in parens
nomen: false # true if initial or trailing underscore in identifiers should be forbidden
onevar: false # true if only one var statement per function should be allowed
plusplus: false # true if ++ and -- should not be allowed
regexp: false # true if . and [^...] should not be allowed in RegExp literals
safe: false # true if the safe subset rules are enforced (used by ADsafe)
strict: false # true if the ES5 "use strict"; pragma is required
undef: true # true if variables must be declared before used
unused: true
white: false # true if strict whitespace rules apply (see also 'indent' option)
eqnull: false
onecase: true # allow for one case switches, can be more elegant sometimes
# "allow" type options (false means potentially more warnings)
cap: false # true if upper case HTML should be allowed
css: false # true if CSS workarounds should be tolerated
debug: false # true if debugger statements should be allowed (set to false before going into production)
es5: false # true if ECMAScript 5 syntax should be allowed
evil: false # true if eval should be allowed
forin: false # true if unfiltered 'for in' statements should be allowed
fragment: false # true if HTML fragments should be allowed
laxbreak: false # true if statement breaks should not be checked
on: false # true if HTML event handlers (e.g. onclick="...") should be allowed
sub: false # true if subscript notation may be used for expressions better expressed in dot notation
# other options
maxlen: 200 # Maximum line length
indent: 2 # Number of spaces that should be used for indentation - used only if 'white' option is set
maxerr: 50 # The maximum number of warnings reported (per file)
passfail: false # true if the scan should stop on first error (per file)
# following are relevant only if undef = true
# Some of these can be declared in other ways I think
predef:
- Ember
- jQuery
- $
- RSVP
- Discourse
- $LAB
- Em
- PreloadStore
- Handlebars
- I18n
- bootbox
- moment
- _
- module
- integration
- test
- ok
- expect
- equal
- blank
- present
- visit
- count
- exists
- asyncTestDiscourse
- fixture
- find
- sinon
- controllerFor
- testController
- Favcount
browser: true # true if the standard browser globals should be predefined
rhino: false # true if the Rhino environment globals should be predefined
windows: false # true if Windows-specific globals should be predefined
widget: false # true if the Yahoo Widgets globals should be predefined
devel: true # true if functions like alert, confirm, console, prompt etc. are predefined
# jshint options
loopfunc: true # true if functions should be allowed to be defined within loops
asi: true # true if automatic semicolon insertion should be tolerated
boss: true # true if advanced usage of assignments and == should be allowed
couch: true # true if CouchDB globals should be predefined
curly: false # true if curly braces around blocks should be required (even in if/for/while)
noarg: true # true if arguments.caller and arguments.callee should be disallowed
node: false # true if the Node.js environment globals should be predefined
noempty: false # true if empty blocks should be disallowed
nonew: true # true if using `new` for side-effects should be disallowed
# ------------ jshint_on_rails custom lint options (switch to true to disable some annoying warnings) ------------
# ignores "missing semicolon" warning at the end of a function; this lets you write one-liners
# like: x.map(function(i) { return i + 1 }); without having to put a second semicolon inside the function
lastsemic: false
# allows you to use the 'new' expression as a statement (without assignment)
# so you can call e.g. new Ajax.Request(...), new Effect.Highlight(...) without assigning to a dummy variable
newstat: false
# ignores the "Expected an assignment or function call and instead saw an expression" warning,
# if the expression contains a proper statement and makes sense; this lets you write things like:
# element && element.show();
# valid || other || lastChance || alert('OMG!');
# selected ? show() : hide();
# although these will still cause a warning:
# element && link;
# selected ? 5 : 10;
statinexp: false

View File

@ -90,74 +90,6 @@ qHint.sendRequest = function (url, callback) {
req.send();
};
var jsHintOpts = {
"predef":["Ember",
"jQuery",
"$",
"RSVP",
"Discourse",
"$LAB",
"Em",
"PreloadStore",
"Handlebars",
"I18n",
"bootbox",
"module",
"integration",
"test",
"ok",
"expect",
"equal",
"blank",
"present",
"visit",
"count",
"exists",
"asyncTestDiscourse",
"fixture",
"find",
"sinon",
"moment",
"start",
"_",
"console",
"alert",
"controllerFor",
"testController",
"containsInstance",
"parseHTML",
"deepEqual",
"notEqual",
"Blob",
"File"],
"node" : false,
"browser" : true,
"boss" : true,
"curly": false,
"debug": false,
"devel": false,
"eqeqeq": true,
"evil": true,
"forin": false,
"immed": false,
"laxbreak": false,
"newcap": true,
"noarg": true,
"noempty": false,
"nonew": false,
"nomen": false,
"onevar": false,
"plusplus": false,
"regexp": false,
"undef": true,
"unused": true,
"sub": true,
"strict": false,
"white": false,
"eqnull": true,
"lastsemic": true
};
<%
def jshint(dir, remove, to_ignore)
result = ""
@ -172,7 +104,7 @@ var jsHintOpts = {
depend_on filename
result << "qHint('#{filename}', '/assets/#{filename}', jsHintOpts);\n" if ok
result << "qHint('#{filename}', '/assets/#{filename}', #{File.read(File.join(Rails.root, '.jshintrc'))});\n" if ok
end
result