一种代码推荐方法、装置及相关设备与流程

    专利2026-07-20  14


    本技术涉及计算机,尤其涉及一种代码推荐方法、装置以及相关设备。


    背景技术:

    1、应用程序接口(application programming interface,简称:api),又称为应用编程接口,是用于代码开发者访问一段已经写好的、可实现某一具体功能的代码的接口。开发人员通过使用api接口进行编程开发,可直接复用api接口所封装的那段代码的功能,而无需访问源码或理解代码的内部细节,可提高开发效率。

    2、在面向对象编程的代码开发过程中,为了提高代码开发效率,用户多利用已经存在的应用编程接口api进行代码的功能复用,快速完成需求。随着api规模的增加,用户无法记住可被某个对象调用的、属于该对象的所有api的候选集合,集成开发环境ide通常会提供代码推荐功能,给用户提供实时的api联想结果供用户选择合适的api。因此,如何提高api推荐结果的准确性、并帮助开发人员更好理解推荐结果以从推荐结果中快速选出所需的api,是代码开发领域需要解决的一个重要技术问题。


    技术实现思路

    1、本技术提供了一种代码推荐方法,能够提高用户代码开发过程中api的选择效率,从而提高代码开发效率。本技术还提供了对应的代码推荐装置、系统、计算设备集群、计算机可读存储介质以及计算机程序产品。

    2、第一方面,本技术提供了一种代码推荐方法。该方法包括:获取第三方应用程序接口api的知识图谱;接收用户在代码开发过程中录入的对象;基于第三方应用程序接口api的知识图谱和对象所在的上下文代码,推荐属于对象的多个第三方api;提供代码推荐窗口,通过代码推荐窗口向用户呈现上述多个第三方api和上述多个第三方api中的目标第三方api的解释内容;接收用户对目标第三方api的选择;添加目标第三方api。

    3、该方法通过根据对象所在的代码上下文实时进行api推荐,并为每一个被推荐的api提供可解释的推荐原因,帮助开发者快速理解被推荐的api的功能和使用约束等信息,并自动生成符合开发者当前代码上下文的代码片段,能够提高用户代码开发过程中api的选择效率和代码开发的整体效率。

    4、该方法还包括:基于一种或多种知识来源生成第三方应用程序接口api的知识图谱。其中,所述知识来源包括:第三方api的第三方库、第三方api的代码库以及第三方api的文档库;第三方应用程序接口api的知识图谱包括至少两种知识之间的关联关系,所述知识包括:第三方api的类型知识、第三方api的功能知识、第三方api的约束知识、第三方api的参数知识、第三方api的代码使用案例;。

    5、该方法还包括:基于第三方应用程序接口api的知识图谱,生成目标第三方api的解释内容。其中,目标第三方api的解释内容包括如下的一种或多种:目标第三方api的类型描述、目标第三方api的功能描述、目标第三方api的约束描述、目标第三方api的参数描述、目标第三方api的代码使用案例。

    6、一种可能的实现方式中,该方法还包括:当目标第三方api切换到所述多个第三方api中推荐的新第三方api时,通过代码推荐窗口向用户呈现新第三方api的解释内容。

    7、一种可能的实现方式中,呈现所述多个第三方api,具体包括:按照推荐的优先级顺序,排列呈现所述多个第三方api。

    8、一种可能的实现方式中,添加目标第三方api,包括:添加目标第三方api的参数。具体地,可结合对象所在的上下文代码添加目标第三方api的参数。

    9、可选地,该方法还包括:使用用户自己录入的参数替换已添加的目标第三方api的参数。

    10、可选地,该方法还包括:添加缺少一个或多个参数的目标第三方api,并使用用户录入的参数作为目标第三方api的参数。

    11、可选地,该方法还包括:通过代码推荐窗口向用户呈现属于所述对象的未被推荐的一个或多个第三方api。

    12、第二方面,本技术提供了一种代码推荐装置,该装置包括:

    13、获取单元,用于获取第三方应用程序接口api的知识图谱;

    14、接收单元,用于接收用户在代码开发过程中录入的对象;

    15、推荐单元,用于基于第三方应用程序接口api的知识图谱和该对象所在的上下文代码,推荐属于该对象的多个第三方api;

    16、呈现单元,用于提供代码推荐窗口,通过代码推荐窗口向用户呈现上述多个第三方api和上述多个第三方api中的目标第三方api的解释内容;

    17、所述接收单元,还用于接收用户对目标第三方api的选择;

    18、添加单元,用于添加目标第三方api。

    19、该代码推荐装置进一步还可包括知识图谱生成单元和解释内容生成单元,其中:

    20、知识图谱生成单元,用于基于一种或多种知识来源生成第三方应用程序接口api的知识图谱,其中,所述知识来源包括:第三方api的第三方库、第三方api的代码库以及第三方api的文档库,所述第三方应用程序接口api的知识图谱包括至少两种知识之间的关联关系,所述知识包括:第三方api的类型知识、第三方api的功能知识、第三方api的约束知识、第三方api的参数知识、第三方api的代码使用案例;

    21、解释内容生成单元,用于基于第三方应用程序接口api的知识图谱,生成用于向用户呈现的目标第三方api的解释内容,其中,目标第三方api的解释内容包括如下的一种或多种:目标第三方api的类型描述、目标第三方api的功能描述、目标第三方api的约束描述、目标第三方api的参数描述、目标第三方api的代码使用案例。

    22、可选地,所述呈现单元还用于当目标第三方api切换到所述多个第三方api中推荐的新第三方api时,通过所述代码推荐窗口向所述用户呈现所述新第三方api的解释内容。

    23、可选地,所述呈现单元还用于按照推荐的优先级顺序,排列呈现所述多个第三方api。

    24、可选地,所述添加单元还用于添加目标第三方api的参数。具体地,所述添加单元用于结合对象所在的上下文代码,添加目标第三方api的参数。

    25、可选地,所述添加单元还用于使用用户录入的参数,替换已添加的目标第三方api的参数。

    26、可选地,所述添加单元还用于添加缺少一个或多个参数的目标第三方api,并使用用户录入的参数,作为目标第三方api的参数。

    27、可选地,所述呈现单元还用于通过代码推荐窗口向用户呈现属于所述对象的未被推荐的一个或多个第三方api。

    28、一种可能的实现方式中,本技术提供的代码推荐装置部署在集成开发环境ide。

    29、第三方面,本技术提供了一种代码推荐系统,该系统包括:

    30、代码开发设备,用于:从知识图谱设备,获取第三方应用程序接口api的知识图谱;接收用户在代码开发过程中录入的对象;基于第三方应用程序接口api的知识图谱和所述对象所在的上下文代码,推荐属于所述对象的多个第三方api;提供代码推荐窗口,通过所述代码推荐窗口向用户呈现所述多个第三方api和所述多个第三方api中的目标第三方api的解释内容;接收用户对目标第三方api的选择;添加目标第三方api。

    31、知识图谱设备,用于存储第三方应用程序接口api的知识图谱。

    32、可选地,知识图谱设备还用于基于一种或多种知识来源生成第三方应用程序接口api的知识图谱,其中,所述知识来源包括:第三方api的第三方库、第三方api的代码库以及第三方api的文档库;第三方应用程序接口api的知识图谱包括至少两种知识之间的关联关系,所述知识包括:第三方api的类型知识、第三方api的功能知识、第三方api的约束知识、第三方api的参数知识、第三方api的代码使用案例。

    33、可选地,代码开发设备还用于基于第三方应用程序接口api的知识图谱,生成用于向用户呈现的目标第三方api的解释内容。其中,目标第三方api的解释内容包括如下的一种或多种:目标第三方api的类型描述、目标第三方api的功能描述、目标第三方api的约束描述、目标第三方api的参数描述、目标第三方api的代码使用案例。

    34、可选地,代码开发设备还用于:当目标第三方api切换到所述多个第三方api中推荐的新第三方api时,通过代码推荐窗口向用户呈现新第三方api的解释内容。

    35、可选地,代码开发设备还用于按照推荐的优先级顺序,排列呈现所述多个第三方api。

    36、可选地,代码开发设备还用于添加目标第三方api的参数。具体地,代码开发设备用于结合对象所在的上下文代码,添加目标第三方api的参数。

    37、可选地,代码开发设备还用于使用用户录入的参数,替换已添加的目标第三方api的参数。

    38、可选地,代码开发设备还用于添加缺少一个或多个参数的目标第三方api,并使用用户录入的参数,作为目标第三方api的参数。

    39、可选地,代码开发设备还用于通过代码推荐窗口向用户呈现属于所述对象的未被推荐的一个或多个第三方api。

    40、本技术提供的代码推荐系统中,代码开发设备和知识图谱设备可以都部署在云端;或者,代码开发设备部署在本地,知识图谱设备部署在云端;或者,代码开发设备和知识图谱设备可以都部署在本地。

    41、第四方面,本技术提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;该至少一个计算设备的处理器用于执行该至少一个计算设备的存储器中存储的指令,以使得该计算设备集群执行如上述第一方面或第一方面中任一种可能的实现方所提供的代码推荐方法。

    42、第五方面,本技术提供了一种包含指令的计算机程序产品,当该指令被计算设备集群运行时,使得该计算设备集群执行如上述第一方面或第一方面中任一种可能的实现方式所提供的代码推荐方法。


    技术特征:

    1.一种代码推荐方法,其特征在于,所述方法包括:

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

    3.根据权利要求1或2所述的方法,其特征在于,所述目标第三方api的解释内容包括如下的一种或多种:

    4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法包括:

    5.根据权利要求1至4中任一项所述的方法,其特征在于,所述呈现所述多个第三方api,包括:

    6.根据权利要求1至5中任一项所述的方法,其特征在于,所述代码开发设备添加所述目标第三方api,包括:

    7.根据权利要求6所述的方法,其特征在于,所述代码开发设备添加所述目标第三方api的参数,包括:

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

    9.根据权利要求1至5中任一项所述的方法,其特征在于,

    10.根据权利要求1至9中任一项所述的方法,其特征在于,所述方法包括:

    11.根据权利要求1至10中任一项所述的方法,其特征在于,

    12.一种代码推荐装置,其特征在于,所述装置包括:

    13.根据权利要求12所述的装置,其特征在于,所述装置包括:

    14.根据权利要求12或13所述的装置,其特征在于,所述目标第三方api的解释内容包括如下的一种或多种:

    15.根据权利要求12至14中任一项所述的装置,其特征在于,

    16.根据权利要求12至15中任一项所述的装置,其特征在于,

    17.根据权利要求12至16中任一项所述的装置,其特征在于,

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

    19.根据权利要求17或18所述的装置,其特征在于,

    20.根据权利要求12至16中任一项所述的装置,其特征在于,

    21.根据权利要求12至20中任一项所述的装置,其特征在于,

    22.一种代码推荐系统,其特征在于,所述系统包括:

    23.根据权利要求22所述的系统,其特征在于,所述系统包括:

    24.根据权利要求22或23所述系统,其特征在于,所述目标第三方api的解释内容包括如下的一种或多种:

    25.根据权利要求22至24中任一项所述的系统,其特征在于,

    26.根据权利要求22至25中任一项所述的系统,其特征在于,

    27.根据权利要求22至26中任一项所述的系统,其特征在于,

    28.根据权利要求27所述的系统,其特征在于,

    29.根据权利要求27或28所述的系统,其特征在于,

    30.根据权利要求22至26中任一项所述的系统,其特征在于,

    31.根据权利要求22至30中任一项所述的系统,其特征在于,

    32.根据权利要求22至31中任一项所述的系统,其特征在于,

    33.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;

    34.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1至11任一项所述的方法。

    35.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至11任一项所述的方法。


    技术总结
    本申请提供了一种代码推荐方法、装置及相关设备,属于计算机技术领域。该方法包括:接收用户在代码开发过程中录入的对象;基于第三方API的知识图谱和对象所在的上下文代码,推荐属于对象的多个第三方API;提供代码推荐窗口,通过代码推荐窗口向用户呈现上述多个第三方API和上述多个第三方API中的目标第三方API的解释内容;接收用户对目标第三方API的选择;添加目标第三方API。该方法通过根据对象所在的代码上下文实时进行API推荐,并为每一个被推荐的API提供可解释的推荐原因,帮助开发者快速理解被推荐的API的功能和使用约束等信息,并自动生成符合开发者当前代码上下文的代码片段,能够提高用户代码开发过程中API的选择效率和代码开发的整体效率。

    技术研发人员:谷祖兴,梁晶晶,程啸,梁广泰
    受保护的技术使用者:华为云计算技术有限公司
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-99475.html

    最新回复(0)