5959# if empty, use defaults
6060_valid_extensions = set ([])
6161
62- __VERSION__ = '1.5.3 '
62+ __VERSION__ = '1.5.4 '
6363
6464try :
6565 xrange # Python 2
295295 'build/include' ,
296296 'build/include_subdir' ,
297297 'build/include_alpha' ,
298- 'build/include_inline' ,
299298 'build/include_order' ,
300299 'build/include_what_you_use' ,
301300 'build/namespaces_headers' ,
311310 'readability/constructors' ,
312311 'readability/fn_size' ,
313312 'readability/inheritance' ,
314- 'readability/pointer_notation' ,
315313 'readability/multiline_comment' ,
316314 'readability/multiline_string' ,
317315 'readability/namespace' ,
318316 'readability/nolint' ,
319317 'readability/nul' ,
320- 'readability/null_usage' ,
321318 'readability/strings' ,
322319 'readability/todo' ,
323320 'readability/utf8' ,
337334 'runtime/string' ,
338335 'runtime/threadsafe_fn' ,
339336 'runtime/vlog' ,
340- 'runtime/v8_persistent' ,
341337 'whitespace/blank_line' ,
342338 'whitespace/braces' ,
343339 'whitespace/comma' ,
846842 'Missing space after ,' : r's/,\([^ ]\)/, \1/g' ,
847843}
848844
849- _NULL_TOKEN_PATTERN = re .compile (r'\bNULL\b' )
850-
851- _V8_PERSISTENT_PATTERN = re .compile (r'\bv8::Persistent\b' )
852-
853- _RIGHT_LEANING_POINTER_PATTERN = re .compile (r'[^=|(,\s><);&?:}]'
854- r'(?<!(sizeof|return))'
855- r'\s\*[a-zA-Z_][0-9a-zA-Z_]*' )
856-
857845_regexp_compile_cache = {}
858846
859847# {str, set(int)}: a map from error categories to sets of linenumbers
@@ -1094,11 +1082,10 @@ class _IncludeState(object):
10941082 # needs to move backwards, CheckNextIncludeOrder will raise an error.
10951083 _INITIAL_SECTION = 0
10961084 _MY_H_SECTION = 1
1097- _OTHER_H_SECTION = 2
1098- _OTHER_SYS_SECTION = 3
1099- _C_SECTION = 4
1100- _CPP_SECTION = 5
1101-
1085+ _C_SECTION = 2
1086+ _CPP_SECTION = 3
1087+ _OTHER_SYS_SECTION = 4
1088+ _OTHER_H_SECTION = 5
11021089
11031090 _TYPE_NAMES = {
11041091 _C_SYS_HEADER : 'C system header' ,
@@ -1873,7 +1860,7 @@ def FindNextMultiLineCommentEnd(lines, lineix):
18731860
18741861def RemoveMultiLineCommentsFromRange (lines , begin , end ):
18751862 """Clears a range of lines for multi-line comments."""
1876- # Having // dummy comments makes the lines non-empty, so we will not get
1863+ # Having // <empty> comments makes the lines non-empty, so we will not get
18771864 # unnecessary blank line warnings later in the code.
18781865 for i in range (begin , end ):
18791866 lines [i ] = '/**/'
@@ -2247,7 +2234,7 @@ def CheckForCopyright(filename, lines, error):
22472234 """Logs an error if no Copyright message appears at the top of the file."""
22482235
22492236 # We'll say it should occur by line 10. Don't forget there's a
2250- # dummy line at the front.
2237+ # placeholder line at the front.
22512238 for line in xrange (1 , min (len (lines ), 11 )):
22522239 if re .search (r'Copyright' , lines [line ], re .I ): break
22532240 else : # means no copyright line was found
@@ -2533,21 +2520,6 @@ def CheckForBadCharacters(filename, lines, error):
25332520 error (filename , linenum , 'readability/nul' , 5 , 'Line contains NUL byte.' )
25342521
25352522
2536- def CheckInlineHeader (filename , include_state , error ):
2537- """Logs an error if both a header and its inline variant are included."""
2538-
2539- all_headers = dict (item for sublist in include_state .include_list
2540- for item in sublist )
2541- bad_headers = set ('%s.h' % name [:- 6 ] for name in all_headers .keys ()
2542- if name .endswith ('-inl.h' ))
2543- bad_headers &= set (all_headers .keys ())
2544-
2545- for name in bad_headers :
2546- err = '%s includes both %s and %s-inl.h' % (filename , name , name )
2547- linenum = all_headers [name ]
2548- error (filename , linenum , 'build/include_inline' , 5 , err )
2549-
2550-
25512523def CheckForNewlineAtEOF (filename , lines , error ):
25522524 """Logs an error if there is no newline char at the end of the file.
25532525
@@ -3571,7 +3543,7 @@ def CheckForFunctionLengths(filename, clean_lines, linenum,
35713543 """Reports for long function bodies.
35723544
35733545 For an overview why this is done, see:
3574- https://google.github.io/styleguide/ cppguide.html #Write_Short_Functions
3546+ https://google-styleguide.googlecode.com/svn/trunk/ cppguide.xml #Write_Short_Functions
35753547
35763548 Uses a simplistic algorithm assuming other style guidelines
35773549 (especially spacing) are followed.
@@ -3805,9 +3777,10 @@ def CheckSpacing(filename, clean_lines, linenum, nesting_state, error):
38053777 # get rid of comments and strings
38063778 line = clean_lines .elided [linenum ]
38073779
3808- # You shouldn't have spaces before your brackets, except maybe after
3809- # 'delete []', 'return []() {};', or 'auto [abc, ...] = ...;'.
3810- if Search (r'\w\s+\[' , line ) and not Search (r'(?:auto&?|delete|return)\s+\[' , line ):
3780+ # You shouldn't have spaces before your brackets, except for C++11 attributes
3781+ # or maybe after 'delete []', 'return []() {};', or 'auto [abc, ...] = ...;'.
3782+ if (Search (r'\w\s+\[(?!\[)' , line ) and
3783+ not Search (r'(?:auto&?|delete|return)\s+\[' , line )):
38113784 error (filename , linenum , 'whitespace/braces' , 5 ,
38123785 'Extra space before [' )
38133786
@@ -4797,71 +4770,6 @@ def CheckAltTokens(filename, clean_lines, linenum, error):
47974770 'Use operator %s instead of %s' % (
47984771 _ALT_TOKEN_REPLACEMENT [match .group (1 )], match .group (1 )))
47994772
4800- def CheckNullTokens (filename , clean_lines , linenum , error ):
4801- """Check NULL usage.
4802-
4803- Args:
4804- filename: The name of the current file.
4805- clean_lines: A CleansedLines instance containing the file.
4806- linenum: The number of the line to check.
4807- error: The function to call with any errors found.
4808- """
4809- line = clean_lines .elided [linenum ]
4810-
4811- # Avoid preprocessor lines
4812- if Match (r'^\s*#' , line ):
4813- return
4814-
4815- if line .find ('/*' ) >= 0 or line .find ('*/' ) >= 0 :
4816- return
4817-
4818- for match in _NULL_TOKEN_PATTERN .finditer (line ):
4819- error (filename , linenum , 'readability/null_usage' , 2 ,
4820- 'Use nullptr instead of NULL' )
4821-
4822- def CheckV8PersistentTokens (filename , clean_lines , linenum , error ):
4823- """Check v8::Persistent usage.
4824-
4825- Args:
4826- filename: The name of the current file.
4827- clean_lines: A CleansedLines instance containing the file.
4828- linenum: The number of the line to check.
4829- error: The function to call with any errors found.
4830- """
4831- line = clean_lines .elided [linenum ]
4832-
4833- # Avoid preprocessor lines
4834- if Match (r'^\s*#' , line ):
4835- return
4836-
4837- if line .find ('/*' ) >= 0 or line .find ('*/' ) >= 0 :
4838- return
4839-
4840- for match in _V8_PERSISTENT_PATTERN .finditer (line ):
4841- error (filename , linenum , 'runtime/v8_persistent' , 2 ,
4842- 'Use v8::Global instead of v8::Persistent' )
4843-
4844- def CheckLeftLeaningPointer (filename , clean_lines , linenum , error ):
4845- """Check for left-leaning pointer placement.
4846-
4847- Args:
4848- filename: The name of the current file.
4849- clean_lines: A CleansedLines instance containing the file.
4850- linenum: The number of the line to check.
4851- error: The function to call with any errors found.
4852- """
4853- line = clean_lines .elided [linenum ]
4854-
4855- # Avoid preprocessor lines
4856- if Match (r'^\s*#' , line ):
4857- return
4858-
4859- if '/*' in line or '*/' in line :
4860- return
4861-
4862- for match in _RIGHT_LEANING_POINTER_PATTERN .finditer (line ):
4863- error (filename , linenum , 'readability/pointer_notation' , 2 ,
4864- 'Use left leaning pointer instead of right leaning' )
48654773
48664774def GetLineWidth (line ):
48674775 """Determines the width of the line in column positions.
@@ -5016,9 +4924,6 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state,
50164924 CheckSpacingForFunctionCall (filename , clean_lines , linenum , error )
50174925 CheckCheck (filename , clean_lines , linenum , error )
50184926 CheckAltTokens (filename , clean_lines , linenum , error )
5019- CheckNullTokens (filename , clean_lines , linenum , error )
5020- CheckV8PersistentTokens (filename , clean_lines , linenum , error )
5021- CheckLeftLeaningPointer (filename , clean_lines , linenum , error )
50224927 classinfo = nesting_state .InnermostClass ()
50234928 if classinfo :
50244929 CheckSectionSpacing (filename , clean_lines , classinfo , linenum , error )
@@ -5204,10 +5109,11 @@ def CheckIncludeLine(filename, clean_lines, linenum, include_state, error):
52045109 include_state .include_list [- 1 ].append ((include , linenum ))
52055110
52065111 # We want to ensure that headers appear in the right order:
5207- # 1) for foo.cc, foo.h
5208- # 2) other project headers
5209- # 3) c system files
5210- # 4) cpp system files
5112+ # 1) for foo.cc, foo.h (preferred location)
5113+ # 2) c system files
5114+ # 3) cpp system files
5115+ # 4) for foo.cc, foo.h (deprecated location)
5116+ # 5) other google headers
52115117 #
52125118 # We classify each include statement as one of those 5 types
52135119 # using a number of techniques. The include_state object keeps
@@ -5470,7 +5376,7 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension,
54705376 and line [- 1 ] != '\\ ' ):
54715377 error (filename , linenum , 'build/namespaces_headers' , 4 ,
54725378 'Do not use unnamed namespaces in header files. See '
5473- 'https://google.github.io/styleguide/ cppguide.html #Namespaces'
5379+ 'https://google-styleguide.googlecode.com/svn/trunk/ cppguide.xml #Namespaces'
54745380 ' for more information.' )
54755381
54765382
@@ -6592,8 +6498,6 @@ def ProcessFileData(filename, file_extension, lines, error,
65926498
65936499 CheckForNewlineAtEOF (filename , lines , error )
65946500
6595- CheckInlineHeader (filename , include_state , error )
6596-
65976501def ProcessConfigOverrides (filename ):
65986502 """ Loads the configuration files and processes the config overrides.
65996503
@@ -6612,7 +6516,7 @@ def ProcessConfigOverrides(filename):
66126516 if not base_name :
66136517 break # Reached the root directory.
66146518
6615- cfg_file = os .path .join (abs_path , ".cpplint " )
6519+ cfg_file = os .path .join (abs_path , "CPPLINT.cfg " )
66166520 abs_filename = abs_path
66176521 if not os .path .isfile (cfg_file ):
66186522 continue
0 commit comments