diff options
Diffstat (limited to 'tools/progress.py')
| -rwxr-xr-x | tools/progress.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/progress.py b/tools/progress.py index f18819ca..976f94ab 100755 --- a/tools/progress.py +++ b/tools/progress.py @@ -3,6 +3,7 @@ import argparse from collections import defaultdict from colorama import Back, Fore, Style import enum +from pathlib import Path import utils from utils import FunctionStatus import typing as tp @@ -14,6 +15,8 @@ parser.add_argument("--print-eq", "-e", action="store_true", help="Print non-matching functions with minor issues") parser.add_argument("--print-ok", "-m", action="store_true", help="Print matching functions") +parser.add_argument("--hide-nonmatchings-with-dumps", "-H", help="Hide non-matching functions that have expected " + "output dumps", action="store_true") args = parser.parse_args() @@ -31,6 +34,15 @@ counts: tp.DefaultDict[FunctionStatus, int] = defaultdict(int) ai_counts: tp.DefaultDict[AIClassType, int] = defaultdict(int) ai_counts_done: tp.DefaultDict[AIClassType, int] = defaultdict(int) +nonmatching_fns_with_dump = {p.stem for p in (Path(__file__).parent.parent / "expected").glob("*.bin")} + + +def should_hide_nonmatching(name: str) -> bool: + if not args.hide_nonmatchings_with_dumps: + return False + return name in nonmatching_fns_with_dump + + for info in utils.get_functions(): code_size_total += info.size num_total += 1 @@ -57,10 +69,10 @@ for info in utils.get_functions(): code_size[info.status] += info.size if info.status == FunctionStatus.NonMatching: - if args.print_nm: + if args.print_nm and not should_hide_nonmatching(info.decomp_name): print(f"{Fore.RED}NM{Fore.RESET} {utils.format_symbol_name(info.decomp_name)}") elif info.status == FunctionStatus.Equivalent: - if args.print_eq: + if args.print_eq and not should_hide_nonmatching(info.decomp_name): print(f"{Fore.YELLOW}EQ{Fore.RESET} {utils.format_symbol_name(info.decomp_name)}") elif info.status == FunctionStatus.Matching: if args.print_ok: |
