def METHOD_NAME(args, description):
    ###############################################################################
    parser = argparse.ArgumentParser(
        description=description, formatter_class=argparse.RawTextHelpFormatter
    )
    parser.add_argument("paths", nargs="*", help="Paths to TestStatus files.")
    options_group = parser.add_mutually_exclusive_group()
    options_group.add_argument(
        "-s", "--summary", action="store_true", help="Only show summary"
    )
    options_group.add_argument(
        "-f",
        "--fails-only",
        action="store_true",
        help="Only show non-PASSes (this includes PENDs as well as FAILs)",
    )
    parser.add_argument(
        "-c",
        "--count-fails",
        action="append",
        default=[],
        metavar="PHASE",
        help="For this phase, do not give line-by-line output; instead, just report\n"
        "the total number of tests that have not PASSed this phase\n"
        "(this includes PENDs as well as FAILs).\n"
        "This is typically used with the --fails-only option,\n"
        "but it can also be used without that option.\n"
        "(However, it cannot be used with the --summary option.)\n"
        "(Can be specified multiple times.)",
    )
    performance_fails_equivalent = " ".join(
        ["--count-fails {}".format(phase) for phase in _PERFORMANCE_PHASES]
    )
    parser.add_argument(
        "-p",
        "--count-performance-fails",
        action="store_true",
        help="For phases that involve performance comparisons with baseline:\n"
        "Do not give line-by-line output; instead, just report the total number\n"
        "of tests that have not PASSed this phase.\n"
        "(This can be useful because these performance comparisons can be\n"
        "subject to machine variability.)\n"
        "This is equivalent to specifying:\n"
        "{}".format(performance_fails_equivalent),
    )
    parser.add_argument(
        "--check-throughput",
        action="store_true",
        help="Fail if throughput check fails (fail if tests slow down)",
    )
    parser.add_argument(
        "--check-memory",
        action="store_true",
        help="Fail if memory check fails (fail if tests footprint grows)",
    )
    parser.add_argument(
        "-x",
        "--expected-fails-file",
        help="Path to XML file listing expected failures for this test suite",
    )
    parser.add_argument(
        "-t",
        "--test-id",
        action="append",
        default=[],
        help="Include all tests with this test id.\n"
        "(Can be specified multiple times.)",
    )
    parser.add_argument(
        "-r",
        "--test-root",
        default=os.getcwd(),
        help="Test root used when --test-id is given",
    )
    parser.add_argument(
        "--force-rebuild",
        action="store_true",
        help="When used with 'test-id', the"
        "tests will have their 'BUILD_SHAREDLIB' phase reset to 'PEND'.",
    )
    args = parser.parse_args(args[1:])
    _validate_args(args)
    if args.count_performance_fails:
        args.count_fails.extend(_PERFORMANCE_PHASES)
    return (
        args.paths,
        args.summary,
        args.fails_only,
        args.count_fails,
        args.check_throughput,
        args.check_memory,
        args.expected_fails_file,
        args.test_id,
        args.test_root,
        args.force_rebuild,
    )