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 に答える