我用Java编写了一个Java源代码分析工具…

为什么要制作?

我经过一番思考,发现对于我这个完全初学者来说,这太难了。
为了整理思路,我还是先把想法表达出来吧。

目前的趋势可以用三行来概括。

    1. 在现场被要求制作一个简单规格的 Diff 工具

 

    1. 考虑到规格后,我觉得需要进行源代码分析

 

    这语法解析好难啊,怎么会这么复杂

嘛,如果使用库的话可能会轻松一些,但是因为有很多限制,所以我打算暂时使用标准库来完成。

解析工具规格说明

总结

    1. 接收比较源和比较目标的Java文件路径

 

    1. 进行比较

 

    输出差异结果的步骤数

注意:但是,两个Java文件中的方法和字段的顺序可能会互换。

输入和输出

输入
・两个Java文件(绝对路径)

输出:
・包括评论的差异结果的步骤数

目前所考虑的实施方法的执行顺序。

    1. 從接收到的java文件路徑中獲取文件內的字符串。

 

    1. 將來源和目標java文件分成方法和字段的字符串並存入映射(創建字段和方法映射實例)。

 

    1. 將來源和目標字段進行排序。

 

    1. 將來源和目標方法進行排序。

 

    1. 將來源和目標分配給字符串實例。

 

    1. 比較來源和目標兩個字符串實例。

 

    計算並輸出步數。

我认为是这样的感觉。

那么,你正在为什么而烦恼呢?

烦恼的是上面红色文字的部分。

假设有如下的班级。

public class Main {

    public static final String hoge;
    public static final String fuga;

    public static void main(String[] args){
        if (compareStr(args[0], hoge)) {
            System.out.println(hoge);
        }
    }

    public static boolean compareStr(String arg1, String arg2) {
        if (arg2.equals(arg1)) {
            return true;
        } else {
            return false;
        }
    }
}

我试图将它分成字段和方法,然后存储在以下地图实例中。

Map<String, Map<String, String>> codeMap;

嗯?要如何将方法和字段分开呢?

我遇到了一个难题…

我这个傻瓜发现以素未涉猎的状态去做是有点勉强?

如果使用库的话,应该没问题的。
比如git diff之类的。

广告
将在 10 秒后关闭
bannerAds