0

我正在开发一个项目来解析基于 jersey 的注释,以从 java 源代码构建项目之间的请求交互图。

当每个人都这样想时,很容易解析和获取信息

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

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

}

我可以提取像{Method:"GET", Path:"parameter/{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 等处理静态源代码时,如何获取变量的值?

我在等你的建议。谢谢。

4

1 回答 1

2

JavaParser 或其他解析器生成的 AST 不计算值。如果您3 + 5的代码中有,这是一个补充,解析器将没有逻辑来解释它并得出结论,这相当于8. 您需要自己实现该逻辑。您基本上想为 Java 创建一个解释器。我想说您可以轻松地为几个基本操作做到这一点:考虑文字,基本的 4 个数学运算,仅此而已。当然,如果您尝试考虑整个 Java 语言,那么事情会很快失控。

免责声明:我是 JavaParser 贡献者

于 2016-12-22T09:16:43.663 回答