Folgendes Szenario: Ich suche unsafeMethodCall()
in allen meinen Webseiten nach. Diese Methode ist nur dann unsicher, wenn es einen Verweis aufdoSomeCrazyAjaxStuff()
Meine Webseiten verwenden starkes Templating (d. h. sie wurden mit JSF erstellt)
Eine Webseite besteht also etwa aus Folgendem:
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()
Dadurch wird einfach der Inhalt der Vorlage in die aktuelle Webseite kopiert.
Wenn ich also suche unsafeMethodCall()
– das Problem ist, dass ich manuell öffnen muss, someWebPagePart.xhtml
um zu suchen crazyAjaxStuff()
– aber someWebPagePart.xhtml
möglicherweise andere Vorlagen verwende. Nach einem Treffer von unsafeMethodCalls kann es also passieren, dass ich SEHR VIELE Seiten öffnen muss.
Ich möchte also grundsätzlich eine Datei namens „somefile.xhtml“ nach Vorkommen einer Vorlage durchsuchen. Wenn eine Vorlage vorhanden ist, möchte ich auch in dieser Vorlage suchen, und ich möchte auch in der Vorlage der Vorlage usw. suchen :-)
Gibt es ein Programm oder Tool, das dieses Problem lösen könnte?
[BEARBEITEN]
Im Grunde habe ich also eine Datei mit diesem Inhalt: (das ist nur ein Beispiel)
<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>
Wenn ich jetzt d:/dev/workspace/WebContents/mypages/editing/someWebPagePart.xhtml öffne, kann ich sehen, was letztendlich tatsächlich auf der Seite angezeigt wird – denn der Inhalt von someWebPagePart.xhtml wird vom Webserver automatisch auf die endgültige Webseite kopiert. Was ich in der Datei suche, someWebPagePart.xhtml
ist ungefähr Folgendes:
<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>
Seit:
<my:tag2> crazyAjaxStuff()</my:tag2>
auf die gleiche Seite kopiert wird unsafeMethodCall
, auf der sich befindet. Dies kann zu gefährlichen Situationen führen und ich müsste mir die Seite genau ansehen.
Hinweis: Es ist durchaus möglich, dass die 3. Seite someotherPage.xhtml
die gefährlichencrazyAjaxStuff()
Antwort1
ich würde ... benutzenackvon der Kommandozeile aus. Es ist schnell, es zeigt Ihnen die Zeilennummern in Ihrem Code und die Dateien, in denen sie sich befinden. Es wird rekursiv ausgeführt und die Ausgabe wird mit Farben etwas hübscher. Sie können mit dem regulären Ausdruck wirklich ausgefallene Dinge machen und ihn an sich selbst weiterleiten, um die Dateien zu durchsuchen, die Sie mit unsafeMethodCall für crazyAjaxStuff finden. EinfachDokumentation lesenund werde kreativ. Wenn du es brauchstfür Windows siehe dies
Installationsbestätigung:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
Führen Sie es aus und durchsuchen Sie alle Dateitypen, ohne Berücksichtigung der Groß- und Kleinschreibung, rekursiv mit wörtlichem Muster
ack -airQ "unsafeMethodCall"
Oder verwenden Sie den Schalter -l, um nur die Dateipfade abzurufen, und leiten Sie diese dann durch einen anderen Ack-Befehl oder ein anderes Tool weiter.
ack -larQ "unsafeMethodCall"