CN114115895A - 一种代码查询方法、装置、电子设备和存储介质 - Google Patents

一种代码查询方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114115895A
CN114115895A CN202111393845.8A CN202111393845A CN114115895A CN 114115895 A CN114115895 A CN 114115895A CN 202111393845 A CN202111393845 A CN 202111393845A CN 114115895 A CN114115895 A CN 114115895A
Authority
CN
China
Prior art keywords
code
query
identifier
information
identification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111393845.8A
Other languages
English (en)
Inventor
叶小川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen TCL New Technology Co Ltd
Original Assignee
Shenzhen TCL New Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen TCL New Technology Co Ltd filed Critical Shenzhen TCL New Technology Co Ltd
Priority to CN202111393845.8A priority Critical patent/CN114115895A/zh
Publication of CN114115895A publication Critical patent/CN114115895A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种代码查询方法、装置、电子设备和存储介质;可以接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应,基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息,根据代码入库信息以及代码标识,生成代码查询结果,基于代码查询结果,向发送代码查询指令的终端发送代码查询结果信息;由于可以通过代码标识,在代码仓库中查询到具有代码标识的目标代码以及目标代码的代码入库信息,因此,在应用需要修改接口时,通过接口对应的代码标识,快速查询到目前所有在使用接口的其他应用代码以及代码的入库信息,生成代码查询结果。

Description

