次のシナリオ: すべてのWebページで参照しますunsafeMethodCall()
。この方法は、次の参照がある場合にのみ安全ではありません。doSomeCrazyAjaxStuff()
私のウェブページは強力なテンプレートを使用しています(つまり、JSF で構築されています)
つまり、Web ページは次のようなものから構成されます。
<ui:decorate template="/mypages/editing/someWebPagePart.xhtml">
unsafeMethodCall()
これはテンプレートの内容を現在の Web ページにコピーするだけです。
したがって、検索する場合unsafeMethodCall()
(問題は、someWebPagePart.xhtml
検索するために手動で開かなければならないことですcrazyAjaxStuff()
が)、someWebPagePart.xhtml
他のテンプレートを使用している可能性があります。そのため、unsafeMethodCalls の 1 つのヒットから、開かなければならないページが大量に発生する可能性があります。
つまり、基本的に「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 の内容が Web サーバーによって最終的な Web ページに自動的にコピーされるためです。ファイル内で探しているのは、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
注: 3ページ目には危険な内容が含まれている可能性が非常に高いcrazyAjaxStuff()
答え1
私は使うだろうああコマンドラインから実行します。高速で、コード内の行番号と、その行があるファイルを表示します。再帰的に実行され、出力は色付きで少しきれいになります。正規表現をもっと凝ったものにして、unsafeMethodCall for crazyAjaxStuff で見つかったファイルを検索するために、正規表現自体にパイプすることもできます。ドキュメントを読む創造力を働かせてください。必要ならWindowsの場合はこちらをご覧ください
インストール確認:
curl http://betterthangrep.com/ack-standalone > ~/bin/ack && chmod 0755 !#:3
実行すると、大文字と小文字を区別せず、リテラルパターンを使用して再帰的にすべてのファイルタイプを検索します。
ack -airQ "unsafeMethodCall"
または、-l スイッチを使用してファイル パスを取得し、それを別の ack コマンドまたは別のツールにパイプします。
ack -larQ "unsafeMethodCall"