Home | History | Annotate | Download | only in closure_linter
      1 #!/usr/bin/env python
      2 #
      3 # Copyright 2007 The Closure Linter Authors. All Rights Reserved.
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS-IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 
     17 """Error codes for JavaScript style checker."""
     18 
     19 __author__ = ('robbyw (at] google.com (Robert Walker)',
     20               'ajp (at] google.com (Andy Perelson)')
     21 
     22 
     23 def ByName(name):
     24   """Get the error code for the given error name.
     25 
     26   Args:
     27     name: The name of the error
     28 
     29   Returns:
     30     The error code
     31   """
     32   return globals()[name]
     33 
     34 
     35 # "File-fatal" errors - these errors stop further parsing of a single file
     36 FILE_NOT_FOUND = -1
     37 FILE_DOES_NOT_PARSE = -2
     38 
     39 # Spacing
     40 EXTRA_SPACE = 1
     41 MISSING_SPACE = 2
     42 EXTRA_LINE = 3
     43 MISSING_LINE = 4
     44 ILLEGAL_TAB = 5
     45 WRONG_INDENTATION = 6
     46 WRONG_BLANK_LINE_COUNT = 7
     47 
     48 # Semicolons
     49 MISSING_SEMICOLON = 10
     50 MISSING_SEMICOLON_AFTER_FUNCTION = 11
     51 ILLEGAL_SEMICOLON_AFTER_FUNCTION = 12
     52 REDUNDANT_SEMICOLON = 13
     53 
     54 # Miscellaneous
     55 ILLEGAL_PROTOTYPE_MEMBER_VALUE = 100
     56 LINE_TOO_LONG = 110
     57 LINE_STARTS_WITH_OPERATOR = 120
     58 COMMA_AT_END_OF_LITERAL = 121
     59 MULTI_LINE_STRING = 130
     60 UNNECESSARY_DOUBLE_QUOTED_STRING = 131
     61 UNUSED_PRIVATE_MEMBER = 132
     62 
     63 # Requires, provides
     64 GOOG_REQUIRES_NOT_ALPHABETIZED = 140
     65 GOOG_PROVIDES_NOT_ALPHABETIZED = 141
     66 MISSING_GOOG_REQUIRE = 142
     67 MISSING_GOOG_PROVIDE = 143
     68 EXTRA_GOOG_REQUIRE = 144
     69 EXTRA_GOOG_PROVIDE = 145
     70 
     71 # JsDoc
     72 INVALID_JSDOC_TAG = 200
     73 INVALID_USE_OF_DESC_TAG = 201
     74 NO_BUG_NUMBER_AFTER_BUG_TAG = 202
     75 MISSING_PARAMETER_DOCUMENTATION = 210
     76 EXTRA_PARAMETER_DOCUMENTATION = 211
     77 WRONG_PARAMETER_DOCUMENTATION = 212
     78 MISSING_JSDOC_TAG_TYPE = 213
     79 MISSING_JSDOC_TAG_DESCRIPTION = 214
     80 MISSING_JSDOC_PARAM_NAME = 215
     81 OUT_OF_ORDER_JSDOC_TAG_TYPE = 216
     82 MISSING_RETURN_DOCUMENTATION = 217
     83 UNNECESSARY_RETURN_DOCUMENTATION = 218
     84 MISSING_BRACES_AROUND_TYPE = 219
     85 MISSING_MEMBER_DOCUMENTATION = 220
     86 MISSING_PRIVATE = 221
     87 EXTRA_PRIVATE = 222
     88 INVALID_OVERRIDE_PRIVATE = 223
     89 INVALID_INHERIT_DOC_PRIVATE = 224
     90 MISSING_JSDOC_TAG_THIS = 225
     91 UNNECESSARY_BRACES_AROUND_INHERIT_DOC = 226
     92 INVALID_AUTHOR_TAG_DESCRIPTION = 227
     93 JSDOC_PREFER_QUESTION_TO_PIPE_NULL = 230
     94 JSDOC_ILLEGAL_QUESTION_WITH_PIPE = 231
     95 JSDOC_MISSING_OPTIONAL_TYPE = 232
     96 JSDOC_MISSING_OPTIONAL_PREFIX = 233
     97 JSDOC_TAG_DESCRIPTION_ENDS_WITH_INVALID_CHARACTER = 240
     98 # TODO(robbyw): Split this in to more specific syntax problems.
     99 INCORRECT_SUPPRESS_SYNTAX = 250
    100 INVALID_SUPPRESS_TYPE = 251
    101 UNNECESSARY_SUPPRESS = 252
    102 
    103 # File ending
    104 FILE_MISSING_NEWLINE = 300
    105 FILE_IN_BLOCK = 301
    106 
    107 # Interfaces
    108 INTERFACE_CONSTRUCTOR_CANNOT_HAVE_PARAMS = 400
    109 INTERFACE_METHOD_CANNOT_HAVE_CODE = 401
    110 
    111 # Comments
    112 MISSING_END_OF_SCOPE_COMMENT = 500
    113 MALFORMED_END_OF_SCOPE_COMMENT = 501
    114 
    115 # ActionScript specific errors:
    116 # TODO(user): move these errors to their own file and move all JavaScript
    117 # specific errors to their own file as well.
    118 # All ActionScript specific errors should have error number at least 1000.
    119 FUNCTION_MISSING_RETURN_TYPE = 1132
    120 PARAMETER_MISSING_TYPE = 1133
    121 VAR_MISSING_TYPE = 1134
    122 PARAMETER_MISSING_DEFAULT_VALUE = 1135
    123 IMPORTS_NOT_ALPHABETIZED = 1140
    124 IMPORT_CONTAINS_WILDCARD = 1141
    125 UNUSED_IMPORT = 1142
    126 INVALID_TRACE_SEVERITY_LEVEL = 1250
    127 MISSING_TRACE_SEVERITY_LEVEL = 1251
    128 MISSING_TRACE_MESSAGE = 1252
    129 REMOVE_TRACE_BEFORE_SUBMIT = 1253
    130 REMOVE_COMMENT_BEFORE_SUBMIT = 1254
    131 # End of list of ActionScript specific errors.
    132 
    133 NEW_ERRORS = frozenset([
    134     # Errors added after 2.0.2:
    135     WRONG_INDENTATION,
    136     MISSING_SEMICOLON,
    137     # Errors added after 2.3.4:
    138     MISSING_END_OF_SCOPE_COMMENT,
    139     MALFORMED_END_OF_SCOPE_COMMENT,
    140     UNUSED_PRIVATE_MEMBER,
    141     # Errors added after 2.3.5:
    142     ])
    143