summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Cordasco <graffatcolmingov@gmail.com>2016-07-25 14:29:09 -0500
committerIan Cordasco <graffatcolmingov@gmail.com>2016-07-25 14:29:09 -0500
commit4dc1d11a627a571eeae4e0ae3da7b94e7de04214 (patch)
treefee0c2657ffb9d298305fa775ff4abd24cfd6c54
parentfc035c4df280e1f10c2e1f73ce8c2ea2af5c99a7 (diff)
downloadflake8-bug/180.tar.gz
Wire-up --statistics againbug/180
I'm not sure where this code went or when, but it disappeared. Let's add it back. Related #180
-rw-r--r--src/flake8/formatting/base.py13
-rw-r--r--src/flake8/main/application.py8
-rw-r--r--src/flake8/statistics.py10
3 files changed, 31 insertions, 0 deletions
diff --git a/src/flake8/formatting/base.py b/src/flake8/formatting/base.py
index 7c2e4b5..c4a626b 100644
--- a/src/flake8/formatting/base.py
+++ b/src/flake8/formatting/base.py
@@ -85,6 +85,19 @@ class BaseFormatter(object):
raise NotImplementedError('Subclass of BaseFormatter did not implement'
' format.')
+ def show_statistics(self, statistics):
+ """Format and print the statistics."""
+ for error_code in statistics.error_codes():
+ stats_for_error_code = statistics.statistics_for(error_code)
+ statistic = next(stats_for_error_code)
+ count = statistic.count
+ count += sum(stat.count for stat in stats_for_error_code)
+ self._write('{count:<5} {error_code} {message}'.format(
+ count=count,
+ error_code=error_code,
+ message=statistic.message,
+ ))
+
def show_benchmarks(self, benchmarks):
"""Format and print the benchmarks."""
# NOTE(sigmavirus24): The format strings are a little confusing, even
diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py
index febe6c7..464ff92 100644
--- a/src/flake8/main/application.py
+++ b/src/flake8/main/application.py
@@ -263,6 +263,13 @@ class Application(object):
LOG.info('Found a total of %d violations and reported %d',
self.total_result_count, self.result_count)
+ def report_statistics(self):
+ """Aggregate and report statistics from this run."""
+ if not self.options.statistics:
+ return
+
+ self.formatter.show_statistics(self.guide.stats)
+
def initialize(self, argv):
# type: () -> NoneType
"""Initialize the application to be run.
@@ -285,6 +292,7 @@ class Application(object):
self.initialize(argv)
self.run_checks()
self.report_errors()
+ self.report_statistics()
self.report_benchmarks()
def run(self, argv=None):
diff --git a/src/flake8/statistics.py b/src/flake8/statistics.py
index 2512089..d35d4bf 100644
--- a/src/flake8/statistics.py
+++ b/src/flake8/statistics.py
@@ -9,6 +9,16 @@ class Statistics(object):
"""Initialize the underlying dictionary for our statistics."""
self._store = {}
+ def error_codes(self):
+ """Return all unique error codes stored.
+
+ :returns:
+ Sorted list of error codes.
+ :rtype:
+ list(str)
+ """
+ return list(sorted(set(key.code for key in self._store.keys())))
+
def record(self, error):
"""Add the fact that the error was seen in the file.