Пилинт и "ссылка перед назначением"
Для следующего кода
"""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 правильно сообщает о проблеме.
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 ответ
Есть ли возможность для 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.