tools: cpplint: update to 1.6.1 release Bug: None Test: `./cpplint.py-update` still works Change-Id: I32a4c713cc48d1e9900c9aa256f7a8535f05c48f Reviewed-on: https://android-review.googlesource.com/c/platform/tools/repohooks/+/3492414 Presubmit-Ready: Mike Frysinger <vapier@google.com> Open-Source-Licensing: Lint 🤖 <ayeaye-gerrit@google.com> Presubmit-Verified: Treehugger Robot <android-test-infra-workplan-finisher@system.gserviceaccount.com> Autosubmit: Mike Frysinger <vapier@google.com> Lint: Lint 🤖 <ayeaye-gerrit@google.com> Performance: CrystalBall Performance Presubmit <android-crystalball-presubmit-eng@google.com> Reviewed-by: Alex Klein <saklein@google.com>
diff --git a/tools/cpplint.py b/tools/cpplint.py index c5db879..d7e103a 100755 --- a/tools/cpplint.py +++ b/tools/cpplint.py
@@ -42,6 +42,14 @@ same line, but it is far from perfect (in either direction). """ +# cpplint predates fstrings +# pylint: disable=consider-using-f-string + +# pylint: disable=invalid-name + +import warnings +warnings.filterwarnings("ignore", category=DeprecationWarning) + import codecs import copy import getopt @@ -60,9 +68,10 @@ # if empty, use defaults _valid_extensions = set([]) -__VERSION__ = '1.5.5' +__VERSION__ = '1.6.1' try: + # -- pylint: disable=used-before-assignment xrange # Python 2 except NameError: # -- pylint: disable=redefined-builtin @@ -369,6 +378,12 @@ 'readability/function', ] +# These prefixes for categories should be ignored since they relate to other +# tools which also use the NOLINT syntax, e.g. clang-tidy. +_OTHER_NOLINT_CATEGORY_PREFIXES = [ + 'clang-analyzer', + ] + # The default state of the category filter. This is overridden by the --filter= # flag. By default all errors are on, so only add here categories that should be # off by default (i.e., categories that must be enabled by the --filter= flags). @@ -873,12 +888,14 @@ _include_order = "default" try: + # -- pylint: disable=used-before-assignment unicode except NameError: # -- pylint: disable=redefined-builtin basestring = unicode = str try: + # -- pylint: disable=used-before-assignment long except NameError: # -- pylint: disable=redefined-builtin @@ -980,6 +997,9 @@ category = category[1:-1] if category in _ERROR_CATEGORIES: _error_suppressions.setdefault(category, set()).add(suppressed_line) + elif any(c for c in _OTHER_NOLINT_CATEGORY_PREFIXES if category.startswith(c)): + # Ignore any categories from other tools. + pass elif category not in _LEGACY_ERROR_CATEGORIES: error(filename, linenum, 'readability/nolint', 5, 'Unknown NOLINT error category: %s' % category) @@ -1916,6 +1936,7 @@ self.raw_lines = lines self.num_lines = len(lines) self.lines_without_raw_strings = CleanseRawStrings(lines) + # # pylint: disable=consider-using-enumerate for linenum in range(len(self.lines_without_raw_strings)): self.lines.append(CleanseComments( self.lines_without_raw_strings[linenum])) @@ -5007,7 +5028,8 @@ or Search(r'(?:%s)\/.*\.h' % "|".join(C_STANDARD_HEADER_FOLDERS), include)) # Headers with C++ extensions shouldn't be considered C system headers - is_system = used_angle_brackets and not os.path.splitext(include)[1] in ['.hpp', '.hxx', '.h++'] + include_ext = os.path.splitext(include)[1] + is_system = used_angle_brackets and not include_ext in ['.hh', '.hpp', '.hxx', '.h++'] if is_system: if is_cpp_header: @@ -5069,10 +5091,12 @@ # # We also make an exception for Lua headers, which follow google # naming convention but not the include convention. - match = Match(r'#include\s*"([^/]+\.h)"', line) - if match and not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1)): - error(filename, linenum, 'build/include_subdir', 4, - 'Include the directory when naming .h files') + match = Match(r'#include\s*"([^/]+\.(.*))"', line) + if match: + if (IsHeaderExtension(match.group(2)) and + not _THIRD_PARTY_HEADERS_PATTERN.match(match.group(1))): + error(filename, linenum, 'build/include_subdir', 4, + 'Include the directory when naming header files') # we shouldn't include a file more than once. actually, there are a # handful of instances where doing so is okay, but in general it's @@ -5845,7 +5869,8 @@ return False # operator++(int) and operator--(int) - if context.endswith(' operator++') or context.endswith(' operator--'): + if (context.endswith(' operator++') or context.endswith(' operator--') or + context.endswith('::operator++') or context.endswith('::operator--')): return False # A single unnamed argument for a function tends to look like old style cast. @@ -6524,7 +6549,7 @@ continue try: - with open(cfg_file) as file_handle: + with codecs.open(cfg_file, 'r', 'utf8', 'replace') as file_handle: for line in file_handle: line, _, _ = line.partition('#') # Remove comments. if not line.strip():