| #!/usr/bin/env python3 |
| |
| import argparse |
| import os |
| import sys |
| |
| import checksymbolslib.file as file |
| from checksymbolslib.db import DB |
| |
| |
| def parse_args(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--search', action='store', default=None, |
| help='print all symbols matching a given regular expression') |
| return parser.parse_args() |
| |
| |
| def change_to_top_dir(): |
| base_dir = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) |
| os.chdir(base_dir) |
| |
| |
| def get_full_db(files_to_process): |
| db = DB() |
| for f in files_to_process: |
| file.populate_db_from_file(db, f) |
| return db |
| |
| |
| def print_filenames_with_pattern(all_files, files_to_process, pattern): |
| ignored_filenames = file.get_list_of_filenames_with_pattern(all_files, files_to_process, pattern) |
| processed_filenames = file.get_list_of_filenames_with_pattern(files_to_process, [], pattern) |
| print('========== filenames found with pattern "{}": {}'.format(pattern, len(processed_filenames))) |
| for f in processed_filenames: |
| print(f) |
| print('========== ignored filenames with pattern "{}": {}'.format(pattern, len(ignored_filenames))) |
| for f in ignored_filenames: |
| print(f) |
| |
| |
| def print_symbols_with_pattern(db, pattern): |
| symbols = db.get_symbols_with_pattern(pattern) |
| print('========== symbols with pattern "{}": {}'.format(pattern, len(symbols))) |
| for s in symbols: |
| print(s, str(symbols[s])) |
| |
| |
| def __main__(): |
| flags = parse_args() |
| |
| change_to_top_dir() |
| all_files = file.get_list_of_files_in_the_repo() |
| files_to_process = file.get_list_of_files_to_process(all_files) |
| db = get_full_db(files_to_process) |
| |
| if flags.search: |
| print_filenames_with_pattern(all_files, files_to_process, flags.search) |
| print_symbols_with_pattern(db, flags.search) |
| print('========== warnings:') |
| |
| warnings = [] |
| warnings += db.get_warnings_for_choices_selected() |
| warnings += db.get_warnings_for_legacy_symbols_being_defined() |
| warnings += db.get_warnings_for_legacy_symbols_being_used() |
| warnings += db.get_warnings_for_symbols_with_legacy_note_and_no_comment_on_usage() |
| warnings += db.get_warnings_for_symbols_with_legacy_note_and_no_usage() |
| warnings += db.get_warnings_for_symbols_without_definition() |
| warnings += db.get_warnings_for_symbols_without_usage() |
| |
| for filename, lineno, msg in sorted(warnings): |
| print('{}:{}: {}'.format(filename, lineno, msg), file=sys.stderr) |
| |
| if len(warnings) > 0: |
| sys.exit(1) |
| |
| |
| if __name__ == '__main__': |
| __main__() |