一种代码查询方法、装置、电子设备和存储介质
技术领域
本发明涉及计算机技术领域,具体涉及一种代码查询方法、装置、电子设备和存储介质。
背景技术
随着计算机技术的快速发展,应用程序越来越多,不同应用程序之间的依赖也逐渐增多,应用间的耦合度越来越高。
目前,如果某个对外提供接口的应用发生了接口变化,很容易对使用接口的其他应用产生影响。因此需要一种能够快速查询到对应依赖关系的方案,以便在应用的接口发生变化时,能够查询到目前所有在使用该接口的应用。
发明内容
本发明实施例提供一种代码查询方法、装置、电子设备和存储介质,可以在应用需要修改接口时,能够快速的查询到目前所有在使用接口的其他应用代码,生成代码查询结果。
本发明实施例提供一种代码查询方法,包括:
接收代码查询指令,所述代码查询指令包括至少一个代码查询标识,所述代码查询标识与目标代码的代码标识对应;
基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码以及所述目标代码对应的代码入库信息;
根据所述代码入库信息以及所述代码标识,生成代码查询结果;
基于所述代码查询结果,向发送所述代码查询指令的终端发送代码查询结果信息。
相应的,本发明实施例提供一种代码查询装置,包括:
指令接收单元,用于接收代码查询指令,所述代码查询指令包括至少一个代码查询标识,所述代码查询标识与目标代码的代码标识对应;
标识查询单元,用于基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码以及所述目标代码对应的代码入库信息;
结果生成单元,用于根据所述代码入库信息以及所述代码标识,生成代码查询结果;
结果返回单元,用于基于所述代码查询结果,向发送所述代码查询指令的终端发送代码查询结果信息。
可选的,所述标识查询单元之前,还包括代码仓库创建单元,用于创建所述代码仓库;
所述代码查询装置还包括特征提取单元,用于响应于代码的入库请求,对所述代码进行代码特征提取,确定所述代码的代码标识;
所述特征提取单元之后,还包括特征信息生成单元,用于基于所述代码标识,生成所述代码的代码特征信息;
本发明实施例提供的代码查询装置,还包括代码存储单元,用于基于所述代码特征信息,将所述代码存入所述代码仓库。
可选的,所述特征提取单元之前,还包括代码监听单元,用于为所述代码仓库配置监听代码,监听所述代码的代码入库信息;
对应的,所述代码存储单元,用于基于所述代码特征信息和所述代码入库信息,将所述代码存入所述代码仓库。
可选的,所述代码入库信息包括代码项目信息,所述特征提取单元之前,还包括代码比对单元,用于当所述代码仓库中存在与所述代码的代码项目信息相同的历史代码时,将所述历史代码与所述代码进行比对;
若所述历史代码与所述代码之间存在代码更新,基于所述代码更新,调整所述历史代码的代码标识,将调整后的所述历史代码的代码标识确定为所述代码的代码标识。
可选的,所述代码更新包括代码删除、代码增加和代码修改,代码查询装置中的代码对比单元,用于若所述代码更新为代码删除,则删除被删除的代码所对应的所述历史代码中的代码标识;
若所述代码更新为代码增加,则对增加的差异代码进行代码特征提取,生成第一特征信息,基于所述第一特征信息调整所述历史代码的代码标识;
若所述代码更新为代码修改,则对修改后的代码进行代码特征提取,生成第二特征信息,基于所述第二特征信息调整所述历史代码的代码标识。
可选的,所述特征提取单元,用于确定所述代码对应的代码语言类型;
基于所述代码语言类型,获取预设的语法树分析工具,所述语法树分析工具与所述代码语言类型对应;
基于所述语法树分析工具对所述代码进行分析,确定所述代码的代码特征;
将所述代码特征与预设的代码特征类型进行匹配,基于匹配结果确定所述代码的代码标识。
可选的,所述结果生成单元,用于根据所述代码标识,确定所述代码标识在所述目标代码中的位置;
根据所述位置以及所述代码入库信息,生成代码查询结果。
相应的,本发明实施例还提供一种电子设备,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行本发明实施例所提供的任一种代码查询方法中的步骤。
此外,本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一种代码查询方法中的步骤。
采用本发明实施例的方案,可以接收代码查询指令,该代码查询指令包括至少一个代码查询标识,该代码查询标识与目标代码的代码标识对应,基于该代码查询标识,在预设的代码仓库中查询具有该代码标识的该目标代码以及该目标代码对应的代码入库信息,根据该代码入库信息以及该代码标识,生成代码查询结果;由于可以通过代码标识,在代码仓库中查询到具有该代码标识的目标代码以及目标代码的代码入库信息,因此,可以在应用需要修改接口时,通过接口对应的代码标识,快速的查询到目前所有在使用该接口的其他应用代码以及代码的入库信息,生成代码查询结果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的代码查询方法的场景示意图;
图2是本发明实施例提供的代码查询方法的流程图;
图3是本发明实施例提供的代码标识更新的流程示意图;
图4是本发明实施例提供的代码标识更新的另一流程示意图;
图5是本发明实施例提供的代码查询装置的结构示意图;
图6是本发明实施例提供的代码查询装置的另一结构示意图;
图7是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种代码查询方法、装置、电子设备和存储介质。具体地,本发明实施例提供适用于代码查询装置的代码查询方法,该代码查询装置可以集成在电子设备中。
该电子设备可以为终端等设备,包括但不限于移动终端和固定终端,例如移动终端包括但不限于智能手机、智能手表、平板电脑、笔记本电脑、智能车载等,其中,固定终端包括但不限于台式电脑、智能电视等。
该电子设备还可以为服务器等设备,该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
本发明实施例的代码查询方法,可以由服务器实现,也可以由终端和服务器共同实现。
下面以终端和服务器共同实现该代码查询方法为例,对该方法进行说明。
如图1所示,本发明实施例提供的代码查询系统包括终端10和服务器20等;终端10与服务器20之间通过网络连接,比如,通过有线或无线网络连接等,其中,终端10可以作为用户(开发人员)向服务器20发送可供查询的代码的终端存在。
其中,终端10可以为用户上传可供查询的代码的终端,和/或,终端10也可以为用户向服务器20发送代码查询指令的终端。
服务器20,可以用于接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应,基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息,根据代码入库信息以及代码标识,生成代码查询结果。
服务器20可以基于代码查询结果,向发送代码查询指令的终端发送代码查询结果信息。例如,在生成代码查询结果后,可以向发送了代码查询指令的终端10发送代码查询结果,或者,也可以向上传了目标代码的终端10发送预设的提醒信息,本发明对提醒信息的内容不做限定。
以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本发明实施例将从代码查询装置的角度进行描述,该代码查询装置具体可以集成在服务器或终端中。
如图2所示,本实施例的代码查询方法的具体流程可以如下:
201、接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应。
其中,代码查询标识可以是根据代码查询用户的需求生成的,比如代码查询用户可能需要查询接入某个应用的某个接口的其他应用,等等。
例如,应用程序A可以设计自己的接口接入规则,例如设置特定的接口名称,当应用程序A对自己的接口进行了修改后,可以向所有接入该接口的其他应用发送提醒的消息。
此时,应用程序A可以根据前述的接口名称生成代码查询标识,查询所有代码中是否具有与代码查询标识对应的代码标识。
在一些示例中,代码查询标识还可以包括代码的包名、类名、方法名、方法入参类型和/或出参类型,等等。本发明对具体的标识类型及标识内容不做限定。
在一些可选的实施例中,开发人员可以预先设定一种或者多种代码特征类型,比如,代码特征类型可以包括方法调用代码特征类型(MethodCallExpr)、对象创建代码特征类型(ObjectCreationExpr)、方法定义/重写代码特征类型(MethodDeclaration)和/或符号代码特征类型(NameExpr),等等。
其中,方法调用代码特征类型(MethodCallExpr)可以为开发人员限定其他开发人员在调用已经编写的某个方法的代码特征类型,对象创建代码特征类型(ObjectCreationExpr)可以为开发人员限定其他开发人员在代码中创建新的对象的代码特征类型,方法定义/重写代码特征类型(MethodDeclaration)可以为开发人员限定其他开发人员在代码中定义一个新的方法或者重写一个方法的代码特征类型,符号代码特征类型(NameExpr)可以为开发人员限定其他开发人员在代码中编写符号字符串代码的代码特征类型,等等。
进一步地,针对不同的代码特征类型,开发人员可以限定在不同代码特征类型中对应的方法名、方法入参类型,等等。
例如,针对方法调用代码特征类型(MethodCallExpr),可以设置在调用某个方法时,必须使用methodFromJars参数和String数组类型的数据来调用方法所在的jar包和方法入参/出参类型所在的jar包(java基本类型除外),或者,使用methods参数和Object类型的数据来与已有的方法进行匹配,或者,通过methodName参数和String数组类型的数据来确定要调用的方法名,或者,通过classPackageName参数和String数组类型的数据来确定要调用的方法所在的类的包名(包名包含类)。具体可以如下表所示:
Figure BDA0003369723240000061
Figure BDA0003369723240000071
针对于对象创建代码特征类型(ObjectCreationExpr)的设置,可以如下表所示,本发明对此设置不再赘述:
Figure BDA0003369723240000072
针对于方法定义/重写代码特征类型(MethodDeclaration)的设置,可以如下表所示,本发明对此设置不再赘述:
Figure BDA0003369723240000073
针对于符号代码特征类型(NameExpr)的设置,可以如下表所示,本发明对此设置不再赘述:
Figure BDA0003369723240000074
Figure BDA0003369723240000081
202、基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息。
其中,代码仓库是可以存储代码的数据库,可以理解的是,代码仓库中除了入库的代码,还可以包括代码的代码入库信息,以及代码的标识,等等。
在一些可选的示例中,代码仓库除了对代码、代码标识、代码入库信息等信息的存储功能,还可以包括对已存储信息的管理功能,例如具有代码仓库管理权限的用户可以删除代码仓库中已存储的代码、修改已存储代码的代码标识和/或查看代码入库信息,等等。
例如,可以使用Gitlab作为代码仓库,也可以用开发人员自行构建的数据库作为代码仓库,本发明对此不做限定。
在实际应用过程中,由于被调用接口或者功能的被接入应用,可能对应有一个或多个调用接口或者功能的接入应用,对应的,具有代码标识的目标代码也可以有一组或多组,本发明对查询到的目标代码的数量不做限定。
其中,代码入库信息是指在代码入库过程中采集到的信息,例如,代码入库信息可以包括但不限于代码提交到代码仓库时采集到的信息,包括代码的提交时间、根据提交操作生成的哈希值、代码的提交用户标识、提交的代码项目名、提交的代码文件和/或代码的改动类型等。
可以理解的是,为了提高查询的准确度,代码查询标识可以有多个,在进行查询时,可以根据预设的查询条件,查询同时具有多个代码查询标识对应的代码标识的目标代码,或者,可以查询具有任一代码查询标识对应的代码标识的目标代码。
203、根据代码入库信息以及代码标识,生成代码查询结果。
在一些可选的实施例中,为了便于接入应用对调用关系进行调整,在生成代码查询结果后,代码仓库或者被接入应用,可以根据代码查询结果中的代码入库信息,通知提交代码的用户,例如,向提交代码的用户发送提示消息等等,本发明对通知的内容和形式不做限定。
具体的,为了便于提交代码的用户对代码中的调用关系进行调整,可以先获取代码标识在代码中的位置,将位置也加入在代码查询结果中,便于查询代码的用户或者提交代码的用户确定代码标识所在位置,对代码进行调整。即,步骤203,可以包括:
根据代码标识,确定代码标识在目标代码中的位置;
根据位置以及代码入库信息,生成代码查询结果。
其中,生成的代码查询结果中,可以直接包括代码标识在目标代码中的具体行数,或者,也可以是代码标识在目标代码中的行数范围,等等。
在实际应用过程中,为了保证代码以及代码标识的关联关系,可以在每组代码的入库过程中对代码进行特征提取,生成代码标识后,将代码标识和代码共同在代码仓库中进行存储,即,步骤“接收代码查询指令”之前,还可以包括:
创建代码仓库;
响应于代码的入库请求,对代码进行代码特征提取,确定代码的代码标识;
基于代码标识,生成代码的代码特征信息;
基于代码特征信息,将代码存入代码仓库。
其中,对代码进行代码特征提取可以是直接读取代码中的类型、方法名等信息,或者,也可以是对代码成分进行分析后作为代码的特征,在一个示例中,步骤“对代码进行代码特征提取,确定代码的代码标识”,可以包括:
确定代码对应的代码语言类型;
基于代码语言类型,获取预设的语法树分析工具,语法树分析工具与代码语言类型对应;
基于语法树分析工具对代码进行分析,确定代码的代码特征;
将代码特征与预设的代码特征类型进行匹配,基于匹配结果确定代码的代码标识。
其中,语法树是句子结构的图形表示,它代表了对代码中编程语句的推导结果,有利于理解编程语句结构的层次。也就是说,语法树可以是按照某一规则进行推导时所形成的树。
步骤“基于语法树分析工具对代码进行分析,确定代码的代码特征”具体可以包括:
通过语法树分析工具,对代码进行成分拆分,得到代码的语法成分。
例如,语法树分析工具可以是现有的语法树分析工具,比如java语言的代码可以通过javaParser工具进行分析。语法树分析工具也可以是根据开发人员自主设计的分析方法生成的工具,比如分析方法可以是先对程序代码进行词法分析,在词法分析的基础上对程序语法进行语法分析,并结合词法分析结果和语法分析结果构造程序抽象语法树,最后对语法树的节点进行标记,等等。
进一步的,步骤“将代码特征与预设的代码特征类型进行匹配,基于匹配结果确定代码的代码标识”,可以包括:
将代码的各个语法成分与预设的参考语法成分进行特征匹配;
如果匹配成功,为匹配成功的语法成分确定对应的代码标识。
其中,语法成分可以是代码中的关键字、标识符、分隔符、注释等等,比如JAVA语言中用作判断的if、用作类声明的class、用作返回语句的return等关键字,空格,逗号,或分号等用于分开两个语法成分的分隔符,等等。
在一些实施例中,可以根据编程语言固定的关键字、标识符、分隔符、注释等语法成分,进一步确定出与被接入应用相关的其他语法成分,例如前述的针对方法调用代码特征类型(MethodCallExpr)、对象创建代码特征类型(ObjectCreationExpr)、方法定义/重写代码特征类型(MethodDeclaration)和/或符号代码特征类型(NameExpr)的类名、入参类型、出参类型,等等。
为了便于当接口或者特定的代码特征需要查询时,能够快速根据标记查询到对应的项目和代码特征对应的入库信息,步骤“响应于代码的入库请求,对代码进行代码特征提取,确定代码的代码标识”之前,还可以包括:
为代码仓库配置监听代码,监听代码的代码入库信息;
对应的,步骤“基于代码特征信息,将代码存入代码仓库”,可以包括:
基于代码特征信息和代码入库信息,将代码存入代码仓库。
其中,监听代码可以是代码仓库自带的实现监听功能的代码,用户可以直接使用代码监听功能,或者根据实际使用需求对代码仓库的监听代码进行配置。在另一些实施例中,也可以是用户为代码仓库配置针对代码仓库的监听代码,例如设置监听组件等,以实现对代码仓库中对信息的操作的记录。
可以理解的是,随着用户需求的增多以及应用功能的完善,接入应用的代码可以不断发生变化,为了节约存储资源和搜索时的计算资源,避免每次代码变化后都在代码仓库中存储一次代码,可以针对请求存入代码仓库的待存储代码检测是否为已经存储的已存储代码,如果待存储代码与某组已存储代码与统一接入应用对应,可以在已存储代码的基础上,更新代码标识。
因此,代码入库信息中可以包括代码项目信息,步骤“对代码进行代码特征提取,确定代码的代码标识”之前,还可以包括:
当代码仓库中存在与代码的代码项目信息相同的历史代码时,将历史代码与代码进行比对;
若历史代码与代码之间存在代码更新,基于代码更新,调整历史代码的代码标识,将调整后的历史代码的代码标识确定为代码的代码标识。
其中,代码项目信息可以包括但不限于代码项目标识号、代码项目名称、项目创建信息、项目创建用户等信息中的至少一种。
在一些可选的实施例中,代码更新可以包括但不限于代码删除、代码增减和代码修改中的至少一种的更新情况。也就是说,代码更新可以包括代码删除、代码增加和代码修改;
对应的,步骤“基于代码更新,调整历史代码的代码标识”,可以包括:
若代码更新为代码删除,则删除被删除的代码所对应的历史代码中的代码标识;
若代码更新为代码增加,则对增加的差异代码进行代码特征提取,生成第一特征信息,基于第一特征信息调整历史代码的代码标识;
若代码更新为代码修改,则对修改后的代码进行代码特征提取,生成第二特征信息,基于第二特征信息调整历史代码的代码标识。
例如,如图3所示,在代码入库后,先将代码项目信息与代码仓库中的历史代码的代码项目信息进行对比,如果不存在相同的代码信息,执行对代码进行代码特征提取,确定代码的代码标识的步骤。
如果存在相同的代码信息,将历史代码与代码进行对比,若代码更新为代码删除,针对删除代码,删除历史代码中删除代码对应的代码标识;
若代码更新不是代码删除,可以进一步判断代码更新是否属于代码修改,若代码更新为代码修改,针对修改代码,调整历史代码中修改代码对应的代码标识。
一般来说,如果代码更新不是代码删除和/或代码修改,可以认为代码更新为代码增加,将历史代码与代码进行对比,针对增加代码,调整历史代码的代码标识。
在一些示例中,增加代码可以不具有预设的代码特征,此时可以不对历史代码的代码标识进行调整。若增加代码可以具有预设的代码特征,此时可以对历史代码增加相应的代码标识。
可以理解的是,代码更新可以同时具有代码删除、代码修改和代码增加中的至少两种情况,具体检测代码更新的顺序不限,或者可以通过多线程同时进行检测,本发明对此不做限定。
再例如,如图4所示,在代码入库时可以直接标注代码更新的类型,如果代码更新类型是删除全部的历史代码,此时可以不执行代码对比等步骤,直接删除代码项目信息对应的所有代码、代码标识及代码入库信息,如果代码更新类型不是删除全部的历史代码,可以通过与上述类似的步骤,对代码仓库中的代码标识进行调整。
204、基于代码查询结果,向发送代码查询指令的终端发送代码查询结果信息。
其中,代码查询结果可以与代码查询结果信息相同,也可以与代码查询结果信息不同。
例如,代码查询结果可以包括目标代码的代码标识等,代码查询结果信息可以直接是该代码查询结果。
再例如,在返回代码查询结果信息之前,可以对代码查询结果做进一步的处理,比如,对代码查询结果以表格的形式进行呈现,得到代码查询结果信息;或者,可以根据代码查询结果,进一步查询目标代码的开发人员信息,将开发人员信息等和代码查询结果共同作为代码查询结果信息。
可以理解的是,得到代码查询结果后,也可以不向发送代码查询指令的终端发送代码查询结果信息,而是直接向目标代码对应的开发人员发送接口修改信息,等等。
由上可知,本发明实施例可以接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应,基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息,根据代码入库信息以及代码标识,生成代码查询结果;由于可以通过代码标识,在代码仓库中查询到具有代码标识的目标代码以及目标代码的代码入库信息,因此,可以在应用需要修改接口时,通过接口对应的代码标识,快速的查询到目前所有在使用接口的其他应用代码以及代码的入库信息,生成代码查询结果。
为了更好地实施以上方法,相应的,本发明实施例还提供一种代码查询装置。
参考图5,该装置可以包括:
指令接收单元501,可以用于接收代码查询指令,所述代码查询指令可以包括至少一个代码查询标识,所述代码查询标识与目标代码的代码标识对应;
标识查询单元502,可以用于基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码以及所述目标代码对应的代码入库信息;
结果生成单元503,可以用于根据所述代码入库信息以及所述代码标识,生成代码查询结果;
结果返回单元504,用于基于所述代码查询结果,向发送所述代码查询指令的终端发送代码查询结果信息。
可选的,所述标识查询单元502之前,还可以包括代码仓库创建单元505,可以用于创建所述代码仓库;
如图6所示,所述代码查询装置还可以包括特征提取单元506,可以用于响应于代码的入库请求,对所述代码进行代码特征提取,确定所述代码的代码标识;
所述特征提取单元506之后,还可以包括特征信息生成单元507,可以用于基于所述代码标识,生成所述代码的代码特征信息;
本发明实施例提供的代码查询装置,还可以包括代码存储单元508,可以用于基于所述代码特征信息,将所述代码存入所述代码仓库。
可选的,所述特征提取单元506之前,还可以包括代码监听单元509,可以用于为所述代码仓库配置监听代码,监听所述代码的代码入库信息;
对应的,所述代码存储单元508,可以用于基于所述代码特征信息和所述代码入库信息,将所述代码存入所述代码仓库。
可选的,所述代码入库信息可以包括代码项目信息,所述特征提取单元506之前,还可以包括代码比对单元510,可以用于当所述代码仓库中存在与所述代码的代码项目信息相同的历史代码时,将所述历史代码与所述代码进行比对;
若所述历史代码与所述代码之间存在代码更新,基于所述代码更新,调整所述历史代码的代码标识,将调整后的所述历史代码的代码标识确定为所述代码的代码标识。
可选的,所述代码更新可以包括代码删除、代码增加和代码修改,代码查询装置中的代码对比单元510,可以用于若所述代码更新为代码删除,则删除被删除的代码所对应的所述历史代码中的代码标识;
若所述代码更新为代码增加,则对增加的差异代码进行代码特征提取,生成第一特征信息,基于所述第一特征信息调整所述历史代码的代码标识;
若所述代码更新为代码修改,则对修改后的代码进行代码特征提取,生成第二特征信息,基于所述第二特征信息调整所述历史代码的代码标识。
可选的,所述特征提取单元506,可以用于确定所述代码对应的代码语言类型;
基于所述代码语言类型,获取预设的语法树分析工具,所述语法树分析工具与所述代码语言类型对应;
基于所述语法树分析工具对所述代码进行分析,确定所述代码的代码特征;
将所述代码特征与预设的代码特征类型进行匹配,基于匹配结果确定所述代码的代码标识。
可选的,所述结果生成单元503,可以用于根据所述代码标识,确定所述代码标识在所述目标代码中的位置;
根据所述位置以及所述代码入库信息,生成代码查询结果。
由上可知,通过代码查询装置,可以通过指令接收单元接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应,在标识查询单元基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息,在结果生成单元根据代码入库信息以及代码标识,生成代码查询结果;由于可以通过代码标识,在代码仓库中查询到具有代码标识的目标代码以及目标代码的代码入库信息,因此,可以在应用需要修改接口时,通过接口对应的代码标识,快速的查询到目前所有在使用接口的其他应用代码以及代码的入库信息,生成代码查询结果。
此外,本发明实施例还提供一种电子设备,该电子设备可以为终端或者服务器等等,如图7所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括射频(RF,Radio Frequency)电路701、包括有一个或一个以上计算机可读存储介质的存储器702、输入单元703、显示单元704、传感器705、音频电路706、无线保真(WiFi,Wireless Fidelity)模块707、包括有一个或者一个以上处理核心的处理器708、以及电源709等部件。本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路701可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器708处理;另外,将涉及上行的数据发送给基站。通常,RF电路701包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM,Subscriber Identity Module)卡、收发信机、耦合器、低噪声放大器(LNA,Low Noise Amplifier)、双工器等。此外,RF电路701还可以通过无线通信与网络和其他设备通信。无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GSM,Global System of Mobile communication)、通用分组无线服务(GPRS,GeneralPacket Radio Service)、码分多址(CDMA,Code Division Multiple Access)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access)、长期演进(LTE,Long TermEvolution)、电子邮件、短消息服务(SMS,Short Messaging Service)等。
存储器702可用于存储软件程序以及模块,处理器708通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器708和输入单元703对存储器702的访问。
输入单元703可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,在一个具体的实施例中,输入单元703可包括触敏表面以及其他输入设备。触敏表面,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面上或在触敏表面附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器708,并能接收处理器708发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面。除了触敏表面,输入单元703还可以包括其他输入设备。具体地,其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元704可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元704可包括显示面板,可选的,可以采用液晶显示器(LCD,Liquid CrystalDisplay)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板。进一步的,触敏表面可覆盖显示面板,当触敏表面检测到在其上或附近的触摸操作后,传送给处理器708以确定触摸事件的类型,随后处理器708根据触摸事件的类型在显示面板上提供相应的视觉输出。虽然在图7中,触敏表面与显示面板是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面与显示面板集成而实现输入和输出功能。
电子设备还可包括至少一种传感器705,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在电子设备移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于电子设备还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路706、扬声器,传声器可提供用户与电子设备之间的音频接口。音频电路706可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路706接收后转换为音频数据,再将音频数据输出处理器708处理后,经RF电路701以发送给比如另一电子设备,或者将音频数据输出至存储器702以便进一步处理。音频电路706还可能包括耳塞插孔,以提供外设耳机与电子设备的通信。
WiFi属于短距离无线传输技术,电子设备通过WiFi模块707可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块707,但是可以理解的是,其并不属于电子设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器708是电子设备的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行电子设备的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器708可包括一个或多个处理核心;优选的,处理器708可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器708中。
电子设备还包括给各个部件供电的电源709(比如电池),优选的,电源可以通过电源管理系统与处理器708逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源709还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,电子设备还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,电子设备中的处理器708会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器708来运行存储在存储器702中的应用程序,从而实现各种功能,如下:
接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应;
基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息;
根据代码入库信息以及代码标识,生成代码查询结果。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种代码查询方法中的步骤。例如,该指令可以执行如下步骤:
在存储器702中的应用程序,从而实现各种功能,如下:
接收代码查询指令,代码查询指令包括至少一个代码查询标识,代码查询标识与目标代码的代码标识对应;
基于代码查询标识,在预设的代码仓库中查询具有代码标识的目标代码以及目标代码对应的代码入库信息;
根据代码入库信息以及代码标识,生成代码查询结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种代码查询方法中的步骤,因此,可以实现本发明实施例所提供的任一种代码查询方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述实施例中的各种可选实现方式中提供的方法。
以上对本发明实施例所提供的一种代码查询方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种代码查询方法,其特征在于,包括:
接收代码查询指令,所述代码查询指令包括至少一个代码查询标识,所述代码查询标识与目标代码的代码标识对应;
基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码以及所述目标代码对应的代码入库信息;
根据所述代码入库信息以及所述代码标识,生成代码查询结果;
基于所述代码查询结果,向发送所述代码查询指令的终端发送代码查询结果信息。
2.根据权利要求1所述的代码查询方法,其特征在于,所述基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码之前,还包括:
创建所述代码仓库;
响应于代码的入库请求,对所述代码进行代码特征提取,确定所述代码的代码标识;
基于所述代码标识,生成所述代码的代码特征信息;
基于所述代码特征信息,将所述代码存入所述代码仓库。
3.根据权利要求2所述的代码查询方法,其特征在于,所述响应于代码的入库请求,对所述代码进行代码特征提取,确定所述代码的代码标识之前,还包括:
为所述代码仓库配置监听代码,监听所述代码的代码入库信息;
所述基于所述代码特征信息,将所述代码存入所述代码仓库,包括:
基于所述代码特征信息和所述代码入库信息,将所述代码存入所述代码仓库。
4.根据权利要求3所述的代码查询方法,其特征在于,所述代码入库信息包括代码项目信息;
所述对所述代码进行代码特征提取,确定所述代码的代码标识之前,还包括:
当所述代码仓库中存在与所述代码的代码项目信息相同的历史代码时,将所述历史代码与所述代码进行比对;
若所述历史代码与所述代码之间存在代码更新,基于所述代码更新,调整所述历史代码的代码标识,将调整后的所述历史代码的代码标识确定为所述代码的代码标识。
5.根据权利要求4所述的代码查询方法,其特征在于,所述代码更新包括代码删除、代码增加和代码修改;
所述基于所述代码更新,调整所述历史代码的代码标识,包括:
若所述代码更新为代码删除,则删除被删除的代码所对应的所述历史代码中的代码标识;
若所述代码更新为代码增加,则对增加的差异代码进行代码特征提取,生成第一特征信息,基于所述第一特征信息调整所述历史代码的代码标识;
若所述代码更新为代码修改,则对修改后的代码进行代码特征提取,生成第二特征信息,基于所述第二特征信息调整所述历史代码的代码标识。
6.根据权利要求2所述的代码查询方法,其特征在于,所述对所述代码进行代码特征提取,确定所述代码的代码标识,包括:
确定所述代码对应的代码语言类型;
基于所述代码语言类型,获取预设的语法树分析工具,所述语法树分析工具与所述代码语言类型对应;
基于所述语法树分析工具对所述代码进行分析,确定所述代码的代码特征;
将所述代码特征与预设的代码特征类型进行匹配,基于匹配结果确定所述代码的代码标识。
7.根据权利要求1-6任一项所述的代码查询方法,其特征在于,所述根据所述代码入库信息以及所述代码标识,生成代码查询结果,包括:
根据所述代码标识,确定所述代码标识在所述目标代码中的位置;
根据所述位置以及所述代码入库信息,生成代码查询结果。
8.一种代码查询装置,其特征在于,包括:
指令接收单元,用于接收代码查询指令,所述代码查询指令包括至少一个代码查询标识,所述代码查询标识与目标代码的代码标识对应;
标识查询单元,用于基于所述代码查询标识,在预设的代码仓库中查询具有所述代码标识的所述目标代码以及所述目标代码对应的代码入库信息;
结果生成单元,用于根据所述代码入库信息以及所述代码标识,生成代码查询结果;
结果返回单元,用于基于所述代码查询结果,向发送所述代码查询指令的终端发送代码查询结果信息。
9.一种电子设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至7任一项所述的代码查询方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的代码查询方法中的步骤。
CN202111393845.8A 2021-11-23 2021-11-23 一种代码查询方法、装置、电子设备和存储介质 Pending CN114115895A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111393845.8A CN114115895A (zh) 2021-11-23 2021-11-23 一种代码查询方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111393845.8A CN114115895A (zh) 2021-11-23 2021-11-23 一种代码查询方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114115895A true CN114115895A (zh) 2022-03-01

