Fix #10692. JSLint is dead! Long live JSHint!

Still needs this sizzle PR: https://github.com/jquery/sizzle/pull/82
This commit is contained in:
Mike Sherov 2011-12-08 20:42:47 -05:00 committed by Dave Methvin
parent d6500cc8de
commit 98386cfd77
10 changed files with 4323 additions and 5570 deletions

View File

@ -46,7 +46,7 @@ DATE=$(shell git log -1 --pretty=format:%ad)
all: update_submodules core
core: jquery min lint size
core: jquery min hint size
@@echo "jQuery build complete."
${DIST_DIR}:
@ -67,12 +67,14 @@ ${SRC_DIR}/selector.js: ${SIZZLE_DIR}/sizzle.js
@@echo "Building selector code from Sizzle"
@@sed '/EXPOSE/r src/sizzle-jquery.js' ${SIZZLE_DIR}/sizzle.js | grep -v window.Sizzle > ${SRC_DIR}/selector.js
lint: jquery
lint: hint
hint: jquery
@@if test ! -z ${JS_ENGINE}; then \
echo "Checking jQuery against JSLint..."; \
${JS_ENGINE} build/jslint-check.js; \
echo "Checking jQuery against JSHint..."; \
${JS_ENGINE} build/jshint-check.js; \
else \
echo "You must have NodeJS installed in order to test jQuery against JSLint."; \
echo "You must have NodeJS installed in order to test jQuery against JSHint."; \
fi
size: jquery min
@ -134,4 +136,4 @@ pull_submodules:
pull: pull_submodules
@@git pull ${REMOTE} ${BRANCH}
.PHONY: all jquery lint min clean distclean update_submodules pull_submodules pull core
.PHONY: all jquery lint hint min clean distclean update_submodules pull_submodules pull core

35
build/jshint-check.js Normal file
View File

@ -0,0 +1,35 @@
var JSHINT = require("./lib/jshint").JSHINT,
print = require("sys").print,
src = require("fs").readFileSync("dist/jquery.js", "utf8");
JSHINT(src, {
evil: true,
undef: false,
browser: true,
wsh: true,
eqnull: true,
expr: true,
curly: true,
eqeq: true,
trailing: true,
predef: [
"define",
"DOMParser"
],
maxerr: 100
});
var e = JSHINT.errors, found = e.length, i = 0, w;
for ( ; i < e.length; i++ ) {
w = e[i];
print( "\n" + w.evidence + "\n" );
print( " Problem at line " + w.line + " character " + w.character + ": " + w.reason );
}
if ( found > 0 ) {
print( "\n" + found + " Error(s) found.\n" );
} else {
print( "JSHint check passed.\n" );
}

View File

@ -1,36 +0,0 @@
var JSLINT = require("./lib/jslint").JSLINT,
print = require("sys").print,
src = require("fs").readFileSync("dist/jquery.js", "utf8");
JSLINT(src, { evil: true, forin: true, maxerr: 100 });
// All of the following are known issues that we think are 'ok'
// (in contradiction with JSLint) more information here:
// http://docs.jquery.com/JQuery_Core_Style_Guidelines
var ok = {
"Expected an identifier and instead saw 'undefined' (a reserved word).": true,
"Use '===' to compare with 'null'.": true,
"Use '!==' to compare with 'null'.": true,
"Expected an assignment or function call and instead saw an expression.": true,
"Expected a 'break' statement before 'case'.": true,
"'e' is already defined.": true
};
var e = JSLINT.errors, found = 0, w;
for ( var i = 0; i < e.length; i++ ) {
w = e[i];
if ( !ok[ w.reason ] ) {
found++;
print( "\n" + w.evidence + "\n" );
print( " Problem at line " + w.line + " character " + w.character + ": " + w.reason );
}
}
if ( found > 0 ) {
print( "\n" + found + " Error(s) found.\n" );
} else {
print( "JSLint check passed.\n" );
}

4256
build/lib/jshint.js Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff