например, если у вас есть код, который делает что-то подобное где-то в вашей кодовой базе:
>>> import logging
>>> logging.basicConfig()
>>> logger = logging.getLogger(__name__)
>>> logger.critical("foo: %s", 1, 2)
Traceback (most recent call last):
File "/pluto/local/lib/python2.6/logging/__init__.py", line 768, in emit
msg = self.format(record)
File "/pluto/local/lib/python2.6/logging/__init__.py", line 648, in format
return fmt.format(record)
File "/pluto/local/lib/python2.6/logging/__init__.py", line 436, in format
record.message = record.getMessage()
File "/pluto/local/lib/python2.6/logging/__init__.py", line 306, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
>>>
... вы просто получите эту трассировку стека без указания того, где находится исходный оператор плохого регистратора.*
Кажется, что было бы не сложно написать что-то, что использует модуль Tokenize или модуль Ast или что-то для обработки исходного кода Python и обнаружения этих проблем, но я не могу себе представить, что я первый человек, который хотелчто-то вроде этого.
Обновление: я представлял скорее инструмент статического анализа, а не изменение кода регистрации или изменение процесса (например, просмотр кода).Я не считаю, что обзор кода достаточно хорош, потому что люди никогда не бывают непогрешимыми.В моем конкретном случае у нас уже есть много инструментов, которые запускают код и обнаруживают типичные ошибки (например, вы оставили pdb in, pylint и т. Д.) ... Я действительно надеялся добавить инструмент в этот набор инструментов.