Pylint и «ссылка перед назначением»

1

Для следующего кода

"""Test pylint on undefined variable"""
import random


def main():
    """Use undefined variable"""

    if random.randint(0, 10) == 6:
        thing = "hi"
    print(thing)


if __name__ == '__main__':
    main()

PyCharm правильно сообщает о проблеме.

Изображение 174551

pylint (2.0.0, Python 3.6.6) однако не распознает его:

Your code has been rated at 10.00/10 (previous run: 10.00/10, +0.00)

Но я бы хотел, чтобы он нашел это, чтобы позволить моему CI потерпеть неудачу в этих случаях.

Так что на самом деле у меня есть два вопроса:

  • Есть ли опция для pylint чтобы она могла найти этот тип ошибки?
  • Что такое линт PyCharm по умолчанию? (Я всегда думал, что это pylint под капотом.)
Теги:
pylint
lint

1 ответ

1
Лучший ответ

Есть ли опция для включения pylint, чтобы она могла найти такую ошибку?

Pylint в настоящее время не может обнаружить возможные неопределенные переменные в условном или контрольном потоке. Будущая версия Pylint может распознавать такие ошибки. На момент вашего вопроса есть открытая проблема для добавления поддержки для распознавания возможных неопределенных переменных внутри блоков потока управления, таких как ваш пример.

Pylint распознает переменные, которые определенно не определены до их использования, как в этом примере

print(x)
x = "Hello, world"

или этот

print(y)
if random.randint(0,10) == 3:
    y = "ok"

Что такое линт PyCharm по умолчанию? (Я всегда думал, что это под крышкой.)

По умолчанию PyCharm использует собственную библиотеку внутреннего контроля. PyCharm реализован на Java, а также в библиотеке инспекций.

Можно использовать Pylint с PyCharm, но он не встроен или не используется по умолчанию. Раствор для настройки Pylint в качестве внешнего инструмента показан здесь, и есть также плагин Pylint для PyCharm доступен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню