以下场景:我浏览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"