System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于云服务的代码生成方法及装置制造方法及图纸_技高网

基于云服务的代码生成方法及装置制造方法及图纸

技术编号:41514451 阅读:8 留言:0更新日期:2024-05-30 14:52
本申请公开了一种基于云服务的代码生成方法及装置,属于软件开发技术领域。该方法包括:接收代码生成请求,代码生成请求用于请求生成编程项目中实现第一方法的第一可执行代码;基于代码生成请求,从编程项目的信息中,获取生成第一可执行代码所需的第一上下文信息;基于第一上下文信息和代码生成请求,生成第一可执行代码。本申请在生成代码时能够考虑项目级的上下文,有助于提高生成代码的生成效果。

【技术实现步骤摘要】

本申请涉及软件开发,特别涉及一种基于云服务的代码生成方法及装置


技术介绍

1、代码生成(code generation)或程序合成(program synthesis)技术,一直是软件工程(software engineering,se)和人工智能(artificial intelligence,ai)领域学术研究中的热点,并且因其巨大的商业价值而备受工业界关注。近两年来,得益于人工智能研究在(natural language processing,nlp)和程序语言处理(programming languageprocessing,plp)方面取得的成果,两个领域技术的结合将代码生成相关技术从学术研究逐步推向实际应用。就目前来看,基于人工智能的代码生成工具作为提高软件开发效率的辅助工具,已经成为近期备受瞩目的人工智能落地应用之一。

2、目前的代码生成技术主要针对行级代码的代码补全(code completion)和生成(code generation),与发展多年的编程环境和工具相比,其仍处于起步阶段,其技术和产品形态仍需要在实践中持续改进。


技术实现思路

1、本申请提供了一种基于云服务的代码生成方法及装置。本申请在生成代码时能够考虑项目级的上下文,有助于提高生成代码的生成效果。本申请提供的技术方案如下:

2、第一方面,本申请提供了一种基于云服务的代码生成方法。该方法可以由云平台执行。该方法包括:接收代码生成请求,代码生成请求用于请求生成编程项目中实现第一方法的第一可执行代码;基于代码生成请求,从编程项目的信息中,获取生成第一可执行代码所需的第一上下文信息;基于第一上下文信息和代码生成请求,生成第一可执行代码。

3、在本申请提供的基于云服务的代码生成方法中,在接收代码生成请求后,能够基于代码生成请求,从编程项目的信息中,获取生成第一可执行代码所需的第一上下文信息;然后,基于第一上下文信息和代码生成请求,生成第一可执行代码。在该基于云服务的代码生成方法中,由于需要先从编程项目的信息中获取生成第一可执行代码所需的第一上下文信息,该第一上下文信息包括来源于整个编程项目的项目级上下文信息,其能够反映代码和编程项目的逻辑结构,使得代码生成过程能够更多地利用实际编程中人类开发者所需的背景知识和编程项目的整体逻辑,因此提高了生成代码的能力,有助于改善代码生成技术的实际使用体验。

4、在本申请中,计算设备可以根据待生成的第一方法的第一上下文信息,生成第一方法的可执行代码。并且,根据前面描述可知,编程项目涉及的层级单元从大到小依次为:编程项目、代码模块、代码包、类和方法,则根据不同的应用需求,第一上下文信息可以在不同层级单元中获取。因此,用户可以通过客户端向计算设备发送范围指示,以指示第一上下文信息的获取范围。则该方法还包括:接收范围指示,范围指示用于指示第一上下文信息的获取范围。相应的,基于代码生成请求,从编程项目的信息中,获取生成第一可执行代码所需的第一上下文信息,包括:当范围指示用于指示第一上下文信息的获取范围为编程项目时,基于代码生成请求,从编程项目的信息中,获取第一上下文信息。

5、当范围指示用于指示第一上下文信息的获取范围为编程项目时,计算设备能够在整个编程项目中获取第一上下文信息。这样一来,计算设备就能够在生成第一可执行代码时,考虑代码和编程项目的逻辑结构,有助于提高代码生成能力。

6、用户可以根据需求指示是否查看获取的第一上下文信息,在用户需要或者不需要查看获取的第一上下文信息时,其可以执行对应的操作以触发预览指示,通过该预览指示向计算设备传达其需求。则该方法还包括:接收预览指示,预览指示用于指示是否预览第一上下文信息;当预览指示用于指示预览第一上下文信息时,显示第一上下文信息;接收指示同意第一上下文信息的同意指示。相应的,基于第一上下文信息和代码生成请求,生成第一可执行代码,包括:在接收到同意指示后,基于第一上下文信息和代码生成请求,生成第一可执行代码。

