игнорировать предупреждение компилятора из одного файла в Google Closure - PullRequest
6 голосов
/ 25 марта 2011

Я использую внешнюю библиотеку (PhoneGap) в довольно большом проекте Closure. К сожалению, PhoneGap генерирует тонну предупреждений компилятора (все это «опасное использование»). Достаточно того, что это делает поиск в выходных данных компилятора для предупреждения о моем собственном коде довольно раздражающим.

Есть ли способ заставить замолчать только предупреждения из одного файла?

Ответы [ 2 ]

8 голосов
/ 26 марта 2011

Полагаю, вы имеете в виду предупреждения о типах, когда используете VERBOSE или checkTypes.

Поместите в любой файл следующее:

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

чтобы отключить проверку типа только для этого файла . Вы можете @suppress и многое другое. Прочитайте документацию по Closure Compiler для получения более подробной информации.

Опасное использование «этого» * ​​1011 * Однако, если вы говорите об «опасном использовании этого» предупреждения, НЕ игнорируйте их. Они ссылаются на места, где: У вас есть пространство имен Вы определили функцию в этом пространстве имен Вы используете «this» внутри этой функции - и это может относиться к пространству имен Это пространство имен может быть сплющено компилятором Например: foo.bar.hello = "Hello World!"; foo.bar.baz = function() { alert(this.hello); }; foo.bar.baz(); // this --> foo.bar Статус "alert" будет помечен предупреждением компилятора о "опасном использовании этого". Зачем? Помните, если компилятор выравнивает пространство имен "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», но относится к глобальному объекту. Ваш код вылетит с громким ЗАДВИЖКОМ! Исключительные случаи, когда "это" в порядке

Теперь есть случаи, когда использование "this" в порядке. Например, в обработчиках событий. «this» автоматически указывает на узел DOM, вызвавший это событие.

В этих случаях вам необходимо использовать директиву JsDoc следующего типа:

/** @this {Node} */

, чтобы указать ожидаемый тип для this для закрытия компилятора.

2 голосов
/ 25 марта 2011

Должен быть параметр --warning_level, который вы можете использовать с ClosureCompiler.jar

VERBOSE, QUIET, DEFAULT - опции.

Вы должны скомпилировать PhoneGap отдельно с помощью QUIET.

...