У меня есть устаревший код для поддержки, и, пытаясь понять логику кода, я столкнулся с множеством раздражающих проблем.
Приложение написано в основном на Java Script, с широким использованием jQuery + различные плагины, особенно Accordion. Он создает поток, подобный мастеру, где клиентский код для следующего шага загружается в фоновом режиме путем внедрения результата удаленного запроса AJAX. Он также часто использует обратные вызовы и довольно сложный стиль программирования «по соглашению» (множество обработчиков событий создаются на лету на основе определенных имен объектов - например, имя текущей страницы, имя текущего шага).
Кроме того, код очень запутан и нет очевидной внутренней структуры - функции разбросаны по коду, имена файлов не отражают бизнес-роль кода, многие функции и фрагменты кода, скорее всего, не используется вообще и т. д.
ПРОБЛЕМА: Как подойти к этой базе кода, чтобы внутренний поток кода можно было как бы «перепроектировать» с помощью набора интеллектуальных средств отладки.
В идеале я хотел бы иметь возможность подключаться к работающему приложению и шагать по коду, нарушая каждый новый вызов функции.
Также было бы неплохо иметь возможность создавать «диаграмму вызовов» в приложении (т. Е. Для запуска определенной логики страницы этот конкретный поток вызовов функций выполнялся в определенном порядке).
Не говоря уже о возможности выполнить анализ покрытия, выявляя потенциально потерянные фрагменты кода.
Я хотел бы еще раз подчеркнуть, что невозможно понять внутреннюю логику приложения, просто взглянув на сам код, если у вас нет МНОГО свободного времени и ящиков для пива, которых, к сожалению, у меня нет: / (позор ...)
ИДЕ, которая могла бы помочь в расширении этого кода, было бы также неплохо, но в настоящее время я изучаю возможность использования Visual Studio 2010 для выполнения этой работы, поскольку сам сайт представляет собой смесь классического ASP и ASP. NET (я бы сказал - 70% Java Script с jQuery, 30% ASP).
Я, очевидно, пробовал FireBug, но мне не удалось найти способ определения точки останова или шага в коде, который «внедряется» в клиентский JS с помощью вызовов AJAX (т. Е. Приложение извлекает код, вызывая URL-адрес и внедряет его в локальный код клиента). Отладчик Venkman имел похожие проблемы.
Любые намеки приветствуются. Не стесняйтесь задавать дополнительные вопросы.