From xradiograph

JavaScript: JS Lint

JS Lint - javascript error-checker



jslint considered harmful?


more notes on JSLint and SpiderMonkey with comparisons to Rhino usage


Stack Overflow: questions containing JSLint



See also: jsHint - a fork that has more options to turn things off.



Command-line jslint

Ian Bicking’s jslint from the command-line - requires Spider Monkey


Cory Bennett adapts Bicking at more command line JSLint and via extra Perl, and provides some emacs integration (in the compile-mode); this is the version I’m working with. Has an unfortunate tendency to run well past the end of the file, generate verbose errors.


A lot of the options are settable, but not every online option is available (such as “maxerrors” -- see for the full super-set.


jslint [options] <filename>.js


EmacsW32 integration

Cory Bennett’s notes presume the use of Linux; I’m on Windows with Cygwin, where my jslint runs mostly (why? I can’t quite recall -- becuase I could shebang a script named “jslint” without an extension of “.pl”???)


Integrating this into the emacs-sytem, Cygwin isn’t called, so the compilation-mode hook needs to change from just “/path/to/jslint” to “perl /path/to/jslint”


I also added in --laxbreak


note that not all of the errors are recognized by the compilation-mode buffer (see below). But those that do--ah! convenience!!!


(add-hook 'javascript-mode-hook
  (lambda ()
    ;;; make emacs recognize the error format produced by jslint
    (set (make-local-variable 'compilation-error-regexp-alist)
       '(("^\\([a-zA-Z.0-9_/-]+\\):\\([0-9]+\\):\\([0-9]+\\)" 1 2 3)))
    (set (make-local-variable 'compile-command)
       (let ((file (file-name-nondirectory buffer-file-name)))
          (concat "perl c:/cygwin/bin/jslint " file)))))

;; for resets
;;(set 'javascript-mode-hook nil)



non-recognized errors

my Compile-mode isn’t highlightinh/recognizing all of the error-lines; The regex seems to work just fine when I do a search-forward-regexp - it matches everything, even the non-highlighted items; it’s not particular types of errors -- some are marked, some aren’t.



Also added the below, to get rid of the escapement above (not actually the source of the errors, but so visually distracting that I though they were)

$output =~ s/&lt;/</g;
$output =~ s/&gt;/>/g;



getting it working in CygWin

See Spider Monkey notes for build
then, smjs didn’t exist, and line 73 of jslint wouldn’t execute without it


so I changed

for my $bin ( qw(smjs js) ) {



for my $bin ( qw(js) ) {




Additionally, jslintrun.js line 55 had troubles with null lines???

if (line.length === 0) {


changed to

if (!line || line.length === 0) {



Silly notes (things I forget)

c:/cygwin/bin/jslint - Perl wrapper for jslintrun
c:/cygwin/usr/share/pjslint/jslintrun.js - JavaScript wrapper for fulljslint

.jslint (options) file goes into the $HOME directory which in my case is C:/Emacs (since that came before cygwin)



See Also

Spider Monkey
Perl.Command Line Wild Card - was needed for some step in the above, that runs with Perl....
Unit Testing




JavaScript errorChecking qa perl tests testing emacs

Retrieved from
Page last modified on February 23, 2011, at 08:59 AM