Сайт отладки, написанный в основном на JScript с внедрением кода AJAX - PullRequest
0 голосов
/ 04 мая 2010

У меня есть устаревший код для поддержки, и, пытаясь понять логику кода, я столкнулся с множеством раздражающих проблем.

Приложение написано в основном на Java Script, с широким использованием jQuery + различные плагины, особенно Accordion. Он создает поток, подобный мастеру, где клиентский код для следующего шага загружается в фоновом режиме путем внедрения результата удаленного запроса AJAX. Он также часто использует обратные вызовы и довольно сложный стиль программирования «по соглашению» (множество обработчиков событий создаются на лету на основе определенных имен объектов - например, имя текущей страницы, имя текущего шага).

Кроме того, код очень запутан и нет очевидной внутренней структуры - функции разбросаны по коду, имена файлов не отражают бизнес-роль кода, многие функции и фрагменты кода, скорее всего, не используется вообще и т. д.

ПРОБЛЕМА: Как подойти к этой базе кода, чтобы внутренний поток кода можно было как бы «перепроектировать» с помощью набора интеллектуальных средств отладки.

В идеале я хотел бы иметь возможность подключаться к работающему приложению и шагать по коду, нарушая каждый новый вызов функции.

Также было бы неплохо иметь возможность создавать «диаграмму вызовов» в приложении (т. Е. Для запуска определенной логики страницы этот конкретный поток вызовов функций выполнялся в определенном порядке).

Не говоря уже о возможности выполнить анализ покрытия, выявляя потенциально потерянные фрагменты кода.

Я хотел бы еще раз подчеркнуть, что невозможно понять внутреннюю логику приложения, просто взглянув на сам код, если у вас нет МНОГО свободного времени и ящиков для пива, которых, к сожалению, у меня нет: / (позор ...)

ИДЕ, которая могла бы помочь в расширении этого кода, было бы также неплохо, но в настоящее время я изучаю возможность использования Visual Studio 2010 для выполнения этой работы, поскольку сам сайт представляет собой смесь классического ASP и ASP. NET (я бы сказал - 70% Java Script с jQuery, 30% ASP).

Я, очевидно, пробовал FireBug, но мне не удалось найти способ определения точки останова или шага в коде, который «внедряется» в клиентский JS с помощью вызовов AJAX (т. Е. Приложение извлекает код, вызывая URL-адрес и внедряет его в локальный код клиента). Отладчик Venkman имел похожие проблемы.

Любые намеки приветствуются. Не стесняйтесь задавать дополнительные вопросы.

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Вы можете попробовать использовать "dynaTrace Ajax" для создания диаграммы вызовов, но это не отладчик. Если у вас есть доступ к этому приложению, вы можете использовать ключевое слово «отладчик» для явного определения точки останова в файлах JavaScript. Visual Studio теоретически показывает весь оцененный и загруженный код JavaScript в обозревателе решений, когда вы подключены к IE.

0 голосов
/ 04 мая 2010

Я бы начал с инструментов разработчика Chrome и профилирования отдельных действий, чтобы найти функции для установки точек останова. Функции могут быть расширены, чтобы получить их стек вызовов.

Это может быть, а может и не быть полезным, поскольку вполне возможно получить код, который слишком - ну, скажем так, уникальный - чтобы иметь смысл.

Удачи?

...