Как передать аргументы optionparser через pylint?

#python-3.x #pycharm #pylint

#python-3.x #pycharm #pylint

Вопрос:

test.py

  from optparse import OptionParser
    
    
    class Test(object):
        def __init__(self):
            pass
    
        def _test1(self, some_val):
            print(some_val)
    
        def main(self, some_val):
            self._test1(some_val)
    
    
    if __name__ == "__main__":
        parser = OptionParser()
        parser.add_option("-a", "--abcd", dest="abcd", default=None,help="some_val")
    
        (options, args) = parser.parse_args()
        val = options.abcd
    
        mainobj = Test()
        mainobj.main(val)
  

Приведенный выше скрипт работает при выполнении python test.py --abcd=wxyz
Когда я запускаю python -m pylint test.py --abcd=wxyz , не выполняется.

Ошибка:

 strong text    Usage: __main__.py [options]
    
__main__.py: error: no such option: --abcd
  

Как выполнить через pylint?
Не могли бы вы мне помочь, пожалуйста?

Комментарии:

1. Я не понимаю, почему вы хотели бы это сделать. Я не думаю, что есть смысл делать такую вещь. pylint не заботится об этих аргументах. Вызов python -m pylint test.py — это, вероятно, то, что вы хотите сделать.

Ответ №1:

Вы не можете отправлять новые аргументы, подобные этому, используя Pylint

Pylint — это инструмент статического анализа кода. Это НЕ запускает вашу программу. Поэтому не имеет значения, какие аргументы отправляются в основную программу, которую вы хотите протестировать. Представьте, что он проверяет ваш код как «текст», не запуская его. Также синтаксис, который вы используете в командной строке, неправильный, потому что после -m pylint отправляемые аргументы на самом деле являются аргументами Pylint. У Pylint есть собственный набор опций и правил, которые вы можете установить. вы можете просмотреть сводку здесь или просто ввести в командной строке это:

 pylint --help
  

Получаемое сообщение об ошибке является ошибкой Pylint. если вы хотите изменить параметры, которые вы вставляете в Pylint, вам, я полагаю, придется изменить его исходный код…

Надеюсь, я правильно понял ваш вопрос и что это помогает.