Программа / инструмент Windows, необходимые для рекурсивного поиска по файлам, на которые есть ссылки из файла
Следующий сценарий: я просматриваю unsafeMethodCall()
на всех моих веб-страницах. Этот метод небезопасен только в том случае, если есть ссылка на doSomeCrazyAjaxStuff()
Мои веб-страницы используют сильные шаблоны (то есть он был построен с помощью JSF)
поэтому веб-страница состоит из чего-то вроде этого:
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()
это просто копирует содержимое шаблона на текущую веб-страницу.
Так что, если я ищу unsafeMethodCall()
- проблема в том, что я должен открыть вручную someWebPagePart.xhtml
искать crazyAjaxStuff()
- но someWebPagePart.xhtml
может использовать другие шаблоны. Таким образом, от 1 попадания unsafeMethodCalls я могу получить МНОГО страниц, которые мне нужно открыть.
Поэтому я в основном хочу сканировать файл с именем "somefile.xhtml" на наличие вхождения шаблона. Если есть шаблон, который я хочу искать в этом шаблоне, и я хочу искать в шаблоне шаблона и т. Д. Также:-)
Есть ли программа или инструмент, который может решить эту проблему?
[РЕДАКТИРОВАТЬ]
Так что в основном у меня есть файл с таким содержанием: (это всего лишь пример)
<div>
<input value="enterusername"/>
</div>
[...more random web page contents like above this line....]
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
<my:tag> unsafeMethodCall()</my:tag> <!-- this is potentially dangerous with another function call -->
[...more random web page contents like below this line....]
<p></p>
<a href="#Other-Options" accesskey="n" rel="next">Other Options</a>
Когда я сейчас открою d:/dev/workspace/WebContents/mypages/editing/someWebPagePart.xhtml, я смогу увидеть, что в действительности отображается на странице - потому что содержимое файла someWebPagePart.xhtml будет автоматически скопировано веб-сервером на последнюю веб-страницу. Что я ищу в файле someWebPagePart.xhtml
это что-то вроде этого:
<div>
<input value="enterusername"/>
</div>
[...more random web page contents like above this line....]
<ui:decorate template="/mypages/editing/someotherPage.xhtml"> <!-- it could be in there as well -->
<my:tag2> crazyAjaxStuff()</my:tag2> <!-- searching this -->
[...more random web page contents like below this line....]
<p></p>
<a href="#Other-Options" accesskey="n" rel="next">Other Options</a>
Поскольку:
<my:tag2> crazyAjaxStuff()</my:tag2>
будет скопирован на ту же страницу, где unsafeMethodCall
находится, это может привести к опасному состоянию, и мне придется внимательно посмотреть на страницу.
Примечание: вполне возможно, что третья страница someotherPage.xhtml
содержит опасный crazyAjaxStuff()
1 ответ
Я бы использовал ack из командной строки. Это быстро, он покажет вам номера строк в вашем коде и файлы, где они находятся. Это будет делать это рекурсивно, и результат будет немного красивым с цветами. Вы можете по-настоящему полюбить регулярное выражение, и вы можете направить его к себе для поиска файлов, найденных с unsafeMethodCall для crazyAjaxStuff. Просто прочитайте документацию и проявите творческий подход. Если вам это нужно для Windows, посмотрите это
Установить подтверждение:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
Запустите его, ищите все типы файлов, без учета регистра, рекурсивно с буквенным шаблоном
ack -airQ "unsafeMethodCall"
Или используйте ключ -l, чтобы просто получить пути к файлам, а затем передать их через другую команду ack или другой инструмент.
ack -larQ "unsafeMethodCall"