def METHOD_NAME(per_file_coverage, total_coverage):
    # To print out auto-adjustable column, we need to know the longest
    # length of file names.
    max_file_name_length = max(
        len(fname) for fname in per_file_coverage.keys()
    )
    # -- Print header
    # size of separator is determined by 3 column sizes:
    # file name, coverage percentage and lines.
    header_template = \
        "%" + str(max_file_name_length) + "s\t%s\t%s"
    separator = "-" * (max_file_name_length + 10 + 20)
    print(header_template % ("Filename", "Coverage", "Lines"))
    print(separator)
    # -- Print body
    # template for printing coverage report for each file.
    record_template = "%" + str(max_file_name_length) + "s\t%5.2f%%\t%10d"
    for fname, coverage_info in per_file_coverage.items():
        coverage, lines = coverage_info
        print(record_template % (fname, coverage, lines))
    # -- Print footer
    if total_coverage:
        print(separator)
        print(record_template % ("Total", total_coverage[0], total_coverage[1]))