说我有这样的功能:
function foo(x,y,z){
// x.bar();
x.baz();
}
如果我运行foo.toString().match(/x.bar/)
,我将获得已注释掉的匹配。
我正在寻找一个有人写过的图书馆,只有在没有注释的情况下才可以帮助我匹配正则表达式。有没有这样的lib?
答案 0 :(得分:2)
要删除/忽略注释并保留行号,您必须自己编写一些可以解析/理解Javascript注释并可能将其转换为空格的内容,以便您可以运行正则表达式。
但是,请注意,相同的功能可以通过许多不同的方式执行,例如:
x["bar"]()
var y = "bar";
x[y]();
x.bar.call(x);
y = x;
y.bar();
或者,没有执行过这样的方法:
if (false) {
x.bar();
}
var str = " x.bar(); "
return;
x.bar();
因此,在没有实际运行代码并直接监视.bar()
方法的情况下,尝试真正弄清楚特定函数调用是否实际由代码进行,这是一种滑坡。