2016-12-22 7 views
0

Я работаю над проектом, чтобы разобрать аннотации на основе трикотажа, чтобы построить график взаимодействия запросов между проектами из исходного кода 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", Path: "параметр/{параметр}"}

Другой случай являются

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 или другими анализаторами, не вычисляет значения. Если в вашем коде есть 3 + 5, это дополнение, синтаксический анализатор не будет иметь логики для его интерпретации и заключить, что это эквивалентно 8. Вам нужно будет реализовать эту логику самостоятельно. Вы хотите в основном создать интерпретатор для Java. Я бы сказал, что вы можете легко сделать это для нескольких основных операций: рассмотрите литералы, основные 4 математических операции и не намного больше. Конечно, если вы попытаетесь рассмотреть весь язык Java, эта вещь быстро выйдет из-под контроля.

Предупреждение: Я являюсь спонсором JavaParser

+0

Thanks Federico. Я работаю над VariableDeclarator, чтобы извлечь имя и значение переменной и добавить ее в список с именем пакета. По крайней мере, я ищу переменную в списке, сравнивая пакет и имена, чтобы получить значение. Вы сказали, что нет простого способа сделать это с помощью парсера. Хорошо, если мне нужны некоторые логические операции, я должен реализовать базовый интерпретатор. Еще раз спасибо. – Tugrul