如何以纯文本方式简单快速记录java代码的调用过程

示例

下面这个类:

public class Test {
    void main() {
        System.out.println("main");
        test1();
        test2();
    }

    void test1() {
    }

    void test2() {
        test3();
        test4();
        test5();
        test8();
    }

    void test3() {
        System.out.println("test3");
    }

    void test4() {

    }

    void test5() {
        test6();
    }
    void test6() {
        test7();
    }
    void test7() {

    }
    void test8() {

    }    
}

记录方式和阅读方法:

Test#main   //进入Test.main方法
test1();    //执行Test.main里代码
test2();    //执行Test.main里代码
Test#test2  //进入Test.test2方法
test3();    //执行Test.test2里的方法
    Test#test3  //进入Test.test3方法
    System.out.println("test3");    //执行Test.test3里的方法
test4();    //缩进结束, 表示从Test.test3返回; test3()和test4()在同一个方法里, 缩进这两者之间的代码; 
test5();
    Test#test5  //进入Test.test5, 下一行忽略了test5里的方法体
    Test#test6  //进入Test.test6
    Test#test7  //进入Test.test7
Test#test8  //进入Test.test8,  test5()和test8()在同一个方法里, 缩进这两者之间的代码; 

提示: idea里可以在代码上右键 -> copy/paste special -> copy reference(ctrl+shift+alt+c)复制方法的引用名; 结合ahk脚本可以截断包名, 只留下类名;

说明

需求: 纯文本方式, 规则简单, 灵活可扩展;

可选方式:

  1. 文本方式绘制流程图; 缺点: 略复杂; 没有可视化的情况下不好阅读; 样式死板;

自定义的一套规则:

  • 从上到下表示代码的执行过程;
  • 如果某行包含#号, 表示进入了某个方法, #前是类名, #后是方法名
  • 如果不包含#号, 表示是方法体里的代码, 有时候可以省略;
  • 如果从某个方法返回, 给返回的方法增加缩进; 缩进同级代码之间的代码(或者说: 同一个方法体里的代码保持相同的缩进);

哪位大佬有好的方式欢迎指教.

上一篇:Windows 上安装 MySQL(8.0.11)


下一篇:test3