def METHOD_NAME() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument('logfile', type=argparse.FileType('r'))
    args = parser.parse_args()
    success = True
    # Collect all type records and group them by filename.
    type_records: DefaultDict[str, Set[Record]] = collections.defaultdict(set)
    for line in args.logfile:
        match = _RECORD_RE.match(line.strip())
        if not match:
            success = False
            logging.error('Malformed log line %r', line)
            continue
        record = Record(
            filename=match.group(1),
            line_number=int(match.group(2)),
            type_name=match.group(3),
        )
        type_records[record.filename].add(record)
    for filename, records in type_records.items():
        if '/DAO/Base/' in filename:
            # These files are autogenerated, so they don't need to be checked.
            continue
        with open(filename, encoding='utf-8') as f:
            lines = f.read().strip().split('\n')
        success &= _process_records(lines, records)
    if not success:
        sys.exit(1)