7、用于实现方法的可执行代码通常保存在源代码文件中,那么第一上下文信息可能包括该第一方法所属的源代码文件中的内容,也可能包括该第一方法所属的源代码文件外的内容,则在获取第一上下文信息时,可以分别从第一方法所属的源代码文件中和源代码文件外获取第一上下文信息。在一种实现方式中,获取生成第一可执行代码所需的第一上下文信息,包括:执行文件外上下文展开和文件内代码重组等处理,根据处理结果获取第一上下文信息。

8、在一种实现方式中,执行文件内代码重组,并根据重组结果获取第一上下文信息的实现过程包括:基于代码生成请求,从编程项目的信息中,获取生成第一可执行代码所需的第一上下文信息,包括:基于代码生成请求,在编程项目的文件中,获取第一方法所属的源代码文件;在源代码文件中,获取撰写位置位于第一方法后的下文信息;将下文信息的撰写位置调整至第一方法之前,使得调整位置后的下文信息成为第一方法的上文信息;基于第一方法的上文信息,获取第一上下文信息。

9、在一种实现方式中,通过文件外上下文展开,并根据展开结果获取第一上下文信息的实现过程包括:基于代码生成请求,在编程项目的文件中,获取第一方法所属的源代码文件;在编程项目的信息中,获取源代码文件使用到的位于源代码文件外的外部信息;在源代码文件中补充外部信息;基于经过补充的源代码文件,获取第一上下文信息。

10、可选的,该方法还可以包括:在编程项目的信息中,获取第一方法有权限访问的权限范围。相应的,在编程项目的信息中,获取源代码文件使用到的位于源代码文件外的外部信息,包括:在权限范围中,获取外部信息。通过在第一方法有权限访问的权限范围内获取外部信息,能够避免向该第一方法中引入第一方法没有权限访问的内容,保证获取的第一上下文信息的效率和有效性。

11、在一种实现方式中,获取第一方法有权限访问的权限范围,包括:基于第一方法在编程项目中的位置、第一方法所属的目标类的访问控制权限、及目标类的层次和引用关系中的至少一个,获取权限范围。其中,第一方法在编程项目中的位置可以通过生成点表示。目标类的层次表示目标类在编程项目的层级单元中的层次。目标类的引用关系表示目标类引用的内容。目标类的访问控制权限可以由开发人员设置,用于限定目标类中可执行代码的访问控制权限。

12、可选的,在基于第一上下文信息和代码生成请求,生成第一可执行代码之前,方法还包括:在第一上下文信息中移除目标信息,得到更新后的第一上下文信息,目标信息包括以下一种或多种:代码注释、变量赋值、方法体和指示代码底层逻辑的信息。

13、这样一来,可以删除第一上下文信息中与生成第一可执行代码无关的信息、涉及隐私的信息和/或敏感信息,从而在第一上下文中保留体现第一上下文中内容的层次结构和签名信息的相关内容。一方面能够达到压缩第一上下文信息的目的,使得在同样的输入长度下能够输入包含更多有价值内容的上下文信息,另一方面还能够保证生成的代码的可用性、用户本文档来自技高网...

【技术保护点】

1.一种基于云服务的代码生成方法,其特征在于,由云平台执行,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1至3任一所述的方法,其特征在于,所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息,包括:

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述在所述编程项目的信息中,获取所述第一方法有权限访问的权限范围,包括:

7.根据权利要求1至6任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

9.根据权利要求1至8任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

10.根据权利要求1至9任一所述的方法,其特征在于,所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息,包括:

11.根据权利要求1至10任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

12.根据权利要求11所述的方法,其特征在于,所述基于所述多个内容对应的相关性,对所述多个内容进行排序,包括:

13.根据权利要求11或12所述的方法,其特征在于,所述获取所述第一上下文信息中多个内容与所述第一方法的相关性,包括以下一种或多种的组合:

14.根据权利要求13所述的方法,其特征在于,所述标识符包括以下一种或多种:变量名、方法名、包名、类名和常量名。

15.根据权利要求13所述的方法,其特征在于,所述相关信息包括以下一种或多种:方法描述、方法名、返回类型和参数类型。

