Статическая проверка того, что количество аргументов для ведения журнала Python соответствует количеству заполнителей.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Статическая проверка того, что количество аргументов для ведения журнала Python соответствует количеству заполнителей.

Сообщение Anonymous »

Я курирую большое приложение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»