JSLint で JavaScript コードの静的解析を行う

jslist コマンドのインストール

JSLint は Web サイト上 (https://jslint.com) でコードを張り付けて実行することができますが、普段の開発では jslint コマンドとして実行できるようにしておいた方が便利です。 多くのスクリプトエンジンによるラッパ実装がありますが、ここでは手軽な Node.js 版の node-jslist をインストールしてみます(あらかじめ Node.js をインストールして、npm コマンドを使えるようにしておく必要があります)。

jslint のインストール
$ npm install -g jslint

インストールが終わったら、動作確認します。

$ jslint --version
node-jslint version: 0.9.0-pre006  JSLint edition 2013-08-26

使い方は簡単で、以下のように解析対象の .js ファイルを指定するだけです。

$ jslint sample.js
$ jslint **/*.js  # カレントディレクトリ以下の全ての JS ファイルに対して実行

グローバルな変数や関数を参照するときのエラーを抑制する

jQuery の $ や、consoledocument などのグローバル変数(別のファイルで定義されている変数)を参照しようとすると、JSLint は未定義エラーと認識してしまいます。 グローバル変数を参照してもエラーにならないようにするには、global ディレクティブを使用します。 下記の例では、$console を参照できるようにしています。

/*global $: false, jQuery: false, console: false */

$(function () {
  'use strict';
  console.log('hello');
});

global というキーワードの前に、スペースを入れてはいけないことに注意してください。 各変数の後ろの、false という値は、そのグローバル変数に対して、このファイルからは代入を行っていないということを示しています。 複数の JavaScript ファイルからグローバル変数の値を変更することは、メンテナンス性を著しく下げることになるため、通常は上記のように false にしておくのがよいでしょう。