gpt4 book ai didi

javascript - 需要检测 Javascript : function calls/args - ANTLR?

转载 作者:搜寻专家 更新时间:2023-11-01 05:25:27 28 4
gpt4 key购买 nike

我需要加载 Javascript 并自动检测它:具体来说,我想记录对函数的每次调用,并提供调用函数时使用的参数列表。

我有一个半生不熟的 Python 方法:使用“re”来匹配“function”关键字——但它真的很原始(不处理注释等)。

我不是 ANTLR 的专家(远非专家):但是我如何轻松地利用一个已经构建的 Javascript 解析器来执行此操作? (我们可以“连接”到标准 Java 以在正确的位置动态创建我需要的代码吗?)

顺便说一句:实际的日志记录将(可能)用 log4javascript 完成;但我也可能只使用“警报”——困难的一点是让代码注入(inject)工作....

因此,例如,我需要转换如下内容:

function foo(bar) {
...
}

进入:

function foo(bar) {
alert("<scriptname.js>: foo was called with arguments: [bar="+bar+"]");
...
}

最佳答案

正则表达式不会这样做。如果您想可靠地检测代码,则需要可靠的解析器和可信赖的机制来插入检测。

请参阅我关于 building test coverage tools by instrumenting code 的论文.它描述了如何以非常通用的方式检测代码,使用源到源程序转换,来完成诸如您想做的事情。

我的公司以这种方式构建了一系列强大的测试覆盖率工具。

你可以用 ANTLR 做这种事情,但它笨拙得多;您已经按程序编写了转换,然后必须从解析树重新生成源代码。那是 a lot harder than it looks .

关于javascript - 需要检测 Javascript : function calls/args - ANTLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com