diff options
author | Emile Anclin <emile.anclin@logilab.fr> | 2010-12-09 11:00:07 +0100 |
---|---|---|
committer | Emile Anclin <emile.anclin@logilab.fr> | 2010-12-09 11:00:07 +0100 |
commit | cb2e51b161099e5890a4e438605b38203d9fecad (patch) | |
tree | d3e03113bd3e0c5849c23388c54a7beed89d013e | |
parent | be454880a7685ea76fc97de87ca606b4380793b2 (diff) | |
download | pylint-git-cb2e51b161099e5890a4e438605b38203d9fecad.tar.gz |
cleanup: remove unused needs_checkers attribut and sort_checkers method
what was expected to be accomplished needs_checkers will be done
easier with a decorator
-rw-r--r-- | checkers/__init__.py | 2 | ||||
-rw-r--r-- | lint.py | 46 | ||||
-rw-r--r-- | test/unittest_lint.py | 4 | ||||
-rw-r--r-- | utils.py | 8 |
4 files changed, 20 insertions, 40 deletions
diff --git a/checkers/__init__.py b/checkers/__init__.py index 40433cf8b..a8d2bf164 100644 --- a/checkers/__init__.py +++ b/checkers/__init__.py @@ -70,8 +70,6 @@ class BaseChecker(OptionsProviderMixIn, ASTWalker): level = 1 # ordered list of options to control the ckecker behaviour options = () - # checker that should be run before this one - needs_checkers = () # messages issued by this checker msgs = {} # reports issued by this checker @@ -42,7 +42,6 @@ from logilab.common.modutils import load_module_from_name from logilab.common.interface import implements from logilab.common.textutils import splitstrip from logilab.common.ureports import Table, Text, Section -from logilab.common.graph import ordered_nodes from logilab.common.__pkginfo__ import version as common_version from logilab.astng import MANAGER, nodes @@ -422,35 +421,20 @@ This is used by the global evaluation report (RP0004).'}), # code checking methods ################################################### - def sort_checkers(self, checkers=None): - if checkers is None: - checkers = [checker for checkers in self._checkers.values() - for checker in checkers] - graph = {} - cls_instance = {} - for checker in checkers: - graph[checker.__class__] = set(checker.needs_checkers) - cls_instance[checker.__class__] = checker - checkers = [cls_instance.get(cls) for cls in ordered_nodes(graph)] - checkers.remove(self) - checkers.insert(0, self) - return checkers - - def _get_checkers(self): - # compute checkers needed according to activated messages and reports - neededcheckers = set() - for checkers in self._checkers.values(): - for checker in checkers: - for msgid in checker.msgs: - if self._msgs_state.get(msgid, True): - neededcheckers.add(checker) - break - else: - for reportid, _, _ in checker.reports: - if self.is_report_enabled(reportid): - neededcheckers.add(checker) - break - return self.sort_checkers(neededcheckers) + def get_checkers(self): + """return all available checkers as a list""" + return [self] + [c for checkers in self._checkers.values() + for c in checkers if c is not self] + + def needed_checkers(self): + """return checkers needed for activated messages and reports""" + neededcheckers = [] + get_msg = self._msgs_state.get + for checker in self.get_checkers(): + if ( any(get_msg(msg, True) for msg in checker.msgs) or + any(get_msg(msg, True) for msg in checker.reports) ): + neededcheckers.append(checker) + return neededcheckers def check(self, files_or_modules): """main checking entry: check a list of files or modules from their @@ -459,7 +443,7 @@ This is used by the global evaluation report (RP0004).'}), self.reporter.include_ids = self.config.include_ids if not isinstance(files_or_modules, (list, tuple)): files_or_modules = (files_or_modules,) - checkers = self._get_checkers() + checkers = self.needed_checkers() rawcheckers = [] walker = PyLintASTWalker() # notify global begin diff --git a/test/unittest_lint.py b/test/unittest_lint.py index 81d1d399b..aed068d20 100644 --- a/test/unittest_lint.py +++ b/test/unittest_lint.py @@ -223,9 +223,9 @@ class PyLinterTC(TestCase): def test_enable_checkers(self): self.linter.disable('design') - self.failIf('design' in set([c.name for c in self.linter._get_checkers()])) + self.failIf('design' in [c.name for c in self.linter.needed_checkers()]) self.linter.enable('design') - self.failUnless('design' in set([c.name for c in self.linter._get_checkers()])) + self.failUnless('design' in [c.name for c in self.linter.needed_checkers()]) class ConfigTC(TestCase): @@ -288,7 +288,7 @@ class MessagesHandlerMixIn: def print_full_documentation(self): """output a full documentation in ReST format""" by_checker = {} - for checker in self.sort_checkers(): + for checker in self.get_checkers(): if checker.name == 'master': prefix = 'Main ' print "Options" @@ -343,7 +343,7 @@ class MessagesHandlerMixIn: def list_messages(self): """output full messages list documentation in ReST format""" msgids = [] - for checker in self.sort_checkers(): + for checker in self.get_checkers(): for msgid in checker.msgs.keys(): msgids.append(msgid) msgids.sort() @@ -394,9 +394,7 @@ class ReportsHandlerMixIn: self.reporter.set_output(open(filename, 'w')) sect = Section('Report', '%s statements analysed.'% (self.stats['statement'])) - checkers = self.sort_checkers(self._reports) - checkers.reverse() - for checker in checkers: + for checker in self._reports: for reportid, r_title, r_cb in self._reports[checker]: if not self.is_report_enabled(reportid): continue |