Seguinte cenário: procuro unsafeMethodCall()
em todas as minhas páginas da web. Este método só é inseguro caso haja uma referência dedoSomeCrazyAjaxStuff()
Minhas páginas da web estão usando modelos fortes (ou seja, foram construídas com JSF)
então uma página da web consiste em algo assim:
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()
isso apenas copia o conteúdo do modelo para a página atual.
Então, se eu pesquisar unsafeMethodCall()
- o problema é que preciso abrir manualmente someWebPagePart.xhtml
para pesquisar crazyAjaxStuff()
- mas someWebPagePart.xhtml
posso estar usando outros modelos. Portanto, a partir de uma ocorrência de unsafeMethodCalls, posso acabar com MUITAS páginas que preciso abrir.
Basicamente, quero verificar um arquivo chamado "somefile.xhtml" em busca de qualquer ocorrência de um modelo. Se houver um modelo, quero pesquisar nesse modelo também, e também quero pesquisar no modelo do modelo, etc. :-)
Existe um programa ou ferramenta que possa resolver este problema?
[EDITAR]
Então basicamente eu tenho um arquivo com este conteúdo: (este é apenas um exemplo)
<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>
Quando eu abrir d:/dev/workspace/WebContents/mypages/editing/someWebPagePart.xhtml poderei ver o que finalmente é realmente exibido na página - porque o conteúdo de someWebPagePart.xhtml será copiado automaticamente pelo servidor web para a página final da web. O que procuro no arquivo someWebPagePart.xhtml
é algo assim:
<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>
Desde:
<my:tag2> crazyAjaxStuff()</my:tag2>
será copiado para a mesma página onde unsafeMethodCall
está localizado, isso pode levar a uma condição perigosa e eu teria que dar uma olhada na página.
Nota: é muito possível que a terceira página someotherPage.xhtml
contenha o perigosocrazyAjaxStuff()
Responder1
eu usariaackna linha de comando. É rápido, mostrará os números das linhas do seu código e os arquivos onde eles estão. Isso será feito de forma recursiva e a saída ficará um pouco bonita com as cores. Você pode ficar realmente sofisticado com o regex e canalizá-lo para si mesmo para pesquisar os arquivos encontrados com unsafeMethodCall para crazyAjaxStuff. Apenasleia a documentaçãoe seja criativo. Se você precisarpara Windows veja isto
Instale a confirmação:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
Execute-o, pesquisando todos os tipos de arquivo, sem distinção entre maiúsculas e minúsculas, recursivamente com padrão literal
ack -airQ "unsafeMethodCall"
Ou use a opção -l para obter apenas os caminhos dos arquivos e, em seguida, canalize isso por meio de outro comando ack ou outra ferramenta.
ack -larQ "unsafeMethodCall"