Я унаследовал большую кучу кода Ruby, который, честно говоря, почти невозможно понять для такого смертного, как я. Это на самом деле Rspec unit test код, но структура "очень необычна", чтобы сделать это красиво.
То, что я хотел бы сделать, это запустить код и записать следующую информацию:
- каждый метод, который вызывается, включая имя класса, определяющего метод, и имя файла, в котором был указан метод, вызываемый (да, у нас есть тот же класс/метод, определенный в нескольких разных файлах, и это трудно узнать, что вызывается)
- (необязательно) параметры, переданные каждому вызванному методу
С этим я мог бы попытаться реорганизовать его. Без этого задача будет очень сложной, чтобы выправить ее из-за размера базы кода (20k + unit test).
Я не могу позволить себе входить и выполнять опционные изменения в выполняемом коде, потому что он ломается, когда вы даже используете грубый язык вокруг него (то есть часто). Вместо этого мне нужно иметь возможность управлять кодом в его существующем состоянии или с минимальными изменениями в том, что существует сейчас.
Есть ли способ регистрации этого уровня детализации без внесения оптовых изменений в базу кода? Я посмотрел на профилировщик Ruby, чтобы увидеть, может ли это помочь, и, возможно, это возможно; Мне любопытно, есть ли лучший способ (в частности, регистрировать имя файла, содержащего вызванный метод).
Заранее спасибо