Running jslint against many files in the Windows CLI
As much as I like some of the newer dojo-friendly Eclipse-based JavaScript+HTML+CSS IDEs like Aptana and Eclipse ATF, they all seem to barf on my JavaScript+JSP+JSTL+Portlet taglib source. Using the web-based JSLint JavaScript Verifier directly definitely works better, but there's only so many times I'm willing to copy and paste code into a browser when hunting down problems. There are some folks that have talked about validating within Ant builds but my development team is on a pre-1.6 copy of Ant which makes putting the pieces together a bit troublesome. It's pretty straightforward to run JSLint from the command line with Rhino but it's not well suited to running against a directory of files at once.
After some messing around with Windows XP batch files I got a useful little utility working. Once you download Rhino into a RHINO_HOME
directory along with a copy of jslint.js
, you can use this little batch file to run JSLint against many files at the same time:
@echo off rem Windows batch file to run jslint on a collection of JavaScript files rem see http://agentzlerich.blogspot.com/2007/07/running-jslint-against-many-files-in.html rem for original post rem To use, download Rhino from http://www.mozilla.org/rhino/ rem and uncompress it in a folder. Set RHINO_HOME environment rem variable to point to the folder. Download JavaScript Lint (jslint) rem from http://www.jslint.com/rhino/index.html and place it into rem RHINO_HOME. Ensure JAVA_HOME points to your JRE if "%RHINO_HOME%"=="" goto rhinoHomeNotSet if "%JAVA_HOME%"=="" goto javaHomeNotSet if "%1"=="" goto noJavaScriptFilesSpecified rem N.B. next line is wrapped! for %%f in (%*) do echo. & echo Processing %%f & "%JAVA_HOME%\bin\java" -classpath "%RHINO_HOME%\js.jar" org.mozilla.javascript.tools.shell.Main "%RHINO_HOME%\jslint.js" %%f exit /b %ERRORLEVEL%; :noJavaScriptFilesSpecified echo No JavaScript files were specified as parameters. Exiting. exit /b 0 :rhinoHomeNotSet echo Variable RHINO_HOME is not set! Aborting. exit /b 1 :javaHomeNotSet echo Variable JAVA_HOME is not set! Aborting. exit /b 1
2 comments:
Aptana actually uses the JSLint you are referring to, and under Rhino as well.
You might want to post your issue to our bug database at http://www.aptana.com/trac so we can check it out.
Thanks.
The Aptana highlighting problems I usually hit are because my JavaScript source uses JSTL and portlet taglib constructs like <portlet:namespace/> and <fmt:message/> which do nasty things to JSLint. Our particular application also doesn't add dojo libraries into our WAR module until the late stages of our build. Both situations together fall enough outside Aptana usecases that its Eclipse validators get about 30% of the way through a JSP file before dying.
I don't mean the post as a complaint about JSLint+Rhino inside Aptana (which does work very well). I've clarified the "barfing" line to include that I'm using JSPs and portlet tags.
Thank you for the feedback.
Post a Comment