From 7ef431e089636016280ecbf4e4368e532b753358 Mon Sep 17 00:00:00 2001 From: Robert Clarke Date: Mon, 8 Oct 2018 16:55:48 +0100 Subject: [PATCH] Preserve checkers which will not be processed Ensure that errors captured during the creation of checkers, for instance a non existent file or directory, are preserved and reported. --- src/flake8/checker.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/flake8/checker.py b/src/flake8/checker.py index b32fd3e..3ab37e6 100644 --- a/src/flake8/checker.py +++ b/src/flake8/checker.py @@ -76,6 +76,7 @@ class Manager(object): self.using_multiprocessing = self.jobs > 1 self.processes = [] self.checkers = [] + self.unprocessed_checkers = [] self.statistics = { 'files': 0, 'logical lines': 0, @@ -231,9 +232,16 @@ class Manager(object): self.is_path_excluded) if should_create_file_checker(filename, argument) ) - self.checkers = [ - checker for checker in checkers if checker.should_process - ] + # errors may already have been captured during checker set up, + # preserve these malfunctioning checkers in a separate list so reports + # can be generated + self.checkers = [] + self.unprocessed_checkers = [] + for checker in checkers: + if checker.should_process: + self.checkers.append(checker) + else: + self.unprocessed_checkers.append(checker) LOG.info('Checking %d files', len(self.checkers)) def report(self): @@ -249,7 +257,7 @@ class Manager(object): tuple(int, int) """ results_reported = results_found = 0 - for checker in self.checkers: + for checker in self.checkers + self.unprocessed_checkers: results = sorted(checker.results, key=lambda tup: (tup[1], tup[2])) filename = checker.display_name with self.style_guide.processing_file(filename):