最新の JavaScript Lint をインストールする

JavaScript Lint (jsl) というツールがある。JavaScript の文法チェックをするツールだ。似たようなのに JSLint ってのがあるけど、そっちは Web アプリになっていて、オンラインで実行する。jsl の方はローカルにインストールして実行する。

で、以前僕の Ubuntu にインストールしたんだけど、だいぶ前のことだし(version 0.3.0)、もう新しいバージョンがあるはずだと思って探してみた。どうやら sourceforge でプロジェクト管理してるようだ。
http://sourceforge.net/projects/javascriptlint/
せっかくなので最新バージョンをソースからインストールしてみた。

環境

僕の環境は以下。

OS
Ubuntu 10.04
python
version 2.6.5

jsl は以前は C で書かれてたんだけど、いつの間にか python スクリプトになってた。

ソースコードを取得する

ソースコードsubversion で管理されてる。
http://sourceforge.net/scm/?type=svn&group_id=168518
そのページに書いてある通りチェックアウトする。

%  svn co https://javascriptlint.svn.sourceforge.net/svnroot/javascriptlint javascriptlint

結構大量にチェックアウトする。今回取ってきたリビジョンは 300。

チェックアウトしたら、最新版を使いたいので trunk に cd する。tags とかせこいもんいらないぜ、っていうひとは最初から trunk だけにしとけばいいと思う。

ビルド、インストールする

INSTALL ファイルに書いてある通りにインストールするんだけど、その前に準備。いろいろコンパイルするのに必要なものを先にインストールしておく。

% sudo apt-get install build-essential
% sudo apt-get install python-dev

1つ目の build-essential はコンパイルとかいろいろできるようになるパッケージ。2つ目の python-dev は python のヘッダファイルとかのパッケージ。これがないとビルドの時にエラーで失敗するので入れておこう。

で、いざインストール。

% python setup.py build
% sudo python setup.py install

/usr/local/bin/jsl ってのが実行ファイル本体。

起動

tests にテスト用ファイルがあるので、さっそく lint してみる。

% jsl tests/errors/syntax_error.js
JavaScript Lint
Developed by Matthias Miller (http://www.JavaScriptLint.com)
/home/mollifier/local/javascript/javascriptlint/src/trunk/tests/errors/syntax_error.js
/home/mollifier/local/javascript/javascriptlint/src/trunk/tests/errors/syntax_error.js(2): warning: syntax_error

0 error(s), 1 warnings(s)

うむうむ、ちゃんとできてる。

余計なメッセージを消すオプションはこんな感じ。

% jsl --nologo --nofilelisting --nosummary tests/errors/syntax_error.js
/home/mollifier/local/javascript/javascriptlint/src/trunk/tests/errors/syntax_error.js(2): warning: syntax_error

すっきり。

vim の設定

ついでに vim で開いてるファイルを jsl でチェックできるようにした。

まず ~/.vim/compiler/javascriptlint.vim にこんな感じに書いておく。

if exists("current_compiler")
    finish
endif

let current_compiler = "javascriptlint"

if exists(":CompilerSet") != 2
    command -nargs=* CompilerSet setlocal <args>
endif

let s:cpo_save = &cpo
set cpo-=C

CompilerSet makeprg=jsl\ --nologo\ --nofilelisting\ --nosummary\ %
CompilerSet errorformat=%f(%l):\ %m

let &cpo = s:cpo_save
unlet s:cpo_save

で、 ~/.vim/after/ftplugin/javascript.vim にこんな感じで書いておく。

compiler javascriptlint

if !exists('b:undo_ftplugin')
    let b:undo_ftplugin = ''
endif

let b:undo_ftplugin .= '
\ | setlocal makeprg<
\ | setlocal errorformat<
\'

これで vimJavaScript ファイル開いてるときに :make コマンドで jsl チェックができるようになる。便利。

なんか前とチェックの仕方が変わったような気がしてしっくりこないけど、新しい方がいいだろうということでこっちを使っていくことにする。