読者です 読者をやめる 読者になる 読者になる

ゆず日記

戦う Vimmer 兼 Dvorakユーザ 兼 Kinesisユーザ 兼 おぺらー が戦わないブログ

JSHintオプション一覧を纏めてみたお話。

JSHintオプション一覧

JSHint Options Reference を纏めてみた。(JSHint 2.5 現在)

ドキュメント化されてない隠しオプションも一部含みます。

制限系オプション

trueにするとチェックが厳しくなる

オプション名 default
bitwise true ビット演算子の禁止
camelcase false camelCase, UPPERASEの強制
curly true if, forのブロックスコープを必ず{}で括るよう強制
eqeqeq true 比較演算子は==, != ではなく===, !==を強制
forin true for...inループ内でhasOwnPropertyでのチェックを強制
immed false 括弧で括られていない無名関数の即時実行禁止 e.g. (function () { } ());
indent 4 インデント
latedef false var前の変数使用禁止 "nofunc"で関数は除外
maxcomplexity false 循環的複雑度 - Wikipedia の制限
maxdepth false 最大ネスト数の制限
maxerr 50 最大エラー数の制限
maxlen false 一行の長さ制限
maxparams false 関数の最大引数の制限
maxstatements false 関数ごとの最大行数の制限
newcap false コンストラクタ名は大文字に強制 e.g. new F()
noarg true arguments.caller and arguments.callee の使用禁止
noempty true 空ブロックの禁止
nonbsp true   の禁止
nonew false new の禁止
plusplus false ++, -- の禁止
quotmark false クォートの規定 true: どちらかに規定, false: 規定しない, "single", "double"
strict true use strict;の強制
trailing true 行末のホワイトスペース禁止
undef true 未定義変数の禁止
unused true 未使用変数を警告

許可系オプション

true にするとチェックが甘くなる

オプション名 default
asi false セミコロン抜けチェックの無効化
boss false ==を書くべき所に = が書いてないかチェック無効化
debug false debugger の許可
eqnull false == null の許可
es5 false ECMAscript 5 メソッド許可
esnext false ECMAScript 6 メソッド許可
evil false evalnew Function() の許可
expr false ExpressionStatement(式文) の許可
funcscope false 関数スコープチェックの無効化
globalstrict false グローバルな"use strict"許可
iterator false iteratorプロパティの許可
lastsemic false ワンライナーで書いた時の最後のセミコロン抜けチェックの無効化
laxbreak false 安全でない改行の許可
laxcomma false , を先に書くスタイルの許可
loopfunc false 関数の無限ループチェックの無効化
moz false FirefoxのJS1.7で追加されたメソッド許可 (有効時はesnextより優先される)
multistr false 改行を\でエスケープしていない複数行テキストのチェック無効化
proto false proto の許可
scripturl false javascript:...はじまりのURLの許可
shadow false 定義済み変数の再定義を許可
smarttabs false タブとスペースの混在許可
sub false 連想配列の厳密な呼び出し方チェックの無効化 e.g. person['name']とperson.name
supernew false new function () { ... };new Object; の許可
validthis false コンストラクタ関数以外の関数内でthis利用許可(strict modeの時のみ)

ライブラリ/フレームワークオプション

使用するライブラリ類をtrueにすると、そのライブラリで使用しているグローバル変数警告が出なくなる

オプション名 default
browser false ブラウザ (window, document, etc)
couch false CouchDB
devel false 開発, デバッグ用変数 (alert, confirm, etc)
dojo false Dojo Toolkit
jquery false jQuery
mootools false MooTools
node false Node.js
nonstandard false 非推奨のグローバル変数(escape, unescape, etc)
phantom false PhantomJS
prototypejs false Prototype.js
rhino false Rhino
worker false Web Workers
wsh false Windows Scripting Host
yui false Yahoo User Interface

レガシー

将来的に削除予定のオプション

オプション名 default
nomen false 末尾が`の変数名を禁止
onevar false 変数宣言を関数の最初に書くことの強制
passfail false 警告があった時点でJSHintを止める
white false Douglas Crockford氏のJavaScriptコーディングスタイルになってるかチェック

グローバル変数の追加オプション

オプション名 default
globals {} {}内にグローバル変数を定義できる. e.g. "globals": {"AjaxZip3":false}

設定例

.jshintrc として上記設定をjson形式で保存し、好きな所に配置する。 .jshintrc の利用される順序は、

  1. カレントディレクトリにある.jshintrc
  2. 親ディレクトリにある.jshintrc、なければ親の親ディレクトリにある.jshintrc、なければ親の親の親の(以下略)
  3. $HOME/.jshintrc

となっている。

{
  "maxerr"        : 50,

  // Enforcing
  "bitwise"       : true,
  "camelcase"     : false,
  "curly"         : true,
  "eqeqeq"        : true,

  // Custom Globals
  "globals"       : {"CKEDITOR": false, "jQuery": false}

}

公式のサンプルはこちらにあるよ jshint/.jshintrc at master · jshint/jshint · GitHub