parameters: (filename, file_extension, lines, error,
                      extra_check_functions=[])
docstring: Performs lint checks and reports any errors to the given error function.
  
    Args:
      filename: Filename of the file that is being processed.
      file_extension: The extension (dot not included) of the file.
      lines: An array of strings, each representing a line of the file, with the
             last element being empty if the file is terminated with a newline.
      error: A callable to which errors are reported, which takes 4 arguments:
             filename, line number, error level, and message
      extra_check_functions: An array of additional check functions that will be
                             run on each source line. Each function takes 4
                             arguments: filename, clean_lines, line, error
docstring_summary: Performs lint checks and reports any errors to the given error function.
docstring_tokens: Performs lint checks and reports any errors to the given error function .
function: def ProcessFileData(filename, file_extension, lines, error,
                      extra_check_functions=[]):
    """Performs lint checks and reports any errors to the given error function.
  
    Args:
      filename: Filename of the file that is being processed.
      file_extension: The extension (dot not included) of the file.
      lines: An array of strings, each representing a line of the file, with the
             last element being empty if the file is terminated with a newline.
      error: A callable to which errors are reported, which takes 4 arguments:
             filename, line number, error level, and message
      extra_check_functions: An array of additional check functions that will be
                             run on each source line. Each function takes 4
                             arguments: filename, clean_lines, line, error
    """
    lines = (['// marker so line numbers and indices both start at 1'] + lines +
             ['// marker so line numbers end in a known way'])
  
    include_state = _IncludeState()
    function_state = _FunctionState()
    nesting_state = _NestingState()
  
    ResetNolintSuppressions()
  
    CheckForCopyright(filename, lines, error)
  
    if file_extension == 'h':
      CheckForHeaderGuard(filename, lines, error)
  
    RemoveMultiLineComments(filename, lines, error)
    clean_lines = CleansedLines(lines)
    for line in xrange(clean_lines.NumLines()):
      ProcessLine(filename, file_extension, clean_lines, line,
                  include_state, function_state, nesting_state, error,
                  extra_check_functions)
    nesting_state.CheckCompletedBlocks(filename, error)
  
    CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error)
  
    # We check here rather than inside ProcessLine so that we see raw
    # lines rather than "cleaned" lines.
    CheckForBadCharacters(filename, lines, error)
  
    CheckForNewlineAtEOF(filename, lines, error)
function_tokens: def ProcessFileData ( filename , file_extension , lines , error , extra_check_functions = [ ] ) : lines = ( [ '// marker so line numbers and indices both start at 1' ] + lines + [ '// marker so line numbers end in a known way' ] ) include_state = _IncludeState ( ) function_state = _FunctionState ( ) nesting_state = _NestingState ( ) ResetNolintSuppressions ( ) CheckForCopyright ( filename , lines , error ) if file_extension == 'h' : CheckForHeaderGuard ( filename , lines , error ) RemoveMultiLineComments ( filename , lines , error ) clean_lines = CleansedLines ( lines ) for line in xrange ( clean_lines . NumLines ( ) ) : ProcessLine ( filename , file_extension , clean_lines , line , include_state , function_state , nesting_state , error , extra_check_functions ) nesting_state . CheckCompletedBlocks ( filename , error ) CheckForIncludeWhatYouUse ( filename , clean_lines , include_state , error ) # We check here rather than inside ProcessLine so that we see raw # lines rather than "cleaned" lines. CheckForBadCharacters ( filename , lines , error ) CheckForNewlineAtEOF ( filename , lines , error )