2013-05-08 4 views
0

У меня есть проект eclipse с большим количеством пакетов и .java файлов. Мне было интересно, сможет ли он получить структуру проекта в виде текстовой формы/json из eclipse?Получить структуру проекта из Eclipse?

Package1 
    java1 
     method1 
     method2 
     method3 
     ... 

    java2 
     ... 


    ... 

Package2 
    ... 

Как в json/текстовом файле?

Возможно ли использование затмения? Или я должен написать код, который сует каталог проекта и рекурсивно строить структуру файла?

Я пытаюсь сделать это так, что я могу представить себе иерархию проекта с помощью этого D3.js инструмента:

http://mbostock.github.io/d3/talk/20111018/tree.html

+0

Посмотрите ant4eclipse. –

+0

@ ThorbjørnRavnAndersen - посмотрите! :) – ComputerFellow

+0

Может быть, javadoc может вам помочь. – Sammy

ответ

0

вы используете окно? Просто введите tree yourProjectFolder /F /A > output.txt в командной строке

+0

Это хороший! Но это не даст мне методы внутри '.java'. Мне тоже нужны методы. – ComputerFellow

0

Возможно, приведенный ниже код может вам помочь.

Он распечатает каждую папку и все найденные файлы. Если файл *.java, код вводит его и печатает все, что соответствует java-методу.

Кроме того, при необходимости измените REGEX, который определяет, что такое метод. Линия:

public static final String JAVA_METHOD_REGEX = "(public|protected|private|static|\\s) +[\\w\\<\\>\\[\\]]+\\s+(\\w+) *\\([^\\)]*\\)"; 

Полный код:

public class ReadFilesAndMethods { 
    public static void main(String[] args) throws Exception { 
     File folder = new File("C:/Workspace/MyProject/src"); 
     listFiles(folder, ""); 
    } 

    public static final String JAVA_FILE_REGEX = "^\\w+\\.java"; 
    public static final String JAVA_METHOD_REGEX = "(public|protected|private|static|\\s) +[\\w\\<\\>\\[\\]]+\\s+(\\w+) *\\([^\\)]*\\)"; 

    public static void listFiles(File folder, String prefix) throws Exception { 
     for (final File fileEntry : folder.listFiles()) { 
      if (fileEntry.isDirectory()) { 
       System.out.println(prefix + fileEntry.getName() + "/"); 
       listFiles(fileEntry, prefix + "\t"); 
      } else { 
       System.out.println(prefix + fileEntry.getName()); 
       if (fileEntry.getName().matches(JAVA_FILE_REGEX)) { 
        readMethodsFromJavaFile(fileEntry.getAbsolutePath(), prefix + "\t"); 
       } 
      } 
     } 
    } 

    public static void readMethodsFromJavaFile(String fileName, String prefix) throws Exception { 
     Scanner scanner = new Scanner(new File(fileName)); 
     String text = scanner.useDelimiter("\\A").next(); 
     scanner.close(); 
     Pattern pattern = Pattern.compile(JAVA_METHOD_REGEX); 
     Matcher matcher = pattern.matcher(text); 

     while (matcher.find()) { 
      System.out.println(prefix+matcher.group(0)); 
     } 
    } 
} 

Выход:

main/ 
    java/ 
     utils/ 
      UsefulStuff.java 
       public Long getSomething(Class<?> classe) 
       public Whatever load(String anything) 
      Start.java 
       static void main(String[] args) 
     entity/ 
      system/ 
       User.java 
        public long getId() 
        public void setId(long id) 
... 
Смежные вопросы