かなり大きな Closure プロジェクトで外部ライブラリ (Phonegap) を使用しています。残念ながら、Phonegap は大量のコンパイラ警告を生成します (すべて「これの危険な使用」)。コンパイラの出力を検索して、自分のコードに関する警告を探すのはかなり面倒です。
1 つのファイルからの警告だけを黙らせる方法はありますか?
かなり大きな Closure プロジェクトで外部ライブラリ (Phonegap) を使用しています。残念ながら、Phonegap は大量のコンパイラ警告を生成します (すべて「これの危険な使用」)。コンパイラの出力を検索して、自分のコードに関する警告を探すのはかなり面倒です。
1 つのファイルからの警告だけを黙らせる方法はありますか?
VERBOSE または checkTypes を使用している場合は、型の警告を意味していると思います。
以下を任意のファイルに入れます。
/**
* @fileoverview
* @suppress {checkTypes}
*/
そのファイルのみの型チェックをオフにします。@suppress
他にも多くのことができます。詳細については、Closure Compiler のドキュメントを参照してください。
ただし、「これを危険に使用する」という警告について話している場合は、無視しないでください。それらは次の場所を指します。
例えば:
foo.bar.hello = "Hello World!";
foo.bar.baz = function() {
alert(this.hello);
};
foo.bar.baz(); // this --> foo.bar
"alert" ステートメントは、"dangerous use of this" というコンパイラ警告によってフラグが立てられます。なんで?コンパイラが "foo.bar" 名前空間を平坦化する場合:
$foo$bar$hello$ = "Hello World!";
$foo$bar$baz$ = function() { alert(this.$hello$); }
$foo$bar$baz$(); // this --> window
ここで名前を変更するデバッグ変数を使用していることに注意してください。実際には、"$foo$bar$baz" は単に "a" にリネームされるかもしれません。
foo.bar.baz()
"this" は "foo.bar" を参照するのではなく、グローバル オブジェクトを参照するため、 の呼び出しが失敗することがすぐにわかります。あなたのコードは大きなCRANK と共にクラッシュします!
さて、「これ」の使い方でOKな場合もあります。たとえば、イベント ハンドラーで。「this」は、そのイベントを発生させた DOM ノードを自動的に指します。
このような場合、次のタイプの JsDoc ディレクティブを使用する必要があります。
/** @this {Node} */
コンパイラをシャットダウンするために、「this」に期待される型を指定します。
ClosureCompiler.jar で使用できる --warning_level オプションが必要です。
VERBOSE、QUIET、DEFAULT はオプションです。
PhoneGap は QUIET とは別にコンパイルする必要があります。