从Eclipse获取项目结构?

时间:2013-05-08 06:04:32

标签: java javascript json eclipse

我有一个包含大量包和.java文件的eclipse项目。我想知道它是否能够从eclipse以某种文本格式/ json形式检索项目结构?

Package1
     java1
        method1
        method2
        method3
        ...

     java2
        ...


    ...

Package2
    ...

就像在json / text文件中那样?

是否有可能使用eclipse?或者我应该编写一个修剪项目目录并递归构建文件结构的代码吗?

我正在尝试这样做,以便我可以使用 D3.js 工具可视化项目层次结构:

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

2 个答案:

答案 0 :(得分:0)

你正在使用Windows吗?只需在命令行中输入tree yourProjectFolder /F /A > output.txt

即可

答案 1 :(得分: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)
...