JSHintのoption一覧

  • 61
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

JSHintのオプションをざっくりと日本語訳しました。(2013年11月28日現在)
責任は持ちません。誤訳等があればぜひご指摘ください。
正確な情報は公式ドキュメントを参照してください。

JSHintのオプション

これは、JSHintの設定オプションの全リストです。
(ただしこの日本語訳は公式なものではありません。)

強制オプション

これらを設定すると、警告が増える。

options 説明
bitwise ビット演算子の使用禁止
ビット演算子は^など。ビット演算子はJavaScriptではとても稀であって、&はたいてい&&の単なる書き間違いである。
camelcase キャメルケース (camelCase)、もしくはアンダースコア付きアッパーケース (UPPER_CASE) の使用強制
curly 波括弧の強制
JavaScriptでは中身が一文の場合は波括弧の省略が可能。しかしながら、バグを導きかねない。
eqeqeq 同値演算子=== !==に替えての等値演算子== !=の使用を禁止
es3 ECMAScript 3の仕様に準拠する必要がある場合に設定
IE 6/7/8/9 などのレガシーな実行環境に対応する必要がある場合に使用する。
forin for in ループ内でのプロパティチェックを強制
for in ループ内で、ループさせるオブジェクトのプロパティについて、hasOwnProperty()を使ってフィルターすることを必須とする。for inループではプロトタイプチェーンで継承したプロパティ名も回すので、意図しないプロパティが渡されるおそれがあるため。
freeze ArrayDate など組み込みオブジェクトのprototypeオブジェクトの上書き禁止
immed 即時関数の括弧強制
即時関数を括弧で囲むことで、その記述が関数そのものではなく関数の結果が与えられるのだということを読み手が理解できる。
indent タブインデントの強制
latedef 定義前変数の使用禁止
JavaScriptでは関数内のスコープしかなく、変数は(関数内のどこで定義しても)関数内の先頭で巻き上げられるが、変数はいつも定義したあとに使用する方が安全である。
newcap コンストラクタ関数の先頭大文字強制
noarg arguments.callerおよびarguments.calleeの使用禁止
どちらも将来的なバージョンでは非推奨。ECMAScript5のstrict mode では禁止されている。
noempty 空ブロックの警告
JSHintではもともと空ブロックに警告を出していたが、オプションとした。空ブロックがあるためにコードの実行が停止されてしまうという報告はない。
nonew 代入しないコンストラクタ関数の使用禁止
new演算子で呼び出したコンストラクタ関数の返り値を変数に代入しない使い方がある。
new MyConstructor();
しかし、どこにも使われないのにnewで呼び出す必要はなく、単純にコンストラクタ関数を実行すればいい。
plusplus インクリメント演算子++、デクリメント演算子--の使用禁止
quotmark クオテーション統一
設定値は3種類。
"single" : シングルクオテーションに統一
"double" : ダブルクオテーションに統一
true : いずれかのクオテーションに統一
undef 宣言していない変数の使用禁止
unused 使用していない変数について警告する
strict ECMAScript5 の strict mode 強制
trailing 行末の余分な空白エラー
maxparams 関数の引数の最大数を指定
maxdepth 入れ子の深さの最大値を指定
maxstatements 関数内の文の最大数を指定
maxcomplexity 循環的複雑度の最大値を指定
プログラムソースコードの線形的に独立した経路の数を数える。詳しくはWikipedia 循環的複雑度
maxlen 一行の最大の長さを指定

緩和オプション

これらのオプションで警告を減らせる。

