#python #pylint #pylintrc
#питон #пиллинт #pylintrc
Вопрос:
Я пытаюсь написать простой плагин pylint, но получаю следующую ошибку при любом вводе.
__инициализация__py
""" Register all plugin """ #!/usr/bin/env python from .check_os_walk import check_os_walk def register(linter): """ entry point for pylint :param linter: linter obj :return: """ linter.register_checker(CheckOswalk(linter))
check_os_walk.py
#!/usr/bin/env python import astroid from pylint.checkers import BaseChecker, utils from pylint.interfaces import IAstroidChecker class CheckOswalk(BaseChecker): __implements__ = (IAstroidChecker,) name = 'no-need-to-call-os-walk' msg = {'R100': ('please avoid using os.walk', 'os.walk_used', 'os.walk use unless it is needed and prefer os.scandir in python3')} def visit_name(self, node): print(node.parent) self.add_message('os.walk_used', node)
dir_traversal.py «»» Каталог траверсов «»»
#!/usr/bin/env python import os def main(): """ print directory :return: """ cwd = os.getcwd() for root, dirs, files in os.walk(cwd, topdown=False): for name in files: print(os.path.join(root, name)) for name in dirs: print(os.path.join(root, name)) if __name__ == "__main__": main()
команда venv/bin/pylint —загрузка плагинов=$PWD/’init.py‘ dir_traversal.py
Ошибка:
venv/lib/python3.6/site-packages/pylint/lint/pylinter.py", line 613, in load_plugin_configuration self.add_message("bad-plugin-value", args=(modname, e), line=0) File "venv/lib/python3.6/site-packages/pylint/lint/pylinter.py", line 1527, in add_message end_col_offset, File "venv/lib/python3.6/site-packages/pylint/lint/pylinter.py", line 1456, in _add_one_message self.stats.increase_single_module_message_count(self.current_name, msg_cat, 1) File "venv/lib/python3.6/site-packages/pylint/utils/linterstats.py", line 296, in increase_single_module_message_count self.by_module[modname][type_name] = increase KeyError: None
Ответ №1:
В вашем __init__.py
, CheckOswalk
не определено. Это не приводит к сбою, потому что кажется register
, что функция тоже никогда не вызывается.