1#!/usr/bin/env python 2# 3# Copyright 2010 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"""Linter error rules class for Closure Linter.""" 18 19__author__ = 'robbyw@google.com (Robert Walker)' 20 21import gflags as flags 22from closure_linter import errors 23 24 25FLAGS = flags.FLAGS 26flags.DEFINE_boolean('jsdoc', True, 27 'Whether to report errors for missing JsDoc.') 28flags.DEFINE_list('disable', None, 29 'Disable specific error. Usage Ex.: gjslint --disable 1,' 30 '0011 foo.js.') 31flags.DEFINE_integer('max_line_length', 80, 'Maximum line length allowed ' 32 'without warning.', lower_bound=1) 33 34disabled_error_nums = None 35 36 37def GetMaxLineLength(): 38 """Returns allowed maximum length of line. 39 40 Returns: 41 Length of line allowed without any warning. 42 """ 43 return FLAGS.max_line_length 44 45 46def ShouldReportError(error): 47 """Whether the given error should be reported. 48 49 Returns: 50 True for all errors except missing documentation errors and disabled 51 errors. For missing documentation, it returns the value of the 52 jsdoc flag. 53 """ 54 global disabled_error_nums 55 if disabled_error_nums is None: 56 disabled_error_nums = [] 57 if FLAGS.disable: 58 for error_str in FLAGS.disable: 59 error_num = 0 60 try: 61 error_num = int(error_str) 62 except ValueError: 63 pass 64 disabled_error_nums.append(error_num) 65 66 return ((FLAGS.jsdoc or error not in ( 67 errors.MISSING_PARAMETER_DOCUMENTATION, 68 errors.MISSING_RETURN_DOCUMENTATION, 69 errors.MISSING_MEMBER_DOCUMENTATION, 70 errors.MISSING_PRIVATE, 71 errors.MISSING_JSDOC_TAG_THIS)) and 72 (not FLAGS.disable or error not in disabled_error_nums)) 73