1

抱歉标题,找不到更好的。

假设我们有那个 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 也是如此。

4

2 回答 2

1

这不是一个容易的问题。您正在寻找静态代码分析以通过您的函数生成所有可能的路径。考虑以下代码并问自己如何确定警报是否会运行:

var n = Math.floor(Math.random() * 10),
if (Math.sqrt(n) > n) {
    alert('a');
}

计算机不“知道”它Math.sqrt(n)总是小于n. 如果不运行代码,我如何确定警报不会出现?

在简单的情况下,库可能能够做到这一点,但是当您的函数有许多可能的路径并利用许多函数时,您需要进行大量分析才能获得正确的答案。

于 2012-07-04T19:38:52.710 回答
0

好吧,您可以采用蒙特卡罗方法:记录传递给document.querySelector的所有参数并针对各种输入运行代码。

于 2012-07-04T19:57:52.663 回答