parameters: (input_api, whitelisted_files, offending_files)
return_statement: return (list(unknown), missing, list(stale))
docstring: Compares whitelist contents with the results of file scanning.
      input_api: InputAPI of presubmit scripts.
      whitelisted_files: Whitelisted files list.
      offending_files: Files that contain 3rd party code.
    Returns:
      A triplet of "unknown", "missing", and "stale" file lists.
      "Unknown" are files that contain 3rd party code but not whitelisted.
      "Missing" are files that are whitelisted but doesn't really exist.
      "Stale" are files that are whitelisted unnecessarily.
docstring_summary: Compares whitelist contents with the results of file scanning.
      input_api: InputAPI of presubmit scripts.
      whitelisted_files: Whitelisted files list.
      offending_files: Files that contain 3rd party code.
    Returns:
      A triplet of "unknown", "missing", and "stale" file lists.
      "Unknown" are files that contain 3rd party code but not whitelisted.
      "Missing" are files that are whitelisted but doesn't really exist.
      "Stale" are files that are whitelisted unnecessarily.
docstring_tokens: Compares whitelist contents with the results of file scanning . input_api : InputAPI of presubmit scripts . whitelisted_files : Whitelisted files list . offending_files : Files that contain 3rd party code . Returns : A triplet of unknown missing and stale file lists . Unknown are files that contain 3rd party code but not whitelisted . Missing are files that are whitelisted but doesn t really exist . Stale are files that are whitelisted unnecessarily .
function: def AnalyzeScanResults(input_api, whitelisted_files, offending_files):
    """Compares whitelist contents with the results of file scanning.
      input_api: InputAPI of presubmit scripts.
      whitelisted_files: Whitelisted files list.
      offending_files: Files that contain 3rd party code.
    Returns:
      A triplet of "unknown", "missing", and "stale" file lists.
      "Unknown" are files that contain 3rd party code but not whitelisted.
      "Missing" are files that are whitelisted but doesn't really exist.
      "Stale" are files that are whitelisted unnecessarily.
    """
    unknown = set(offending_files) - set(whitelisted_files)
    missing = [f for f in whitelisted_files if not input_api.os_path.isfile(
      input_api.os_path.join(input_api.change.RepositoryRoot(), f))]
    stale = set(whitelisted_files) - set(offending_files) - set(missing)
    return (list(unknown), missing, list(stale))
function_tokens: def AnalyzeScanResults ( input_api , whitelisted_files , offending_files ) : unknown = set ( offending_files ) - set ( whitelisted_files ) missing = [ f for f in whitelisted_files if not input_api . os_path . isfile ( input_api . os_path . join ( input_api . change . RepositoryRoot ( ) , f ) ) ] stale = set ( whitelisted_files ) - set ( offending_files ) - set ( missing ) return ( list ( unknown ) , missing , list ( stale ) )