Family

ID=80439953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111393845.8A Pending CN114115895A (zh) 2021-11-23 2021-11-23 一种代码查询方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114115895A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114693220A (zh) * 2022-05-30 2022-07-01 深圳市爱云信息科技有限公司 基于数字孪生DaaS平台的算法仓库管理方法及系统
CN116450250A (zh) * 2023-06-16 2023-07-18 天津金城银行股份有限公司 一种动态脚本执行方法、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100332473A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation Correlating queries issued by applications with their source lines and analyzing applications for problem determination and where used analysis
CN107239318A (zh) * 2017-06-13 2017-10-10 腾讯科技(深圳)有限公司 应用转换方法、装置及设备
CN112416327A (zh) * 2020-11-23 2021-02-26 平安普惠企业管理有限公司 项目构建方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100332473A1 (en) * 2009-06-30 2010-12-30 International Business Machines Corporation Correlating queries issued by applications with their source lines and analyzing applications for problem determination and where used analysis
CN107239318A (zh) * 2017-06-13 2017-10-10 腾讯科技(深圳)有限公司 应用转换方法、装置及设备
CN112416327A (zh) * 2020-11-23 2021-02-26 平安普惠企业管理有限公司 项目构建方法、装置、计算机设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MOHAMMAD M. RAHMAN;CHANCHAL K. ROY;DAVID LO: "Automatic query reformulation for code search using crowdsourced knowledge", EMPIRICAL SOFTWARE ENGINEERING, vol. 24, no. 4, 31 December 2019 (2019-12-31) *
田宪伟;: "基于MBD的数字化设计基础资源库应用探索", 航空制造技术, no. 11, 1 June 2016 (2016-06-01) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114693220A (zh) * 2022-05-30 2022-07-01 深圳市爱云信息科技有限公司 基于数字孪生DaaS平台的算法仓库管理方法及系统
CN116450250A (zh) * 2023-06-16 2023-07-18 天津金城银行股份有限公司 一种动态脚本执行方法、系统及存储介质
CN116450250B (zh) * 2023-06-16 2023-09-19 天津金城银行股份有限公司 一种动态脚本执行方法、系统及存储介质