16.根据权利要求1至15任一所述的方法,其特征在于,在所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息之前,所述方法还包括:

17.根据权利要求1至16任一所述的方法,其特征在于,所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码,包括:

18.根据权利要求17所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

19.根据权利要求18所述的方法,其特征在于,所述待训练模型的输入还包括以下一种或多种:所述第二方法的方法注释和方法签名。

20.根据权利要求18所述的方法,其特征在于,所述获取已成功编译的编程项目中实现第二方法的第二可执行代码,包括:

21.根据权利要求20所述的方法,其特征在于,未通过筛选的第二方法具有以下一种或多种特点:所述第二方法的方法体为空,所述第二方法具有特殊用途,所述第二方法的方法体不包括运算表达式。

22.根据权利要求21所述的方法,其特征在于,所述特殊用途包括以下一种或多种:获取、设置、构造和返回。

23.根据权利要求1至22任一所述的方法,其特征在于,所述上下文信息包括以下一种或多种:已定义的类、变量和方法的功能、访问权限以及调用方式。

24.一种基于云服务的代码生成装置,其特征在于,配置于云平台,所述装置包括:

25.根据权利要求24所述的装置,其特征在于,

26.根据权利要求24或25所述的装置,其特征在于,

27.根据权利要求24至26任一所述的装置,其特征在于,所述第一获取模块,具体用于:

28.根据权利要求27所述的装置,其特征在于,所述第一获取模块,具体用于:

29.根据权利要求28所述的装置,其特征在于,所述第一获取模块,具体用于:

30.根据权利要求24至29任一所述的装置,其特征在于,

31.根据权利要求30所述的装置,其特征在于,

32.根据权利要求24至31任一所述的装置,其特征在于,

33.根据权利要求24至32任一所述的装置,其特征在于,所述第一获取模块,具体用于:

34.根据权利要求24至33任一所述的装置,其特征在于,所述第一获取模块,还用于:

35.根据权利要求34所述的装置,其特征在于,...

【技术特征摘要】

1.一种基于云服务的代码生成方法,其特征在于,由云平台执行,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:

3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:

4.根据权利要求1至3任一所述的方法,其特征在于,所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息,包括:

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述在所述编程项目的信息中,获取所述第一方法有权限访问的权限范围,包括:

7.根据权利要求1至6任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

8.根据权利要求7所述的方法,其特征在于,所述方法还包括:

9.根据权利要求1至8任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

10.根据权利要求1至9任一所述的方法,其特征在于,所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息,包括:

11.根据权利要求1至10任一所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

12.根据权利要求11所述的方法,其特征在于,所述基于所述多个内容对应的相关性,对所述多个内容进行排序,包括:

13.根据权利要求11或12所述的方法,其特征在于,所述获取所述第一上下文信息中多个内容与所述第一方法的相关性,包括以下一种或多种的组合:

14.根据权利要求13所述的方法,其特征在于,所述标识符包括以下一种或多种:变量名、方法名、包名、类名和常量名。

15.根据权利要求13所述的方法,其特征在于,所述相关信息包括以下一种或多种:方法描述、方法名、返回类型和参数类型。

16.根据权利要求1至15任一所述的方法,其特征在于,在所述基于所述代码生成请求,从所述编程项目的信息中,获取生成所述第一可执行代码所需的第一上下文信息之前,所述方法还包括:

17.根据权利要求1至16任一所述的方法,其特征在于,所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码,包括:

18.根据权利要求17所述的方法,其特征在于,在所述基于所述第一上下文信息和所述代码生成请求,生成所述第一可执行代码之前,所述方法还包括:

19.根据权利要求18所述的方法,其特征在于,所述待训练模型的输入还包括以下一种或多种:所述第二方法的方法注释和方法签名。

20.根据权利要求18所述的方法,其特征在于,所述获取已成功编译的编程项目中实现第二方法的第二可执行代码,包括:

21.根据权利要求20所述的方法,其特征在于,未通过筛选的第二方法具有以下一种或多种特点:所述第二方法的方法体为空,所述第二方法具有特殊用途,所述第二方法的方法体不包括运算表达式。

22.根据权利要求21所述的方法,其特征在于,所述特殊用途包括以下一种或多种:获取、设置、构造和返回。

23.根据权利要求1至22任一所...

【专利技术属性】
技术研发人员:申博张嘉鑫梁广泰王千祥
申请(专利权)人:华为云计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1