我正在开发一个项目来解析基于 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 等处理静态源代码时,如何获取变量的值
我正在等待您的建议。 谢谢。
最佳答案
JavaParser 或其他解析器生成的 AST 不计算值。如果您的代码中有 3 + 5
,这是一个添加,解析器将没有逻辑来解释它并得出结论,这相当于 8
。您需要自己实现该逻辑。您基本上想要为 Java 创建一个解释器。我想说,对于几个基本运算,您可以轻松做到这一点:考虑文字、基本的 4 种数学运算,仅此而已。当然,如果您尝试考虑整个 Java 语言,事情很快就会失控。
免责声明:我是 JavaParser 贡献者
关于JavaParser提取注释参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41279203/