对不起标题,无法想出更好的标题。
假设我们有JavaScript代码字符串:
var n = Math.floor(Math.random() * 10),
className;
if (n === 1) {
className = "a";
} else if (n === 2) {
className = "b";
} else {
className = "c";
}
document.querySelector("." + className);
我的想法是希望将所有可能的字符串发送到该特定函数(document.querySelector
)。所以我想得到['.a', '.b', '.c']
。也可能涉及多个变量,在代码中多次修改,因此列表会更长。
现在我如何在Python中执行此操作?我看过PyV8,但没有文档,所以这不是一个选项;同样适用于过时的python-spidermonkey。
答案 0 :(得分:1)
这不是一个容易的问题。您正在寻找static code analysis来生成通过您的函数的所有可能路径。请考虑以下代码,并问自己如何确定是否将运行警报:
var n = Math.floor(Math.random() * 10),
if (Math.sqrt(n) > n) {
alert('a');
}
电脑没有"知道" Math.sqrt(n)
始终小于n
。如果不运行代码,我如何确定警报不会显示?
在简单的情况下,库可能会这样做,但是当你的函数有许多可能的路径并使用许多函数时,你需要进行一些重要的分析才能得到正确的答案。
答案 1 :(得分:0)
嗯,您可以采用蒙特卡罗方法:记录传递给document.querySelector
的所有参数,并针对各种输入运行代码。