2012-03-29 2 views
1

Я хочу извлечь javasscript-код и выяснить, есть ли какие-либо создания динамических тэгов, например document.createElement('script'); Я пытался сделать это с помощью регулярных выражений, но с использованием регулярных выражений ограничивает меня только некоторыми форматами, поэтому я думал написания парсера javascript, который извлекает все ключевые слова, строки и функции из кода javascript.Написание парсера для javascript-кода

+0

так что конкретно ваша проблема с написанием? –

+0

Как вы знаете, что он не будет вызывать функции, которые создают элементы? Например, jQuery также может добавлять новые элементы в DOM, и ваш подход прямо сейчас не обнаружит этого. –

+0

Я не знаю, как это начать – user1275375

ответ

0

Может быть, вы должны попробовать использовать Burrito

2

В целом нет никакого способа узнать, является ли данная строка кода будет когда-либо бежать, вам нужно будет решить halting problem. Если вы ограничиваете свой анализ только тем, чтобы найти результаты вызова функции, вы не добились большого прогресса. Наивные методы по-прежнему будут легко обмануть, если вы просто используете регулярное выражение для document.createElement, вы не сможете сопоставить что-то простое, как document["create" + "Element"]. В общем, вам нужно будет не только разобрать код, но и оценить его, чтобы обойти это. И чтобы быть уверенным, что вы можете оценить код, который вам снова понадобится для решения проблемы с остановкой.

0

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

Они могут быть немного трудно работать с ним. Но лучше работать с ними. Существуют и другие проекты, которые используют такие, как burrito или code surgeon. Таким образом, вы можете посмотреть исходный код и посмотреть, как они их используют.

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

Смежные вопросы