【技术实现步骤摘要】
【国外来华专利技术】自动生成用于对源代码进行操作的软件工具的机器学习模型
[0001]本公开涉及生成用于对源代码进行操作的软件工具的机器学习模型。
技术介绍
[0002]编程工具或软件开发工具是软件开发者用来创建、调试、维护或以其它方式支持其它程序和应用程序的计算机程序。该术语通常指可以组合在一起以完成任务的相对简单的程序,就像人们可能使用多个手工工具来修复物理对象一样。最基本的工具是源代码编辑器和编译器或解释器。其它工具或多或少地取决于语言、开发方法和个别工程师而使用,并且通常用于分立任务,例如调试器、分析工具或静态程序分析器。静态程序分析是对在没有实际执行程序的情况下执行的计算机软件的分析。在大多数情况下,对源代码的某一版本执行分析。软件开发工具可以是例如根据命令行单独执行的分立程序,或者可以是单个大程序(通常称为集成开发环境(IDE))的部分。
[0003]代码库(或代码基)是用于构建特定软件系统、应用程序或软件组件的人类编写的和机器生成的源代码片段的集合。代码库通常存储在源代码储存库中。对代码库的修订可以由版本控制系统管理。在许 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种方法(500),包括:在数据处理硬件(144)处从与使用目标源代码(210)以构建软件开发工具(418)的开发者(202)相关联的开发者设备(204)接收代码洞察请求(112),所述代码洞察请求(112)请求用于所述目标源代码(210)的代码洞察(400),所述代码洞察请求(112)包括:所述目标源代码(210);以及工具类型指示符(205),所述工具类型指示符(205)指定所述软件开发工具(418)包括代码标记类型的软件开发工具或代码变换类型的软件开发工具中的一个;由所述数据处理硬件(144)基于所述工具类型指示符(205)来获得机器学习模型(308),所述机器学习模型(308)在训练源代码(310)上被训练,所述训练源代码(310)与所述代码标记类型的软件开发工具或所述代码变换类型的软件开发工具中的所指定的一个相关联;由所述数据处理硬件使用所述机器学习模型(308)生成用于所述目标源代码(210)的所述代码洞察(400),用于所述目标源代码(210)的所述代码洞察(400)包括以下中的一个:当所述工具类型指示符(205)指定所述软件开发工具(418)包括所述代码标记类型的软件开发工具(418)时的用于所述目标源代码(210)的预测标签(400a);或当所述工具类型指示符(205)指定所述软件开发工具(418)包括所述代码变换类型的软件构建工具时的用于所述目标源代码(210)的预测代码变换;以及由所述数据处理硬件(144)将所述代码洞察(400)传输到所述开发者设备(204),所述代码洞察(400)在由所述开发者设备(204)接收时使得在所述开发者设备(204)上执行的图形用户界面(220)在所述开发者设备(204)的显示屏上显示所述代码洞察(400)。2.根据权利要求1所述的方法(500),还包括:由所述数据处理硬件(144)从所述目标源代码(210)提取目标特征(212)的集合,所述目标特征(212)的集合对应于适合于所述机器学习模型(308)的输入的所述目标源代码(210)的语法表示,其中,所述机器学习模型(308)被配置成:接收所述目标特征(212)的集合作为输入;以及生成用于所述目标源代码(210)的所述代码洞察(400)作为输出。3.根据权利要求2所述的方法(500),其中,所述目标源代码(210)的所述语法表示包括抽象语法树。4.根据权利要求1
‑
3中的任一项所述的方法(500),其中,获得所述机器学习模型(308)包括通过以下响应于接收到所述代码洞察请求(110)而生成所述机器学习模型(308):从存储在与所述数据处理硬件(144)通信的存储器硬件(146)上的源代码储存库(315)中选择与所述代码标记类型的软件开发工具或所述代码变换类型的软件开发工具中的所指定的一个相关联的所述训练源代码(310);以及使用机器学习模型生成器(360)在所选择的训练源代码(310)上训练所述机器学习模型(308)。5.根据权利要求4所述的方法(500),还包括由所述数据处理硬件(144)从所选择的训练源代码(310)提取训练特征的集合,所述训练特征的集合对应于适合于训练所述机器学习模型(308)的所述训练源代码(310)的语法表示。
6.根据权利要求5所述的方法(500),其中,所述训练源代码(310)的语法表示包括抽象语法树。7.根据权利要求1
‑
6中的任一项所述的方法(500),其中:所述代码洞察请求(110)还包括与所述代码洞察(400)相关联的成果特性类型(207),所述成果特性类型(207)由所述开发者定义;基于所述工具类型指示符(205)获得所述机器学习模型(308)还基于所述成果特性类型(207);以及使用机器学习模型(308)生成用于所述目标源代码(210)的所述代码洞察(400)还包括使用所述机器学习模型(308)生成用于所述代码洞察(400)的仿真成果特性(320),所述仿真成果特性(320)与所述代码洞察请求(110)的所述成果特性类型(207)相关联。8.根据权利要求7所述的方法(500),还包括:由所述数据处理硬件(144)从存储在与所述数据处理硬件(144)通信的存储器硬件(146)上的源代码储存库(315)中标识以下所述训练源代码(310)的训练示例(350),所述训练源代码(310)与和所述代码洞察请求(110)的所述成果特性类型(207)相关联的对应成果特性(320)配对;以及由所述数据处理硬件(144)在包括与所述对应成果特性(320)配对的所述训练源代码(310)的所述训练示例(350)上训练所述机器学习模型(308)。9.根据权利要求7所述的方法(500),其中,用于所述代码洞察(400)的所述仿真成果特性(320)包括以下中的一个:用于所述目标源代码(210)的仿真构建结果;用于运行所述目标源代码(210)的仿真经过时间段;用于所述目标源代码(210)的仿真元数据;或者用于所述目标源代码(210)的模仿人类生成的评论。10.根据权利要求1
‑
9中的任一项所述的方法(500),还包括,当用于所述目标源代码(210)的所述预测代码变换(400b)包括可执行代码时,由所述数据处理硬件(144)在以下训练示例(350)上训练所述机器学习模型(308),所述训练示例(350)包括与从编译或解释所述训练源代码(310)得到的对应训练可执行代码配对的所述训练源代码(310)。11.根据权利要求1
‑
10中的任一项所述的方法(500),其中,使用所述机器学习模型(308)生成用于所述目标源代码(210)的所述代码洞察(400)包括:使用被配置成接收从所述目标源代码(210)提取的目标特征(212)的集合作为特征输入的所述机器学习模型(308)来生成用于所述目标源代码(210)的向量表示;确定存储在与所述数据处理硬件(144)通信的存储器硬件(146)中的训练源代码(310)片段池的相似性分数,每个相似性分数与对应训练源代码(310)片段相关联并且指示在用于所述目标源代码(210)的所述向量表示与用于所述对应训练代码(310)片段的相应向量表示之间的相似性水平;以及从所述训练源代码(310)片段池中将具有满足相似性阈值的相似性分数的一个或多个训练源代码(310)标识为对应于所述目标源代码(210)的突变。12.根据权利要求1
‑
11中的任一项所述的方法(500),其中:所述目标源代码(210)包括来自目标代码库的一对目标源代码(210)片段;以及
使用所述机器学习模型(308)生成用于所述目标源代码(210)的所述代码洞察(400)包括:针对所述一对目标源代码(210)片段中的每个目标源代码(210)片段,使用被配置成接收从所述对应目标源代码(210)片段提取的目标特征(212)的集合作为特征(212)输入的所述机器学习模型(308)来生成用于所述对应目标源代码(210)片段的向量表示;基于所述向量表示来确定所述一对目标源代码(210)片段之间的向量空间距离;以及当所述向量空间距离满足距离阈值时确定所述一对目标源代码(210)片段是彼此的重复。13.根据权利要求1
‑
12中的任一项所述的方法(500),其中,用于所述训练源代码(310)的所述预测标签包括以下中的至少一个:所述目标源代码(210)的预测复杂度水平;所述目标源代码(210)的预测质量;用于所述目标源代码(210)的预测测试要求;或者所述目标源代码(210)的预测难度评级。14.根据权利要求1
‑
13中的任一项所述的方法(500),其中,用于所述目标源代码(210)的所述预测代码变换(400b)包括以下中的至少一个:修复所述目标源代码(210)中的构建错误的经更新的目标源代码(210);从所述目标源代码(210)解释/编译的可执行代码;对所述目标源代码(210)的修订;或者用于替换所述目标源代码(210)的建议替换源代码(310)。15.一种系统(100),包括:数据处理硬件(144);以及存储...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。