Similar Documents

Publication Publication Date Title
CN106970790B (zh) 一种应用程序创建的方法、相关设备及系统
CN105429775B (zh) 一种上报日志的方法及装置
CN106502703B (zh) 一种函数调用方法和装置
CN113420051B (zh) 一种数据查询方法、装置、电子设备和存储介质
EP3843356B1 (en) Management method for model files, terminal device and computer-readable storage medium
CN103455330A (zh) 应用程序管理方法、终端、设备及系统
CN114115895A (zh) 一种代码查询方法、装置、电子设备和存储介质
EP2869604B1 (en) Method, apparatus and device for processing a mobile terminal resource
CN103607377B (zh) 信息分享方法、装置及系统
WO2015096660A1 (en) Methods and devices for displaying a webpage
CN103383701A (zh) 信息检索方法、装置及终端
CN112328349B (zh) 一种参数设置方法及相关设备
CN106230919B (zh) 一种文件上传的方法和装置
CN112328304B (zh) 一种脚本适配方法、系统、设备及计算机存储介质
CN112559532B (zh) 一种基于红黑树的数据插入方法、装置及电子设备
CN114691714A (zh) 基于sql语句整合的数据获取方法、装置、设备、介质
CN116028099A (zh) 一种安装包生成的方法及相关装置、设备和存储介质
CN117234137B (zh) Mcu时钟频率切换电路、mcu和电子设备
US20230394008A1 (en) Distributed file access method and related device
CN116069333A (zh) 程序编译方法、装置、电子设备、存储介质和程序产品
CN117519666A (zh) 一种信息处理方法、装置、设备以及存储介质
CN115658997A (zh) 网页数据采集方法、装置、终端及存储介质
CN115543314A (zh) 一种报表生成方法、装置、设备和存储介质
CN106484455A (zh) 一种更新应用程序的安装数据的方法、装置和系统
CN116149638A (zh) 在线开发平台中应用程序的处理方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination