Programa / ferramenta do Windows necessário para pesquisar recursivamente por meio de arquivos referenciados em um arquivo

3

Seguinte cenário: Eu procuro por unsafeMethodCall() em todas as minhas páginas da web. Este método só é inseguro no caso de haver uma referência de doSomeCrazyAjaxStuff()

Minhas páginas da web estão usando modelos strongs (ou seja, foram construídos com o JSF)

Assim, uma página da Web consiste em algo como isto:

<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()

isso apenas copia o conteúdo do modelo na página da web atual.

Portanto, se eu pesquisar por unsafeMethodCall() - o problema é que eu tenho que abrir manualmente someWebPagePart.xhtml para pesquisar por crazyAjaxStuff() - mas someWebPagePart.xhtml pode estar usando outros modelos. Então, a partir de 1 hit de UnsafeMethodCalls, posso acabar com MUITAS páginas que tenho que abrir.

Então, basicamente, desejo varrer um arquivo chamado "somefile.xhtml" para quaisquer ocorrências de um modelo. Se existe um template que eu quero procurar nesse template também, e eu quero procurar no template do template etc também: -)

Existe algum programa ou ferramenta que possa resolver este problema?

[EDITAR]

Então, basicamente, eu tenho um arquivo com este conteúdo: (isso é 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 agora d: /dev/workspace/WebContents/mypages/editing/someWebPagePart.xhtml, poderei ver o que finalmente é exibido na página - porque o conteúdo de someWebPagePart.xhtml será automaticamente copiado por o servidor da web para a página final da web. O que estou procurando 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 em que 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 perigoso crazyAjaxStuff()

    
por Toskan 20.08.2012 / 17:32

1 resposta

0

Eu usaria ack na linha de comando. É rápido, mostrará os números de linha em seu código e os arquivos onde eles estão. Ele fará isso de forma recursiva e a saída será um pouco bonita com as cores. Você pode ficar realmente chique com o regex e pode canalizá-lo para si mesmo para pesquisar os arquivos que encontrar com o inseguroMethodCall para crazyAjaxStuff. Apenas leia a documentação e seja criativo. Se você precisar para Windows, veja isto

Instalar o ack:

curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3

Execute-o, pesquisando todos os tipos de arquivo, case insensitvely, recursivamente com o padrão literal

ack -airQ "unsafeMethodCall"

Ou use a opção -l para obter apenas os caminhos de arquivo e, em seguida, canalize-os por meio de outro comando ack ou outra ferramenta.

ack -larQ "unsafeMethodCall"

    
por 25.08.2012 / 02:26