簡體   English   中英

忽略Google Closure中一個文件的編譯器警告

[英]ignore compiler warning from one file in Google Closure

我在一個相當大的Closure項目中使用外部庫(Phonegap)。 不幸的是,Phonegap生成了一個噸編譯器警告(所有“危險使用此”)。 足夠它使搜索編譯器輸出警告我自己的代碼非常煩人。

有沒有辦法讓一個文件中的警告靜音?

我猜你的意思是在使用VERBOSE或checkTypes時鍵入警告。

將以下內容放入任何文件中:

/**
 * @fileoverview
 * @suppress {checkTypes}
 */

關閉該文件的類型檢查。 你也可以@suppress許多其他的東西。 閱讀Closure Compiler文檔以獲取更多詳細信息。

危險使用“這個”

但是,如果您正在談論“危險使用此”警告,請不要忽視它們。 他們指的地方:

  1. 你有一個命名空間
  2. 您在該命名空間中定義了一個函數
  3. 你在該函數中使用“this” - 這可以引用命名空間
  4. 該命名空間可能會被編譯器弄平

例如:

foo.bar.hello = "Hello World!";
foo.bar.baz = function() {
   alert(this.hello);
};
foo.bar.baz();    // this --> foo.bar

“警報”聲明將由編譯器警告“危險使用此”進行標記。 為什么? 請記住,如果編譯器展 “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而崩潰

“這個”沒問題的例外情況

現在,有些情況下使用“this”即可。 例如,在事件處理程序中。 “this”將自動指向引發該事件的DOM節點。

在這些情況下,您需要使用以下類型的JsDoc指令:

/** @this {Node} */

指定“this”的預期類型以關閉編譯器。

應該有一個可以與ClosureCompiler.jar一起使用的--warning_level選項

VERBOSE,QUIET,DEFAULT是選項。

您應該使用QUIET單獨編譯PhoneGap。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM