Я использую pydev, где я установил pylint. Проблема в том, что даже внутри комментариев, pylint сообщает о предупреждениях. Я пытался отключить любую проверку внутри любой строки или комментария блока. Кроме того, я хочу следовать соглашению об именах camelCase вместо подчеркиваний для переменных и аргументов в моем коде. Есть ли способ указать такое правило, не вставляя мой код с любым pylint: отключить комментарии?
Можно ли настроить проверку ошибок Pylint?
Ответ 1
Вы можете глобально отключить предупреждения определенного класса, используя
pylint --disable=W1234
или с помощью специального файла конфигурации PyLint
pylint --rcfile=/path/to/config.file
Пример файла конфигурации приведен ниже:
[MESSAGES CONTROL]
# C0111 Missing docstring
# I0011 Warning locally suppressed using disable-msg
# I0012 Warning locally suppressed using disable-msg
# W0704 Except doesn't do anything Used when an except clause does nothing but "pass" and there is no "else" clause
# W0142 Used * or * magic* Used when a function or method is called using *args or **kwargs to dispatch arguments.
# W0212 Access to a protected member %s of a client class
# W0232 Class has no __init__ method Used when a class has no __init__ method, neither its parent classes.
# W0613 Unused argument %r Used when a function or method argument is not used.
# W0702 No exception type specified Used when an except clause doesn't specify exceptions type to catch.
# R0201 Method could be a function
# W0614 Unused import XYZ from wildcard import
# R0914 Too many local variables
# R0912 Too many branches
# R0915 Too many statements
# R0913 Too many arguments
# R0904 Too many public methods
disable=C0111,I0011,I0012,W0704,W0142,W0212,W0232,W0613,W0702,R0201,W0614,R0914,R0912,R0915,R0913,R0904,R0801
Смотрите документацию на специальном сайте Pylint.
Ответ 2
Как сказал cfedermann, вы можете указать сообщения, которые нужно отключить, в файле ~/.pylintrc
(обратите внимание, что вы можете создать заглушку с помощью pylint --generate-rcfile
если вы не хотите использовать встроенные комментарии.
Вы также увидите в сгенерированном файле в разделе [BASIC] такие параметры, как "method-rgx", "function-rgx" и т.д., Которые вы можете настроить по своему усмотрению для поддержки стиля падежа верблюдов, а не стиля подчеркивания pep8.,
Ответ 3
Хотя это старый вопрос, следует упомянуть, теперь можно указать их собственное регулярное выражение для сопоставления с именами.
Тогда ваше регулярное выражение для соответствия верблюжьему футляру будет выглядеть примерно так:
[a-z][a-zA-Z0-9]{2,30}$
Ответ 4
Вот пример пользовательской проверки, и другой пример, который легче понять.
Я столкнулся с проблемой, похожей на вас. Следующий код является моим решением. Я настроил одну проверку для запрещенного импорта datetime.now
. Вы можете взять его для справки:
class TestChecker(BaseChecker):
"""
find the check type in the following url:
https://github.com/PyCQA/pylint/blob/63eb8c4663a77d0caf2a842b716e4161f9763a16/pylint/checkers/typecheck.py
"""
__implements__ = IAstroidChecker
name = 'test-checker'
priority = -1
msgs = {
'W0001': (
'You should not import "%s"',
'import-datetime-returns',
'Should not import datetime'
),
}
def __init__(self, linter):
super().__init__(linter)
# I use original pylint ImportsChecker as a property
# from import **
self.forbidden_import = ['datetime.datetime.now']
self.forbidden_import_from = ['datetime.now', 'now']
self.forbidden_import_attribute = ['datetime.now', 'now', 'datetime.datetime.now']
#the function will be rewrited
def visit_importfrom(self, node):
names = [name for name, _alias in node.names]
for item in names:
for check in self.forbidden_import_from:
if item == check:
self.add_message('W0001', node=node, args=item)
def visit_import(self, node):
names = [name for name, _ in node.names]
for item in names:
for check in self.forbidden_import:
if check == item:
self.add_message('W0001', node=node, args=item)
def visit_attribute(self, node):
for check_attr in self.forbidden_import_attribute:
if check_attr == node.as_string():
self.add_message('W0001', node=node, args=check_attr)
def register(linter):
linter.register_checker(TestChecker(linter))
Ответ 5
Есть два способа настроить pylint
.
Использование файла конфигурации
Первый путь, где вы
- вызовите Pylint для создания файла конфигурации шаблона
- Затем вы настраиваете файл конфигурации под свои нужды/желания
- затем вы помещаете файл конфигурации в папку по умолчанию для файла конфигурации Pylint или всегда вызываете Pylint и указываете путь к файлу конфигурации
Использование скрипта-обёртки
Второй способ - создание сценария-оболочки, который вызывает pylint, а в сценарии-оболочке - несколько строк, которые выглядят следующим образом:
pylint \
${options_here} \
--disable=xyz1 \
--disable=xyz_2 \
${more_options} \
--disable=xyz_N \
--disable=abc \
[email protected]
В настоящее время я использую подход сценария-оболочки, потому что хочу, чтобы проблемы сортировались по номеру строки, и я выполнил некоторые сценарии оболочки, чтобы получить такой порядок сортировки.
Ответ 6
В дополнение к приведенному выше ответу от pradyunsg, вот еще одно регулярное выражение для CamelCase:
^([a-z]\w+[A-Z]+\w+)
(Взято из проверки правописания PyLint.py)