1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Manipulação de estrutura de código / Analisador de código

Olá pessoal, estou trabalhando numa rotina de um projeto onde é necessário mapear uma árvore de chamadas de métodos dentro de um projeto. Seria um método que recebesse como parâmetro um outro método, executaria um algoritmo recursivo mapeando todas as chamadas realizadas a partir deste método inicial, e de cada um dos métodos seguintes, retornando no fim uma árvore de chamadas de métodos, semelhante a um "Diagrama de Sequencia".

Ex: na classe abaixo:

public class Classe1 {

    public void metodo1() {
        System.out.println("metodo 1.");
        metodo2();
    }

    public void metodo2() {
        System.out.println("metodo 2.");
        metodo3();
    }

    public void metodo3() {
        new Classe2().metodo1();
        System.out.println("metodo 3.");
    }
}

public class Classe2 {

    public void metodo1() {
        System.out.println("metodo 1.");
        metodo2();
    }

    public void metodo2() {
        System.out.println("metodo 2.");
        metodo3();
    }

    public void metodo3() {
        System.out.println("metodo 3.");
    }
}

Informando o método "Classe1.metodo1" para esta rotina, o resultado esperado seria:

Classe1.metodo1 -> Classe1.metodo2

Classe1.metodo2 -> Classe1.metodo3

Classe1.metodo3 -> Classe2.metodo1

Classe2.metodo1 -> Classe2.metodo2

Classe2.metodo2 -> Classe2.metodo3

O problema é como fazer para analisar o conteúdo de um método, passo necessário para determinar as chamadas realizadas a partir de um método. Alguém conhece alguma forma de fazer isso? Estive analisando a API "Eclipse JDT", montei um projeto maven com alguns exemplos da internet, mas algumas coisas não estão funcionando bem, pois algumas dependências eu não consegui resolver, caso algém aí também conheça esta API e possa me ajudar, dizendo se ela realmente me atende, e se falta alguma dependência a ela, eu agradeço também... De qualquer forma procuro mais opções.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags arquitetura reflections eclipse busca api ou faça a sua própria pergunta.