Для следующего кода
"""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
чтобы она могла найти этот тип ошибки?pylint
под капотом.)Есть ли опция для включения 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 доступен.