My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
/*
* Copyright 2008 The Closure Compiler Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.google.javascript.jscomp;

import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;

import java.util.Map;

/**
* Named groups of DiagnosticTypes exposed by Compiler.
* @author nicksantos@google.com (Nick Santos)
*/
public class DiagnosticGroups {
static final DiagnosticType UNUSED =
DiagnosticType.warning("JSC_UNUSED", "{0}");

public DiagnosticGroups() {}

private final static Map<String, DiagnosticGroup> groupsByName =
Maps.newHashMap();

static DiagnosticGroup registerDeprecatedGroup(String name) {
return registerGroup(name, new DiagnosticGroup(name, UNUSED));
}

static DiagnosticGroup registerGroup(String name,
DiagnosticGroup group) {
groupsByName.put(name, group);
return group;
}

static DiagnosticGroup registerGroup(String name,
DiagnosticType ... types) {
DiagnosticGroup group = new DiagnosticGroup(name, types);
groupsByName.put(name, group);
return group;
}

static DiagnosticGroup registerGroup(String name,
DiagnosticGroup ... groups) {
DiagnosticGroup group = new DiagnosticGroup(name, groups);
groupsByName.put(name, group);
return group;
}

/** Get the registered diagnostic groups, indexed by name. */
protected Map<String, DiagnosticGroup> getRegisteredGroups() {
return ImmutableMap.copyOf(groupsByName);
}

/** Find the diagnostic group registered under the given name. */
public DiagnosticGroup forName(String name) {
return groupsByName.get(name);
}

// A bit of a hack to display the available groups on the command-line.
// New groups should be added to this list if they are public and should
// be listed on the command-line as an available option.
//
// If a group is suppressible on a per-file basis, it should be added
// to parser/ParserConfig.properties
static final String DIAGNOSTIC_GROUP_NAMES =
"accessControls, ambiguousFunctionDecl, checkRegExp, " +
"checkTypes, checkVars, constantProperty, deprecated, " +
"duplicateMessage, " +
"es5Strict, externsValidation, fileoverviewTags, globalThis, " +
"internetExplorerChecks, invalidCasts, missingProperties, " +
"nonStandardJsDocs, strictModuleDepCheck, typeInvalidation, " +
"undefinedNames, undefinedVars, unknownDefines, uselessCode, " +
"visibility";

public static DiagnosticGroup GLOBAL_THIS =
DiagnosticGroups.registerGroup("globalThis",
CheckGlobalThis.GLOBAL_THIS);

public static DiagnosticGroup DEPRECATED =
DiagnosticGroups.registerGroup("deprecated",
CheckAccessControls.DEPRECATED_NAME,
CheckAccessControls.DEPRECATED_NAME_REASON,
CheckAccessControls.DEPRECATED_PROP,
CheckAccessControls.DEPRECATED_PROP_REASON,
CheckAccessControls.DEPRECATED_CLASS,
CheckAccessControls.DEPRECATED_CLASS_REASON);

public static DiagnosticGroup VISIBILITY =
DiagnosticGroups.registerGroup("visibility",
CheckAccessControls.BAD_PRIVATE_GLOBAL_ACCESS,
CheckAccessControls.BAD_PRIVATE_PROPERTY_ACCESS,
CheckAccessControls.BAD_PROTECTED_PROPERTY_ACCESS,
CheckAccessControls.PRIVATE_OVERRIDE,
CheckAccessControls.VISIBILITY_MISMATCH);

public static DiagnosticGroup CONSTANT_PROPERTY =
DiagnosticGroups.registerGroup("constantProperty",
CheckAccessControls.CONST_PROPERTY_DELETED,
CheckAccessControls.CONST_PROPERTY_REASSIGNED_VALUE);

public static DiagnosticGroup NON_STANDARD_JSDOC =
DiagnosticGroups.registerGroup("nonStandardJsDocs",
RhinoErrorReporter.BAD_JSDOC_ANNOTATION);

public static DiagnosticGroup ACCESS_CONTROLS =
DiagnosticGroups.registerGroup("accessControls",
DEPRECATED, VISIBILITY);

public static DiagnosticGroup INVALID_CASTS =
DiagnosticGroups.registerGroup("invalidCasts",
TypeValidator.INVALID_CAST);

public static DiagnosticGroup FILEOVERVIEW_JSDOC =
DiagnosticGroups.registerDeprecatedGroup("fileoverviewTags");

public static DiagnosticGroup STRICT_MODULE_DEP_CHECK =
DiagnosticGroups.registerGroup("strictModuleDepCheck",
VarCheck.STRICT_MODULE_DEP_ERROR,
CheckGlobalNames.STRICT_MODULE_DEP_QNAME);

public static DiagnosticGroup EXTERNS_VALIDATION =
DiagnosticGroups.registerGroup("externsValidation",
VarCheck.NAME_REFERENCE_IN_EXTERNS_ERROR,
VarCheck.UNDEFINED_EXTERN_VAR_ERROR);

public static DiagnosticGroup AMBIGUOUS_FUNCTION_DECL =
DiagnosticGroups.registerGroup("ambiguousFunctionDecl",
VariableReferenceCheck.AMBIGUOUS_FUNCTION_DECL);

public static DiagnosticGroup UNKNOWN_DEFINES =
DiagnosticGroups.registerGroup("unknownDefines",
ProcessDefines.UNKNOWN_DEFINE_WARNING);

public static DiagnosticGroup TWEAKS =
DiagnosticGroups.registerGroup("tweakValidation",
ProcessTweaks.INVALID_TWEAK_DEFAULT_VALUE_WARNING,
ProcessTweaks.TWEAK_WRONG_GETTER_TYPE_WARNING,
ProcessTweaks.UNKNOWN_TWEAK_WARNING);

public static DiagnosticGroup MISSING_PROPERTIES =
DiagnosticGroups.registerGroup("missingProperties",
TypeCheck.INEXISTENT_PROPERTY);

// TODO: add more IE specific checks here.
public static DiagnosticGroup INTERNET_EXPLORER_CHECKS =
DiagnosticGroups.registerGroup("internetExplorerChecks",
RhinoErrorReporter.TRAILING_COMMA);

public static DiagnosticGroup UNDEFINED_VARIABLES =
DiagnosticGroups.registerGroup("undefinedVars",
VarCheck.UNDEFINED_VAR_ERROR);

public static DiagnosticGroup UNDEFINED_NAMES =
DiagnosticGroups.registerGroup("undefinedNames",
CheckGlobalNames.UNDEFINED_NAME_WARNING);

public static DiagnosticGroup DEBUGGER_STATEMENT_PRESENT =
DiagnosticGroups.registerGroup("checkDebuggerStatement",
CheckDebuggerStatement.DEBUGGER_STATEMENT_PRESENT);

public static DiagnosticGroup CHECK_REGEXP =
DiagnosticGroups.registerGroup("checkRegExp",
CheckRegExp.REGEXP_REFERENCE,
CheckRegExp.MALFORMED_REGEXP);

public static DiagnosticGroup CHECK_TYPES =
DiagnosticGroups.registerGroup("checkTypes",
TypeValidator.ALL_DIAGNOSTICS,
TypeCheck.ALL_DIAGNOSTICS);

public static DiagnosticGroup CHECK_VARIABLES =
DiagnosticGroups.registerGroup("checkVars",
VarCheck.UNDEFINED_VAR_ERROR,
SyntacticScopeCreator.VAR_MULTIPLY_DECLARED_ERROR);

public static DiagnosticGroup CHECK_USELESS_CODE =
DiagnosticGroups.registerGroup("uselessCode",
CheckSideEffects.USELESS_CODE_ERROR,
CheckUnreachableCode.UNREACHABLE_CODE);

public static DiagnosticGroup CONST =
DiagnosticGroups.registerGroup("const",
CheckAccessControls.CONST_PROPERTY_DELETED,
CheckAccessControls.CONST_PROPERTY_REASSIGNED_VALUE,
ConstCheck.CONST_REASSIGNED_VALUE_ERROR);

public static DiagnosticGroup TYPE_INVALIDATION =
DiagnosticGroups.registerGroup("typeInvalidation",
DisambiguateProperties.Warnings.INVALIDATION);

public static DiagnosticGroup DUPLICATE_VARS =
DiagnosticGroups.registerGroup("duplicate",
SyntacticScopeCreator.VAR_MULTIPLY_DECLARED_ERROR,
TypeValidator.DUP_VAR_DECLARATION);

public static DiagnosticGroup ES5_STRICT =
DiagnosticGroups.registerGroup("es5Strict",
ControlStructureCheck.USE_OF_WITH,
StrictModeCheck.UNKNOWN_VARIABLE,
StrictModeCheck.EVAL_DECLARATION,
StrictModeCheck.EVAL_ASSIGNMENT,
StrictModeCheck.ARGUMENTS_DECLARATION,
StrictModeCheck.ARGUMENTS_ASSIGNMENT,
StrictModeCheck.DELETE_VARIABLE,
StrictModeCheck.DUPLICATE_OBJECT_KEY);

public static DiagnosticGroup CHECK_PROVIDES =
DiagnosticGroups.registerGroup("checkProvides",
CheckProvides.MISSING_PROVIDE_WARNING);

public static DiagnosticGroup DUPLICATE_MESSAGE =
DiagnosticGroups.registerGroup("duplicateMessage",
JsMessageVisitor.MESSAGE_DUPLICATE_KEY);

/**
* Adds warning levels by name.
*/
void setWarningLevel(CompilerOptions options,
String name, CheckLevel level) {
DiagnosticGroup group = forName(name);
Preconditions.checkNotNull(group, "No warning class for name: %s", name);
options.setWarningLevel(group, level);
}
}

Change log

r1979 by johnl...@google.com on May 18, 2012   Diff
Fix various typos, spelling and grammar
errors.
Fixes  issue 734 .
Contributed by Robert Gust Bardon

R=nicksantos


Revision created by MOE tool
push_codebase.
MOE_MIGRATION=4827
Go to: 
Project members, sign in to write a code review

Older revisions

r1957 by nicksan...@google.com on May 7, 2012   Diff
Remove duplicate fileoverview check.
I've never found this useful. More
often than not, i have to just
suppress it for -bundle files.
...
r1804 by nicksan...@google.com on Mar 1, 2012   Diff
Customize which warnings are used in
the ant task
Contributed by jamesots
Fixes  issue 640 
...
r1774 by pdo...@google.com on Feb 10, 2012   Diff
Add support for @suppress
{undefinedNames}.

R=nicksantos
...
All revisions of this file

File info

Size: 9099 bytes, 237 lines
Powered by Google Project Hosting