Следующий сценарий: Я просматриваю unsafeMethodCall()
все мои веб-страницы. Этот метод небезопасен только в том случае, если есть ссылка наdoSomeCrazyAjaxStuff()
Мои веб-страницы используют сильные шаблоны (т.е. они были созданы с помощью JSF)
Итак, веб-страница состоит из чего-то вроде этого:
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()
это просто копирует содержимое шаблона на текущую веб-страницу.
Так что если я ищу unsafeMethodCall()
- проблема в том, что мне приходится вручную открывать someWebPagePart.xhtml
для поиска crazyAjaxStuff()
- но someWebPagePart.xhtml
, возможно, использую другие шаблоны. Так что из одного попадания 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
находится, это может привести к опасной ситуации, и мне придется внимательно изучить страницу.
Примечание: вполне возможно, что 3-я страница someotherPage.xhtml
содержит опасныйcrazyAjaxStuff()
решение1
я хотел бы использоватьаккиз командной строки. Это быстро, это покажет вам номера строк в вашем коде и файлы, где они находятся. Это будет сделано рекурсивно, и вывод будет немного симпатичным с цветами. Вы можете действительно пофантазировать с регулярным выражением и можете передать его самому себе, чтобы искать в файлах, которые вы найдете с помощью unsafeMethodCall для crazyAjaxStuff. Простопрочитайте документациюи проявите креативность. Если вам это нужнодля Windows см. это
Установить акк:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
Запустите его, выполняя поиск по всем типам файлов, без учета регистра, рекурсивно с использованием буквального шаблона.
ack -airQ "unsafeMethodCall"
Или используйте ключ -l, чтобы просто получить пути к файлам, а затем передайте их через другую команду ack или другой инструмент.
ack -larQ "unsafeMethodCall"