-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Warnings
Closure Compiler has a --warning_level
flag that gives you a few high-level options to control what warnings you see. The --warning_level
flag gives you an easy way to choose the most common options. But even --warning_level=VERBOSE
doesn't give you all the warnings that Closure Compiler can emit, and sometimes you want more fine-grained control.
Closure Compiler has an API for configuring the errors and warnings that you would like to see, and what level they're emitted at.
Flag API | Java API | Effect |
---|---|---|
--jscomp_error=<group> |
options.setWarningLevel("<group>", CheckLevel.ERROR); |
Makes all warnings of the given group to build-breaking error. |
--jscomp_warning=<group> |
options.setWarningLevel("<group>", CheckLevel.WARNING); |
Makes all warnings of the given group a non-breaking warning. |
--jscomp_off=<group> |
options.setWarningLevel("<group>", CheckLevel.OFF); |
Silences all warnings of the given group. |
In the examples above, <group>
is a pre-defined category of warnings.
The following table describes the available diagnostic groups, but may be out of date.
Additional information:
- Run the compiler with the --help flag to get a comprehensive up-to-date list.
- Read the @suppress annotation documentation to suppress a specific error in source code.
- Consult DiagnosticGroups.java.
Name | Effect | Default Value |
---|---|---|
accessControls | Warnings when @deprecated, @private, @protected, or @package are violated. | OFF |
ambiguousFunctionDecl | [DELETED in v20200101] Warnings about ambiguous definitions of functions. On Chrome, if (false) { function f() {} } declared 'f' in the global scope anyway. Future versions of javascript forbid this, because the actual semantics differ between browsers. |
ERROR |
checkDebuggerStatement | Warnings when the 'debugger' keyword is used. | OFF |
checkEventfulObjectDisposal | [DELETED in v20191111] Warnings about undisposed eventful objects. | OFF |
checkRegExp | Warnings about weird regular expression literals | OFF |
checkTypes | Type-checking | WARNING |
checkVars | Warnings when vars are not declared or declared multiple times in the global scope. | ERROR |
closureDepMethodUsageChecks | Warnings about misused goog.provide/goog.require calls | ERROR |
conformanceViolations | Warnings about conformance violations and possible conformance violations. | WARNING |
constantProperty | Warnings when a member property marked @const is reassigned. | OFF |
const | Warnings when a variable or member property marked @const is reassigned. | OFF |
deprecatedAnnotations | Warnings when using annotations that are deprecated | OFF |
deprecated | Warnings when non-deprecated code accesses code that's marked @deprecated | OFF |
duplicateMessage | Warnings when two i18n messages have the same id | ERROR |
duplicate | Warnings when a variable is declared twice in the global scope | ERROR |
es3 | [DELETED in v20200101] Warnings about EcmaScript3 | ERROR |
es5Strict | Warnings about EcmaScript5 strict mode. See here for how to turn these off. | ERROR |
externsValidation | Warnings about malformed externs files | WARNING |
extraRequire | Warnings about unnecessary goog.require calls | OFF |
fileoverviewTags | [DELETED in v20200101] Warnings about duplicate @fileoverview tags | WARNING |
globalThis | Warnings about improper use of the global this. | WARNING |
internetExplorerChecks | [DELETED in v20200101] Warnings about syntax error on Internet Explorer. | ERROR |
invalidCasts | Warnings about invalid type casts. | WARNING |
misplacedSuppress | Warnings about misplaced @suppress annotations | WARNING |
misplacedTypeAnnotation | Warnings about jsdoc type annotations that are misplaced | WARNING |
missingGetCssName | Warnings about strings that should only be used inside calls to goog.getCssName | OFF |
missingProperties | Warnings about whether a property will ever be defined on an object. Part of type-checking. | OFF |
missingProvide | Warnings if missing a goog.provide('Foo') when defining a Foo class | OFF |
missingRequire | Warnings if missing a goog.require('Foo') when a new Foo() is encountered | OFF |
missingReturn | Warnings if missing return in a function which a non-void return type | OFF |
newCheckTypes | [DELETED in v20200101] Warnings from new type checker | OFF |
nonStandardJsDocs | Warnings when JSDoc has annotations that the compiler thinks you misspelled. | WARNING |
reportUnknownTypes | Warnings for any place in the code where type is inferred to ?. NOT RECOMMENDED! | OFF |
strictCheckTypes | Combines strictMissingProperties and strictPrimitiveOperators
|
OFF |
strictMissingProperties | Warnings for missing properties that forbid accessing subclass props off superclasses | OFF |
strictModuleDepCheck | Warnings about all references potentially violating module dependencies | OFF |
strictPrimitiveOperators | Warnings about legal operand types for primitive operators like + and -
|
OFF |
suspiciousCode | Warning about things like missing semicolons and comparisons to NaN | WARNING |
tweakValidation | Warnings about goog.tweak primitives | OFF |
typeInvalidation | Warn about properties that cannot be disambiguated when using type based optimizations | OFF |
undefinedNames | Warnings when a property of a global name is not defined. | OFF |
undefinedVars | Warnings when a variable is never defined. | ERROR |
unknownDefines | Warnings when unknown @define values are specified. | WARNING |
unusedLocalVariables | Warnings about unused variables in local scopes | OFF |
unusedPrivateMembers | Warnings about @private class properties that are unused | OFF |
untranspilableFeatures | Warnings about use of features that cannot be transpiled down to the specified --language_out
|
ERROR |
useOfGoogBase | [DEPRECATED]Warnings about usages of goog.base, which is deleted from Closure library | OFF |
uselessCode | Warnings when the compiler sees useless code that it plans to remove. | WARNING |
violatedModuleDep | Warnings when there are references in earlier modules to variables defined in later modules | ERROR |
visibility | Warnings when @private and @protected are violated. | OFF |
If there is a category of warnings that you would like to configure but is not listed in the table above, it is easy to define a new one.
- Find the unique identifier of the warnings that you'd like to configure.
- Create a new DiagnosticGroup that gives this warning category a human-readable name, and add it to our central repository of warnings categories: https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/DiagnosticGroups.java
- Send us a patch!
This is how we "canary" new warnings until we feel they're stable.
You can also silence some warnings by adding JSDoc annotations to your code. See https://github.com/google/closure-compiler/wiki/@suppress-annotations for more details.