java -jar lib/js-symbolic-executor.jar filename entryFunction numTests [args]の各オプションの意味と[args]について教えて下さい。


(args)というのはよくmain(string args[])などとあるコマンドより何かしらを引数として受け付けるアレの事でしょうか?
この場合引数として何を受け付けるのか、どこをどのように調べたらよいご教授下さい。

===(原文)Running js-symbolic-executor===
You can run the JUnit tests for js-symbolic-executor by invoking
ant test
Currently, there are not many tests, and one of them fails.
You may get UnsatisfiedLinkError exceptions when trying to run the tests. This
is likely because the shared object files that CVC3 created when it was built
are not found by the linker. Ant is able to tell the JVM where to find one of
these files (libcvc3jni.so), but not the other. Two ways to fix this are:

1. Make a link to cvc3/lib/libcvc3.so (or some variant thereof, depending on
your link error) somewhere the linker looks by default, such as /usr/lib


2. Set LD_LIBRARY_PATH to point to cvc3/lib:
LD_LIBRARY_PATH=../cvc3/lib ant test

You can also invoke the symbolic executor directly using the compiled jar file:
java -jar lib/js-symbolic-executor.jar filename entryFunction numTests [args]
This has the same caveats about link error as running ant test.
Run the jar with no arguments for a bit more explanation.

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/11/19 17:00:54

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

一般的な話ならいざ知らず、特定のツールに関して、いきなり、文章の断片だけ書いても、普通は分かりません。
以下、下記の README の文章だとして、回答を書きます。
https://code.google.com/p/js-symbolic-executor/source/browse/trunk/README

(args)というのはよくmain(string args[])などとあるコマンドより何かしらを引数として受け付けるアレの事でしょうか?

微妙に違います。
main メソッドには、filename から渡ります。

以下のようなコマンドを打つと、簡単なヘルプが出てくるはずです。

$ java -jar lib/js-symbolic-executor.jar

Usage:
java -jar <jarfile> filename entryFunction numTests [arg...]

filename is the file to instrument
entryFunction is the function at which symbolic execution will start
numTests---Symbolic execution will stop after generating (roughly) this many test inputs
[arg...] are the arguments that will be passed to entryFunction;they are strings, parsed by the JavaScript interpreter

[arg...] は、entryFunction への引数になるようです。

この場合引数として何を受け付けるのか、どこをどのように調べたらよいご教授下さい。


最初に呼ばれるのは、symbolicexecutor.SymbolicExecutor クラスです。
これは、js-symbolic-executor/build.xml を読むと、target name="jar" のタスクで、Manifest の Main-Class の指定をしているところから、分かります。

SymbolicExecutor には、JUnit の TestCase - SymbolicExecutorTest があります。
テストケースのソースを読めばわかりますが、三つのテストケースがあります。
それぞれのテストケースを見ると、引数に指定するものが、大体わかります。

例えば、testMaxNumImput の場合、コマンドとして起動する場合には、以下のような感じになるはずです。
ファイル名を見れば分かると思いますが、js-symbolic-executor のディレクトリで起動します。

$ java -jar lib/js-symbolic-executor.jar test/data/sample.js f 5 0 5
filename test/data/sample.js
entryFunction f
numTests 5
[arg...] 0 5



entryFunction - f の引数が、何故 0 5 になるのかは、Javascript のファイル - sample.js を見れば分かります。
入口のところだけ抜粋。

    ...

function adjust(input, goal) {
  while (1) {
    var tmp;
	...
  }
  return input;
}

var f = adjust;

つまり、関数 adjust を input=0 、goal=5 で起動する、という指定になります。



ちなみに、js-symbolic-executor なるものが何をするためのものかは、分からずに書いていますので、念のため。

id:a-kuma3

利用規約くらい、目を通しておいた方が良いと思いますよ。

禁止事項
3. 下記のような内容の投稿を行ったり、投稿を募ってはいけません
xiv. 他サイトに対する投稿の転載など、いわゆるマルチポストにあたる内容

人力検索はてな利用ガイドライン - 人力検索はてな

いきなりアウトには、ならないようですけれど。

2014/11/19 15:58:47
id:ruzxa

ご回答いただいた事、ツール導入して頂いた事、本当にありがとうございます。

ファイル自体手当たり次第開いて、個別にはぼんやりと理解はしておりましたが、

とてもわかりやすく解答までの一つの道順を示して頂いた事で、

今までつながりのなかったファイルがつながり、

答えまでの不足している知識について埋める事が出来るかわかりました。

本当にありがとうございます!

コマンドの手掛かりとしてヘルプの探し方、javascriptファイルの引数関係については今から知識をつけてきちんと理解していきたいと思います。


>禁止事項について
ご指摘ありがとうございます。

知恵袋より各掲示板のマルチは問題なさそうであるということ、
携帯へ解答の返信が来るように設定し、解決次第他の質問を締め切ろうという事で極力ご迷惑をおかけしないように気を付けておりました。
が、はてなの利用規約については確認しておりませんでした。

ご指摘いただきありがとうございます。
他の質問については締め切らせて頂きます。

2014/11/19 17:00:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません