Пилинт и "ссылка перед назначением" - PullRequest
0 голосов
/ 11 октября 2018

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

"""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 правильно сообщает о проблеме.

enter image description here

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 под капотом.)

1 Ответ

0 голосов
/ 11 октября 2018

Есть ли опция для включения в 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 .

...