diff --git a/scripts/pylint_checkers/settrace.py b/scripts/pylint_checkers/settrace.py new file mode 100644 index 000000000..77ada9be5 --- /dev/null +++ b/scripts/pylint_checkers/settrace.py @@ -0,0 +1,49 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2014 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +"""Custom astroid checker for set_trace calls.""" + +from pylint.interfaces import IAstroidChecker +from pylint.checkers import BaseChecker, utils + + +class SetTraceChecker(BaseChecker): + + """Custom astroid checker for set_trace calls.""" + + __implements__ = IAstroidChecker + name = 'settrace' + msgs = { + 'E9101': ('set_trace call found', 'set-trace', None), + } + priority = -1 + + @utils.check_messages('set-trace') + def visit_callfunc(self, node): + """Visit a CallFunc node.""" + if hasattr(node, 'func'): + infer = utils.safe_infer(node.func) + if infer: + if getattr(node.func, 'name', None) == 'set_trace': + self.add_message('set-trace', node=node) + + +def register(linter): + """Register this checker.""" + linter.register_checker(SetTraceChecker(linter)) diff --git a/scripts/run_checks.py b/scripts/run_checks.py index 01dac33b3..aa5493fa5 100755 --- a/scripts/run_checks.py +++ b/scripts/run_checks.py @@ -69,7 +69,8 @@ options = { '--rcfile=.pylintrc', '--load-plugins=pylint_checkers.config,' 'pylint_checkers.crlf,' - 'pylint_checkers.modeline'], + 'pylint_checkers.modeline,' + 'pylint_checkers.settrace'], 'flake8': ['--config=.flake8'], }, } @@ -201,10 +202,6 @@ def _check_file(fn): if any(line.decode('UTF-8').startswith(c * 7) for c in "<>=|"): print("Found conflict marker in {}".format(fn)) ok = False - elif b'set_trace()' in line and not ( - fn.endswith('debug.py') or fn.endswith('run_checks.py')): - print("Found set_trace in {}".format(fn)) - ok = False return ok