summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--utils.py17
2 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cd25ca8..3572212 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -73,6 +73,8 @@ ChangeLog for Pylint
* Emit 'catching-non-exception' for non-class nodes. Closes issue #303.
+ * Order of reporting is consistent.
+
2014-07-26 -- 1.3.0
diff --git a/utils.py b/utils.py
index b476dc1..deef486 100644
--- a/utils.py
+++ b/utils.py
@@ -640,6 +640,21 @@ class ReportsHandlerMixIn(object):
self._reports = {}
self._reports_state = {}
+ @property
+ def _sorted_reports(self):
+ """ Return a list of reports, sorted in the order
+ of their reporting priority.
+ """
+ reports = sorted(self._reports, key=lambda x: getattr(x, 'name', ''))
+ try:
+ # Remove the current reporter and add it
+ # at the end of the list.
+ reports.pop(reports.index(self))
+ except ValueError:
+ pass
+ reports.append(self)
+ return reports
+
def register_report(self, reportid, r_title, r_cb, checker):
"""register a report
@@ -671,7 +686,7 @@ class ReportsHandlerMixIn(object):
"""render registered reports"""
sect = Section('Report',
'%s statements analysed.'% (self.stats['statement']))
- for checker in self._reports:
+ for checker in self._sorted_reports:
for reportid, r_title, r_cb in self._reports[checker]:
if not self.report_is_enabled(reportid):
continue