diff --git a/cpplint/cpplint.py b/cpplint/cpplint.py index b5493b6d9..76d073527 100755 --- a/cpplint/cpplint.py +++ b/cpplint/cpplint.py @@ -71,7 +71,8 @@ suppresses errors of all categories on that line. The files passed in will be linted; at least one file must be provided. - Linted extensions are .cc, .cpp, and .h. Other file types will be ignored. + Default linted extensions are .cc, .cpp, .cu, .cuh and .h. Change the + extensions with the --extensions flag. Flags: @@ -126,6 +127,12 @@ Examples: --linelength=120 + + extensions=extension,extension,... + The allowed file extensions that cpplint will check + + Examples: + --extensions=hpp,cpp """ # We categorize each error message we print. Here are the categories. @@ -440,6 +447,10 @@ # This is set by --linelength flag. _line_length = 80 +# The allowed extensions for file names +# This is set by --extensions flag. +_valid_extensions = set(['cc', 'h', 'cpp', 'cu', 'cuh']) + def ParseNolintSuppressions(filename, raw_line, linenum, error): """Updates the global list of error-suppressions. @@ -4612,10 +4623,9 @@ def ProcessFile(filename, vlevel, extra_check_functions=[]): # When reading from stdin, the extension is unknown, so no cpplint tests # should rely on the extension. - valid_extensions = ['cc', 'h', 'cpp', 'cu', 'cuh'] - if filename != '-' and file_extension not in valid_extensions: + if filename != '-' and file_extension not in _valid_extensions: sys.stderr.write('Ignoring %s; not a valid file name ' - '(.cc, .h, .cpp, .cu, .cuh)\n' % filename) + '(%s)\n' % (filename, ', '.join(_valid_extensions))) else: ProcessFileData(filename, file_extension, lines, Error, extra_check_functions) @@ -4667,7 +4677,8 @@ def ParseArguments(args): 'counting=', 'filter=', 'root=', - 'linelength=']) + 'linelength=', + 'extensions=']) except getopt.GetoptError: PrintUsage('Invalid arguments.') @@ -4702,6 +4713,12 @@ def ParseArguments(args): _line_length = int(val) except ValueError: PrintUsage('Line length must be digits.') + elif opt == '--extensions': + global _valid_extensions + try: + _valid_extensions = set(val.split(',')) + except ValueError: + PrintUsage('Extensions must be comma seperated list.') if not filenames: PrintUsage('No files were specified.') diff --git a/cpplint/cpplint_unittest.py b/cpplint/cpplint_unittest.py index 78d2c1317..253bb8008 100755 --- a/cpplint/cpplint_unittest.py +++ b/cpplint/cpplint_unittest.py @@ -2623,6 +2623,7 @@ def testParseArguments(self): old_verbose_level = cpplint._cpplint_state.verbose_level old_filters = cpplint._cpplint_state.filters old_line_length = cpplint._line_length + old_valid_extensions = cpplint._valid_extensions try: # Don't print usage during the tests, or filter categories cpplint._USAGE = '' @@ -2675,6 +2676,10 @@ def testParseArguments(self): self.assertEqual(['foo.h'], cpplint.ParseArguments(['--linelength=120', 'foo.h'])) self.assertEqual(120, cpplint._line_length) + + self.assertEqual(['foo.h'], + cpplint.ParseArguments(['--extensions=hpp,cpp,cpp', 'foo.h'])) + self.assertEqual(set(['hpp', 'cpp']), cpplint._valid_extensions) finally: cpplint._USAGE = old_usage cpplint._ERROR_CATEGORIES = old_error_categories @@ -2682,6 +2687,7 @@ def testParseArguments(self): cpplint._cpplint_state.verbose_level = old_verbose_level cpplint._cpplint_state.filters = old_filters cpplint._line_length = old_line_length + cpplint._valid_extensions = old_valid_extensions def testLineLength(self): old_line_length = cpplint._line_length