需要通过文件内部引用的文件进行递归搜索的 Windows 程序/工具

需要通过文件内部引用的文件进行递归搜索的 Windows 程序/工具

以下场景:我浏览unsafeMethodCall()所有网页。这种方法只有在引用doSomeCrazyAjaxStuff()

我的网页使用强模板(即使用 JSF 构建)

因此网页由如下内容组成:

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

这只是将模板的内容复制到当前网页中。

因此,如果我搜索unsafeMethodCall()- 问题是我必须手动打开someWebPagePart.xhtml才能搜索crazyAjaxStuff()- 但someWebPagePart.xhtml可能会使用其他模板。因此,从 1 次 unsafeMethodCalls 命中开始,我可能会得到很多我必须打开的页面。

所以我基本上想扫描名为“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 服务器自动复制到最终的网页。我在文件中寻找的内容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包含危险crazyAjaxStuff()

答案1

我会用确认从命令行。它很快,它会显示代码中的行号以及它们所在的文件。它会递归地执行此操作,输出会带有一些漂亮的颜色。你可以使用正则表达式,并且可以将它连接到自身以搜索使用 unsafeMethodCall 找到的 crazyAjaxStuff 文件。只需阅读文档并发挥创造力。如果你需要对于 Windows,请参阅此

安装确认:

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

运行它,搜索所有文件类型,不区分大小写,使用文字模式递归

ack -airQ "unsafeMethodCall"

或者使用 -l 开关仅获取文件路径,然后通过另一个 ack 命令或另一个工具进行管道传输。

ack -larQ "unsafeMethodCall"

相关内容