web-dev-qa-db-ja.com

1つのファイル内のすべての未定義変数を無視するようにJSHintに指示する方法は?

Karmaテストには、JSHintが不満を言っている(私のエディターに統合されている)多くのグローバル変数と関数があります。

この特定のファイル内の未定義の変数をすべて無視するようにJSHintに指示するにはどうすればよいですか? /* jshint undef: false */これらの警告をオフにしますが、そうではありません。

35
Dan Ross

グローバルについてJSHintに伝える正しい方法は、globalsディレクティブを使用することです。例えば:

/*globals globalFunction, anotherGlobal, oneMore */

これにより、JSHintがリストされた識別子のいずれかを検出したときに「{a} is not defined」という警告が表示されなくなります。

あるいは、そのファイルでall "not defined"警告を本当に無視し、JSHint 1.0.0以降を使用している場合は、その特定の警告を単にオフにすることができます。

/*jshint -W117 */
69
James Allardice

このルールを.jshintrcファイルに追加するだけです。

"-W117": true

これは、「*は定義されていません」という警告をすべて無視します。

7
Balasubramani M

今日の午後、jshintを使用してこの問題に遭遇しました。この次の修正は私のために働いた。 「グローバル」を使用する代わりに、「predef」を使用してみてください。例えば:

{
  /*
   * RELAXING OPTIONS
   * =================
   */

  // Suppress warnings about == null comparisons.
  "eqnull": true,

  "predef" : ["describe", "expect", "it", "inject", "beforeEach", "angular"]
}
7
zero_cool

このニーズに対処する方法としてjshint ignore:lineを使用していることに気付きました。

var usedVar; // jshint ignore:line

これによりjshintはこの条件の有用なチェックを継続できますが、これを追加するよりも特定の宣言を無視する明確な理由がある場合、問題に対処し、コードを見ている人にはすぐにわかる方法でそれを行います。

良い例(少なくとも私にとって)は、ES6の破壊を使用して、常に使用する場合と使用しない場合があるショートカットのセットを違法にする場合です。 Emberでは、typeOfcomputedなど、多くのメソッドを使用しています。常にEmber.computedを参照するよりも、単にcomputedを参照し、すべてのmy Emberオブジェクトの先頭に次のようなものを含める方がはるかに優れています。

 const { computed, $, A, run, on, typeOf, debug, get, set } = Ember;    // jshint ignore:line
6
ken