Я курирую большое приложение Python (FastAPI) и анализирую наши недавние ошибки. Один из наиболее распространенных типов ошибок во время выполнения, которые мы видели, - это код обработки ошибок, где у нас есть что-то вроде:
Код: Выделить всё
...
except SomeError e:
logging.error("There was an error with updating the settings for user %s. Update was %s", user.uuid)
Ошибка, которую мы вызываем:
Код: Выделить всё
TypeError: not enough arguments for format string
Call stack:
File "", line 1, in
Message: 'There was an error with updating the settings for user %s. Update was %s'
Arguments: (3,)
Что, конечно, имеет смысл: мы предоставляем неправильное количество аргументов функции logging.error. Мне интересно, есть ли какой-нибудь способ обнаружить это с помощью статических инструментов до того, как наш код будет запущен. На самом деле мы не собираемся обеспечивать, чтобы модульные тесты покрывали 100 % нашего кода, особенно код обработки ошибок, и ошибки такого типа очень сложно обнаружить при проверке кода.
Такое ощущение, что это именно та проблема, которую должны уметь решать инструменты статического анализа, например, когда в функцию передается неправильное количество аргументов.
Существует ли такой инструмент?
Подробнее здесь:
https://stackoverflow.com/questions/781 ... er-of-plac