System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于计算机软件,涉及一种面向功能特征的代码地图构建方法及系统。
技术介绍
1、代码地图是一种将软件代码结构以图形化的方式展示的方法和技术,以帮助开发者理解和导航复杂的代码库。现有的代码地图应用主要集中在对软件项目的代码信息进行关联分析,例如对单个文件进行控制流程、调用关系分析后绘制控制该文件的流程图、调用图等;或者把所有项目文件中的函数、符号罗列出来,然后互相关联。这些代码地图太注重代码细节而无法把握代码库的整体构建框架,导致开发者对代码库的理解效率低下。在项目开发过程中,为了方便维护对大代码文件进行分层解耦,出现大量的方法、类或模块,而现有以方法、类为基本单元的代码地图细节太多,导致开发者难以理解项目的整体功能和架构。
2、为了帮助开发者全面深入地、逐层次地理解复杂代码库,并降低理解过程中的认知负荷,有必要提出一种面向功能特征的代码地图构建方法。
技术实现思路
1、本专利技术提供一种面向功能特征的代码地图构建方法及系统,能够通过输入代码库的源代码文件,提取出代码库的功能特征,并设计相应的代码链路提取算法提取出细粒度功能点的链路,按照项目开发中的规范将链路进行基本的划分后,将类、方法等浅模块抽象成为深模块进行可视化展示,实现逐步掌握代码库。其中,浅模块是指相对于提供的小功能而言,接口相对复杂的模块。
2、为实现上述目的,本专利技术的技术方案包括以下内容。
3、一种面向功能特征的代码地图构建方法,所述方法包括:
4、提取软件项
5、构建所述软件项目的知识图谱;
6、根据所述功能特征在知识图谱中利用节点的描述属性匹配有关节点,得到子图,并基于所述子图获取面向该功能特征的代码链路;
7、对面向功能特征的代码链路进行渲染,得到代码地图。
8、进一步地,提取软件项目的功能特征,包括:
9、根据软件项目的代码文件,构造文件树;其中,所述文件树的根节点为项目根目录,所述文件树的叶节点为单个代码文件;
10、对文件树中的每个节点进行功能分析,得到文件-功能树;
11、大语言模型根据文件-功能树交互式地提取该软件项目的功能特征。
12、进一步地构建所述软件项目的知识图谱,包括:
13、对后端文件进行静态分析,得到第一实体和第一实体之间的关系,并将第一实体的描述作为该第一实体的属性;其中,所述第一实体包括:代码文件实体、类/接口实体和方法实体,第一实体之间的关系类型包括:代码文件实体对方法实体的包含关系、类/接口实体对类/接口实体继承关系、类/接口实体对方法实体的引用关系、和方法实体对方法实体的调用关系;
14、对前端文件进行分析,得到第二实体和第二实体之间的关系,并将第二实体的描述作为该第二实体的属性;其中,所述第二实体包括:vue文件实体、js文件实体和html文件实体,第二实体之间的关系类型包括:vue文件实体导入js文件实体中的有关函数、js文件实体监听html文件实体中的元素、vue文件实体导入并复用vue文件实体中的元素、和js文件实体导入js文件实体中的有关函数;
15、基于第一实体、第一实体之间的关系、第二实体以及第二实体之间的关系,生成所述软件项目的知识图谱。
16、进一步地,基于所述子图获取面向该功能特征的代码链路,包括:
17、由大语言模型扩展子图得到有关细粒度功能特征的后端代码链路;
18、基于所述后端代码链路向前扩展,得到前端代码链路;
19、查找与数据库操作相关的前后端代码链路的接口文件,并基于该接口文件的sql语句将与数据库操作相关的前后端代码链路扩展到数据库表,以得到面向该功能特征的代码链路。
20、进一步地,基于所述后端代码链路向前扩展,得到前端代码链路,包括:
21、规定请求路径;
22、通过在.java文件中添加注解来使后端获知所述请求路径;
23、在js文件中使用axios相关函数并基于所述请求路径向后端发送请求;
24、利用大语言模型将后端获知的请求路径与该请求所对应的请求路径进行对比,得到该后端代码链路的接口api文件;
25、根据所述后端代码链路的接口api文件向前扩展,得到前端代码链路。
26、进一步地,查找与数据库操作相关的前后端代码链路的接口文件,包括:
27、基于xml文件中的sql语句得到mapper标签,并根据该mapper标签提示的语句作用域,得到与数据库操作相关的前后端代码链路的接口文件;
28、或,
29、通过大语言模型的语义分析找到前后端代码链路的与数据库操作相关的接口文件。
30、进一步地,所述对面向该功能特征的代码链路进行渲染,得到代码地图,包括:
31、对面向该功能特征的代码链路进行细分;其中,所述细分包括:
32、将连接前端代码链路的接口api文件以及该接口api文件中的接口/类、方法聚合成为控制层;
33、将与数据库操作相关的接口文件以及该接口文件中的接口/类、方法聚合成为持久层;
34、所述面向该功能特征的代码链路中剩余的代码文件及该代码文件的接口/类、方法聚合成为业务逻辑层;
35、基于细分结果进行渲染,得到代码地图。
36、一种面向功能特征的代码地图构建系统,所述系统包括:
37、功能特征提取模块,用于提取软件项目的功能特征;
38、知识图谱构建模块,用于构建所述软件项目的知识图谱;
39、代码链路生成模块,用于根据所述功能特征在知识图谱中利用节点的描述属性匹配有关节点,得到子图,并基于所述子图获取面向该功能特征的代码链路;
40、代码链路渲染模块,用于对面向功能特征的代码链路进行渲染,得到代码地图。
41、一种电子设备,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现上述任一项所述的面向功能特征的代码地图构建方法。
42、一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述任一项所述的面向功能特征的代码地图构建方法。
43、与现有技术相比,本专利技术至少具有以下有益效果。
44、用户通过项目的源代码文件作为工具的输入,先从全局到局部,提取出项目代码的功能特征,再由局部到全局,通过理解细粒度功能点逐步掌握代码库,进而实现帮助开发者全面深入地理解复杂代码库的同时,降低开发者对项目代码理解的认知负荷。
本文档来自技高网...【技术保护点】
1.一种面向功能特征的代码地图构建方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,提取软件项目的功能特征,包括:
3.根据权利要求1所述的方法,其特征在于,构建所述软件项目的知识图谱,包括:
4.根据权利要求1所述的方法,其特征在于,基于所述子图获取面向该功能特征的代码链路,包括:
5.根据权利要求4所述的方法,其特征在于,基于所述后端代码链路向前扩展,得到前端代码链路,包括:
6.根据权利要求5所述的方法,其特征在于,查找与数据库操作相关的前后端代码链路的接口文件,包括:
7.根据权利要求6所述的方法,其特征在于,所述对面向该功能特征的代码链路进行渲染,得到代码地图,包括:
8.一种面向功能特征的代码地图构建系统,其特征在于,所述系统包括:
9.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;所述处理器执行所述计算机程序指令时实现如权利要求1-7任一项所述的面向功能特征的代码地图构建方法。
10.一种计算机可
...【技术特征摘要】
1.一种面向功能特征的代码地图构建方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,提取软件项目的功能特征,包括:
3.根据权利要求1所述的方法,其特征在于,构建所述软件项目的知识图谱,包括:
4.根据权利要求1所述的方法,其特征在于,基于所述子图获取面向该功能特征的代码链路,包括:
5.根据权利要求4所述的方法,其特征在于,基于所述后端代码链路向前扩展,得到前端代码链路,包括:
6.根据权利要求5所述的方法,其特征在于,查找与数据库操作相关的前后端代码链路的接口文件,包括:
...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。