JavaScript > JSLintをRhinoで実行する方法

update 2011-12-24
広告
JavaScriptの静的コード解析ツールとして有名なJSLintを、Rhinoを利用して実行する方法を紹介します。
JSLintのウェブサイトに行けば、ブラウザ上でJSLintによるチェックを行えますが、いちいちコードをコピペするのは面倒です。シェル上でコマンド実行できれば、コピペの手間を省けます。
  • JSLintのサイト: http://www.jslint.com/
  • JSLintのダウンロードサイト: https://github.com/douglascrockford/JSLint
JSLintのダウンロードサイトから、JSLintをダウンロードしましょう。 ダウンロードして解凍すると、jslint.jsが生成されるはずです。
JSLintは、チェックするJavaScriptのソースコードを引数に取ります。つまり、「チェックしたいコードをJSLintに渡してやるコード」を、Rhinoで実行する必要があります。以下に、サンプルwrapper.jsを示します。
var MY_JSLINT_WRAPPER = {};

// ファイルを読み込んで、内容を返す。
MY_JSLINT_WRAPPER.read = function (filepath) {
    var data = readFile(filepath);
    return data;
};

// ファイルを読み込んでJSLintを実行する。
MY_JSLINT_WRAPPER.doJsLint = function (filepath) {
    var result = JSLINT(MY_JSLINT_WRAPPER.read(filepath));
    JSLINT.errors.forEach(function(e) {
			      print(e.line + ", " + e.character + ", " + e.reason + ", " + e.evidence);
			  });
};

if (arguments.length === 0) {
    print("Please specify javascript file!");
} else {
    MY_JSLINT_WRAPPER.doJsLint(arguments[0]);    
}
readFile関数は、Rhinoの関数です。ファイルの内容を読み込みます。 変数JSLINTは、jslint.js内で定義されています。なので、jslint.jsとwrapper.jsを連結します。
jslint-rhino$ cat jslint.js wrapper.js > myjslint.js
それでは、作成したmyjslint.jsで、以下のbad.jsをチェックしてみます。
function stupid(x) {
  y = x
}
bad.jsをチェックするコマンドは以下のとおりです。
jslint-rhino$ rhino myjslint.js bad.js 
2, 3, Missing 'use strict' statement.,   y = x
2, 3, Expected 'y' at column 5, not column 3.,   y = x
2, 3, 'y' was used before it was defined.,   y = x
2, 8, Expected ';' and instead saw '}'.,   y = x
ちゃんとチェックしてくれました!
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system