2016-12-22 422 views
0

我正在开发一个项目来分析基于jersey的注释,以在来自java源代码的项目之间构建请求交互图。JavaParser提取注释参数值

可以很容易地解析和获取信息时everythink像

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

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

} 

我可以提取像值{方法: “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(); 

} 

private static String PATH_VARIABLE_STR = "{param}"; 
private static PARAMETER_PATH = "/parameter/"+PATH_VARIABLE_STR; 

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

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

    } 

在最后两种情况下,我无法提取真正的价值。

我怎样才能得到这个变量的值,而我的工作静态源代码JavaParser类,AST或等

我在等待你的建议。 谢谢。

回答

2

JavaParser或其他解析器生成的AST不计算值。如果你的代码中有3 + 5,这是一个附加,解析器将不会有解释它的逻辑并得出结论,即相当于8。你需要自己实现这个逻辑。你想基本上为Java创建一个解释器。我会说你可以轻松地做几个基本的操作:考虑文字,基本的4个数学运算,而不是更多。当然,如果你试图考虑整个Java语言,那么这个东西会很快失去控制。

声明:我是JavaParser的贡献者

+0

感谢费德里科。我正在处理VariableDeclarator以提取变量名称和值,并将其添加到包名称列表中。至少我通过比较包和名称来获得价值,将变量搜索到列表中。你说有没有简单的方法来解析器做到这一点。好吧,如果我需要一些逻辑操作,我必须实现基本的解释器。再次感谢。 – Tugrul