代码类图绘制器
类图绘制器
我想设计一个python项目,用来帮我分析其他python项目的类与函数的调用关系画成一个调用图
输入:项目main文件位置
输出:要求将整个项目的函数类调用关系化为一个可以交互的页面展示出来
页面可以是html形式或者其他能想到的更好形式,或者可以借助其他的工具或者平台展示
目前我初步设想可能分为两部分:
1 读取分析记录部分
2 调用关系呈现部分
读取分析记录部分
输入:项目main文件位置
输出:一个或多个表示函数调用关系的json文件
读取功能
根据输入的main.py的文件位置读取文件
首先读取本文件import部分,识别引用导入的外部函数 外部类 内部函数 内部类
区分方式 可以识别”from pathA import modB”类似结构 如果pathA能在项目目录中找到,可能就是内部函数 内部类,内部函数内部类的定义位置也就是pathA要记录下来读取本文件定义函数
可以根据”def”来识别
函数整个过程中调用其他函数或类的先后顺序(仅记录import部分提到的内外部函数类,python本身自带的简单函数不用记录,区分内部外部)读取本文件定义类
可以根据”class”来识别
记录所有类的方法的定义,如读取本文件定义函数一样读取main函数
如果存在 name == “main“ 这种类型结构
如同读取本文件定义函数一样读取该部分内容
自动跳转功能
读取完一个文件后,根据import部分存的内部类和内部函数的位置path,来打开新的文件继续读取功能操作
调用关系呈现部分
目前想到的是通过html+css渲染方式实现,如果由更好的方法和工具请告知我
根据读取分析记录部分记录的内容,创建可以互动的页面
互动页面是一种可折叠的调用图状结构,以下是详细描述:
最开始可以有一个框,这个框可以点击展开或者点击缩小,缩小状态只展示标题,展开可以显示更多内容。
标题是main函数,内部很多行表示main函数中先后调用的函数,类的调用,或者类方法的调用(仅展示名字)。
另外其他定义的函数和类也会以缩小框的形式展示在旁边,框与框之间会有带箭头的线链接,箭头由调用框指向被调用框。缩小框指向缩小框时,仅简单箭头链接,展开框指向缩小框时,要由展开中具体哪一行调用的来作为起点。
进阶功能:框可以由用户自由拖动