options 説明
asi セミコロンの付け忘れについての警告停止
boss 比較演算子==の代入演算子=への書き間違えについての警告停止
よくあるのは、if( a = 10 ) {}みたいなコードだ。ただし、このような書き方は以下のような場合には有用である。
for (var i = 0, person; person = people[i]; i++) {}
以下のように、括弧で囲ってやることでエラーを避けることができる。
for (var i = 0, person; (person = people[i]); i++) {}
debug debugger文についての警告停止
eqnull == nullについての警告停止
このような比較の仕方は、変数がnullundefinedであるかどうかをチェックするときには有用。
esnext ECMAScript6仕様の構文を使用しているときに設定
ただし、最終決定されていないので、全てのブラウザで対応しているわけではないことに注意。
evil evalの使用についての警告停止
expr 式の中での代入もしくは関数呼出しについての警告停止
大抵の場合は誤記であるが、仕様としては禁止されておらず、そのためこの警告はオプションである。
funcscope 外側からアクセス可能な構造内部での変数宣言についての警告停止
JavaScrptにはグローバルと関数の2つのスコープしかないが、このことは新規習得者にとっての混乱と見つけづらいバグをもたらす。そのため、JSHintでは意図したであろうスコープ外で使われる変数について、(初期設定で)警告を出すようにしている。
globalstrict グローバルでのstrict mode使用についての警告停止
グローバルでのstrict modeは、サードパーティ製のウィジェットを機能停止にしてしまうおそれがあるので、非推奨である。
iterator __iterator__プロパティについての警告停止
このプロパティは全てのブラウザでサポートされているわけではないので、使用には注意を要する。
lastsemic 一行の最後の文でのセミコロン忘れを除き、セミコロン漏れの警告停止
var name = (function() { return 'Anton' }());
自動コード生成機能を使うときに有効な、ニッチな場合である。
laxbreak 安全とは言えない改行についての警告停止
ただし行頭カンマのコーディングスタイルについての警告は停止しない。それは次のlaxcommaを使用のこと。
laxcomma 行頭カンマについての警告停止
loopfunc ループ内関数についての警告停止
moz MozillaのJavaScript エクステンションを使用するときに設定
multistr 複数行文字列についての警告停止
複数行文字列は、エスケープ文字と次の行との間に誤ってスペースを挿入したりするととても混乱するので危険である。
notypeof typeof演算子の無効な値についての警告停止
この演算子は限られた値しか返さないので、JSHintでは初期設定で、無効な値(fuction)と比較している場合には警告を行う。
proto __proto__`プロパティについての警告停止
scripturl スクリプト向けURL(こんなのjavascript:...)の使用についての警告停止
smarttabs タブとスペースの混在についての警告停止
shadow 変数隠しについての警告停止
外のスコープですでに宣言されている変数を宣言することで、変数を隠すことができる。
sub ドット演算子で記述可能な箇所でのブラケット演算子[]の使用についての警告停止
supernew 「幽霊 (wierd)」コンストラクタについての警告停止
new function () { ... }とかnew Object;のこと。
validthis strict mode時のコンストラクタでない関数でthisを使用するという厳密には違反になるコードについての警告停止

環境に関するオプション

組み込まれているグローバル変数を指定するオプション。

options 説明
browser モダンブラウザ指定
couch CouchDB指定
devel consolealertなどのデバッグ用ログの使用を指定
たとえば、古いIEではconsole.logがエラーを起こすので、製品版ではこれらを使わないのが良いだろう。
dojo Dojo Toolkit指定
jquery jQueryライブラリ使用指定
mootools Mootoolsフレームワーク使用指定
node Node環境での実行指定
nonstandard 非標準指定
escapeunescapeなどのグローバル関数が採用されていない。
phantom PhantomJS環境での実行指定
prototypejs Prototypeフレームワーク使用指定
rhino Rhino環境での実行指定
worker Web Worker環境での実行指定
wsh Windows Script Hostでの実行指定
yui YUIフレームワーク使用指定

レガシーなオプション

これらのオプションは非推奨で、削除される予定。使わないこと。

options 説明
nomen 末尾に_を付与した変数の不許可
なぜ必要なのか分からない。
onevar var文を一つにまとめることの許可
関数内の先頭でvar文を一行にまとめるのが可読性向上になるという考え方がある。
passfail 最初のエラーもしくは警告でJSHintを停止
white Douglas Crockford氏のコーディングスタイルに反したコードのチェック

詳しくは、そして、より正確には、公式ドキュメントをご確認ください。