ファイル内から参照されるファイルを再帰的に検索するために必要な Windows プログラム / ツール

ファイル内から参照されるファイルを再帰的に検索するために必要な Windows プログラム / ツール

次のシナリオ: すべての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"

関連情報