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 |
ArrayやDate など組み込みオブジェクトの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 についての警告停止このような比較の仕方は、変数が nullかundefinedであるかどうかをチェックするときには有用。 |
| 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 |
consoleやalertなどのデバッグ用ログの使用を指定たとえば、古いIEでは console.logがエラーを起こすので、製品版ではこれらを使わないのが良いだろう。 |
| dojo | Dojo Toolkit指定 |
| jquery | jQueryライブラリ使用指定 |
| mootools | Mootoolsフレームワーク使用指定 |
| node | Node環境での実行指定 |
| nonstandard | 非標準指定escapeやunescapeなどのグローバル関数が採用されていない。 |
| 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氏のコーディングスタイルに反したコードのチェック |
詳しくは、そして、より正確には、公式ドキュメントをご確認ください。