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