загрузите настраиваемый плагин pylint

#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 , что функция тоже никогда не вызывается.