| #!/usr/bin/env python3 |
| |
| import os |
| |
| ignores = [ |
| '.git/', |
| 'misc/afl-fuzz-tokens/', |
| 'ninja_deps', |
| 'src/depfile_parser.cc', |
| 'src/lexer.cc', |
| ] |
| |
| error_count = 0 |
| |
| def error(path, msg): |
| global error_count |
| error_count += 1 |
| print('\x1b[1;31m{}\x1b[0;31m{}\x1b[0m'.format(path, msg)) |
| |
| for root, directory, filenames in os.walk('.'): |
| for filename in filenames: |
| path = os.path.join(root, filename)[2:] |
| if any([path.startswith(x) for x in ignores]): |
| continue |
| with open(path, 'rb') as file: |
| line_nr = 1 |
| try: |
| for line in [x.decode() for x in file.readlines()]: |
| if len(line) == 0 or line[-1] != '\n': |
| error(path, ' missing newline at end of file.') |
| if len(line) > 1: |
| if line[-2] == '\r': |
| error(path, ' has Windows line endings.') |
| break |
| if line[-2] == ' ' or line[-2] == '\t': |
| error(path, ':{} has trailing whitespace.'.format(line_nr)) |
| line_nr += 1 |
| except UnicodeError: |
| pass # binary file |
| |
| exit(error_count) |