2016-12-22 4 views
0

私は、Javaソースコードからプロジェクト間のリクエストインタラクショングラフを構築するために、ジャージベースのアノテーションを解析するプロジェクトに取り組んでいます。JavaParserアノテーションパラメータの値を抽出

それはその

@GET  
@Path("/parameter/{param}") 
public Response getParam(@PathParam("param") String prm) {  

    String output = "Jersey say : " + prm;  
    return Response.status(200).entity(output).build(); 

} 
ようeverythinkが

私はのような値を抽出することができたときに情報を解析して取得するのは簡単です{方法:、 "GET" パス: "パラメータ/ {のparam}"}

その他の場合

private static final PARAMETER_PATH="/parameter/{param}"; 

@GET  
@Path(PARAMETER_PATH) 
public Response getParam(@PathParam("param") String prm) {  

    String output = "Jersey say : " + prm;  
    return Response.status(200).entity(output).build(); 

} 

または

です3210

最後の2つのケースでは、実際の値を抽出できませんでした。私はあなたの提案を待っている

私はjavaparser、ASTかなどと静的ソースコードに取り組んでいながら

はどのようにして、変数の値を取得することができます。おかげさまで

答えて

2

JavaParserまたは他のパーサーによって生成されたASTは値を計算しません。あなたのコードに3 + 5がある場合、これは追加です。パーサーはそれを解釈するロジックを持たず、8と同等であると結論づけます。あなた自身でそのロジックを実装する必要があります。あなたは基本的にJavaのインタプリタを作成したいと思っています。私は、リテラル、基本的な4つの数学的演算、それほど多くないことを考慮して、2つの基本的な操作のために簡単に行うことができると言います。もちろん、Java言語全体を考慮すると、非常に迅速に制御できなくなります。

免責事項:私はJavaParser寄稿者です。

+0

Thanks Federico。変数名と値を抽出し、それをパッケージ名でリストに追加するために、VariableDeclaratorに取り組んでいます。少なくとも私は値を取得するためにパッケージと名前を比較して変数をリストに検索します。あなたはパーサーでこれを行う簡単な方法はないと言った。私は基本的なインタプリタを実装する必要があるいくつかの論理操作が必要な場合は、[OK]をもう一度ありがとう。 – Tugrul