CN116340940A - 代码识别方法、终端设备及存储介质 - Google Patents
代码识别方法、终端设备及存储介质 Download PDFInfo
- Publication number
- CN116340940A CN116340940A CN202211634020.5A CN202211634020A CN116340940A CN 116340940 A CN116340940 A CN 116340940A CN 202211634020 A CN202211634020 A CN 202211634020A CN 116340940 A CN116340940 A CN 116340940A
- Authority
- CN
- China
- Prior art keywords
- information
- code
- node
- abstract syntax
- syntax tree
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种代码识别方法、终端设备及存储介质,涉及计算机领域。所述方法包括:获取代码数据,所述代码数据包括部分或全部匿名代码;对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息;基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。本申请实施例旨在准确地识别出恶意代码,从而在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种代码识别方法、终端设备及存储介质。
背景技术
现有的自动化测试平台中,由于系统服务过程中会存在高并发以及多业务模块场景,因此原有的单体架构无法满足系统需求,从而采用更为灵活、更为多样的原子化微服务分布式架构。
然而微服务分布式架构的自动化测试平台虽然拥有着高并发与易拓展的性质,但是随之而来的将是不可忽视的安全问题。比如,在自动化测试平台中用于写入测试用例的代码语言可能会被注入恶意代码,而这种恶意代码可能会破坏测试平台的稳定性,从而影响了自动化测试平台的安全性,用户体验较差。
发明内容
本申请提供了一种代码识别方法、终端设备及存储介质,旨在准确地识别出恶意代码,从而在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。
第一方面,本申请提供了一种代码识别方法,应用于原子化微服务分布式架构的平台,所述方法包括:获取代码数据,所述代码数据包括部分或全部匿名代码;对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息;基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。
第二方面,本申请提供一种终端设备,所述终端设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述的计算机程序并在执行所述的计算机程序时实现如上述所述的代码识别方法。
第三方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如上述所述的代码识别方法。
本申请提供一种代码识别方法、终端设备及存储介质,其中,该代码识别方法应用于原子化微服务分布式架构的平台。本申请通过获取代码数据,所述代码数据包括部分或全部匿名代码;对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息;基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。由此可以准确地识别出恶意代码,从而在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种代码识别方法的步骤流程示意图;
图2是本申请实施例提供的一种代码数据转化为抽象语法树的应用场景示意图;
图3是本申请实施例提供的一种节点信息的示意图;
图4是本申请实施例提供的一种目标节点转化为路径信息的应用场景示意图;
图5是本申请实施例提供的一种路径信息转化为数字向量的应用场景示意图;
图6是本申请实施例提供的一种代码识别模型的测试准确率的示意图;
图7是本申请实施例提供的一种代码识别方法的应用场景示意图;
图8是本申请实施例提供的一种终端设备的结构示意性框图;
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
现有的自动化测试平台主要用于系统更新与测试,其中包括:环境预处理模块,根据前端的用户下发的远程调试信息,Server端在调度符合条件的环境与执行器;镜像监听模块,实时扫描目标文件夹获取更新的系统镜像,镜像资源用于设备烧录更新;用例测试模块,实现镜像烧录完成后的测试执行;结果生成模块,产生测试报告并进行汇总,释放环境测试计划执行结束。
具体地,整体架构包括用户层、服务层、执行层、终端设备层。其总体流程概述:1.用户通过前端界面发起远程调试。2.执行环境预处理模块,处于服务层的任务调度向环境管理模块申请符合条件的环境资源池。3.在执行器管理中的执行器池里查询符合条件的执行器Client随后下发任务,调用执行池调度模块,随后上报结果,释放环境。
其中,环境预处理模块的工作流程包括:用户层通过前端界面发起远程调试,处于服务层的任务调度向环境管理模块申请符合条件的环境资源池,在执行器管理中的执行器池里查询符合条件的执行器Client随后启动执行调度模块。
镜像监听模块与用例测试模块合并称为执行调度模块。执行调度模块的工作流程包括:开启监听脚本,每获取目录信息判断系统镜像是否更新,将更新的镜像文件传入工作目录并对设备进行烧录更新。烧录更新完成的设备会通过端口检测,将开发者选项开启的设备进行XDevice测试。
结果生成模块的工作流程包括:执行调度模块完成后,生成测试报告,上报结果将其汇总,等待环境释放成功,任务调度层返回执行结束,返回测试完毕结果。
以上是对于自动化测试平台的简要概述,从内容来看,系统服务过程中会存在高并发以及多业务模块场景,因此原有的单体架构无法满足系统需求,因此采用更为灵活、更为多样的原子化微服务分布式架构。
然而微服务分布式架构的自动化测试平台虽然拥有着高并发与易拓展的性质,但是随之而来的将是不可忽视的安全问题。大多数单体应用和系统通常只存在几个入口,因为入口数目稀少,所以集中性安全管控可以满足要求;然而微服务的分布式架构入口数量较多,导致所需要的安全部署水平更高。
由于微服务的分布式架构入口数量较多,因此自动化测试平台可能会获取到大量的匿名代码,而这些部分或全部匿名代码可能会被注入恶意代码,而这种恶意代码可能会破坏测试平台的稳定性,从而影响了自动化测试平台的安全性,用户体验较差。
请参阅图1,图1是本申请实施例提供的一种代码识别方法的流程示意图。所述代码识别方法可以应用在原子化微服务分布式架构的平台中。该代码识别方法可以准确地识别出恶意代码,从而在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。
如图1所示,代码识别方法可以应用于原子化微服务分布式架构的平台,代码识别方法包括步骤S101至步骤S105。
S101、获取代码数据,所述代码数据包括部分或全部匿名代码。
其中,所述代码数据为从原子化微服务分布式架构的自动化测试平台中的多个入口获取得到的。所述代码数据包括部分或全部匿名代码,因此无法准确地获取到代码数据的身份信息。
由于微服务的分布式架构入口数量较多,代码数据(包括恶意代码和非恶意代码)可以通过微服务的分布式架构的众多入口进入到自动化测试平台,且代码数据一般都是匿名的。同时由于网络环境驳杂不堪,代码数据中可能会存在恶意代码,而恶意代码的攻击行为数不胜数,可能会破坏测试平台的稳定性,从而影响了自动化测试平台的安全性,用户体验较差。
S102、对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树。
其中,所述抽象语法树(Abstract Syntax Tree,AST)是代码数据(即源代码)的抽象语法结构的树状表示,树上的每个节点都表示代码数据中的结构类别,例如“a=1”在抽象语法树中就是“Assign Num”,将语句转化为一种特定的模板,是一种逻辑上的表达,以抽象的形式展现了源代码语法结构。之所以称其为抽象的,是因为抽象语法树仅仅是一个最为精简的解析树,它相较于解析树忽略掉毫无意义的不重要的细节,使得观察起来更为轻松,比如说,上述例子中的等号“=”,只有在判断条件节点“compare”的前提下表示出来。
其中,源代码中的每一种结构都可以表示成书上的节点,它并不会将源代码中每一个细节都表示出来。
具体地,抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段所采用的上下文无文文法,因为在写文法时,经常会对文法进行等价的转换(比如消除左递归,回溯,二义性等),这样会给文法分析引入一些多余的成分,对后续阶段造成不利影响,甚至会使合个阶段变得混乱。因此,很多编译器经常要独立地构造抽象语法树,为前端或后端建立一个清晰的接口。
在一些实施例中,对所述代码数据进行解析,得到代码信息;对所述代码信息进行筛选处理,得到目标代码信息;根据所述目标代码信息生成所述代码数据对应的抽象语法树。由此可以准确地筛选得到目标代码信息,并通过目标代码信息生成抽象语法树,从而将抽象语法树的节点信息全部表示出来。
其中,所述代码信息为对代码数据进行分词后得到的代码片段,所述目标代码信息为对代码片段进行分类筛选后得到的,具体可以分为第一类代码信息和第二类代码信息。
具体地,可以对代码数据中的源代码进行分词以及解析处理,从而得到对应的代码信息;对全部代码信息进行分类以及筛选处理,得到目标代码信息;最后根据筛选得到的目标代码信息生成代码数据对应的抽象语法树。
示例性的,如图2所示,可以通过Python内置的Ast模块将py的代码语言转化为词类别进行抽象语法树的生成。以图2中示例代码片段为例,Ast模块将代码中前两行的定义解析为“flag”=“Assign”,“False”=“Name”和“name”=“Assign”,“‘luren’”=“Name”,最后根据Name存储的变量类别分为“Store”和“Load”,从而生成对应的抽象语法树。由此可通过AST模块将抽象语法树的节点信息全部表示出来。
在一些实施例中,所述目标代码信息包括第一类代码信息和第二类代码信息,根据所述第一类代码信息确定所述抽象语法树的主体信息;根据所述第二类代码信息确定所述抽象语法树的连接信息;根据所述主体信息和所述连接信息生成所述抽象语法树。由此可以准确地确定抽象语法树的主体信息以及连接信息以生成抽象语法树。
其中,所述第一类代码信息为实体节点对应的代码信息,比如源代码中的输入条件或输出条件等。所述第二类代码信息为逻辑节点对应的代码信息,比如源代码中的判断条件或假设条件等。所述主体信息可以作为所述抽象语法树的树干,用于作为抽象语法树的主体;所述连接信息可以作为所述抽象语法树的树枝,用于连接抽象语法树的主体。
具体地,通过解析各代码信息,从而得到各代码信息对应的代码特征,通过代码特征对代码信息进行分类以及筛选处理,得到第一类代码信息和第二类代码信息。再根据第一类代码信息生成抽象语法树的主体信息;根据所述第二类代码信息生成抽象语法树的连接信息;最后根据主体信息和连接信息进行连接以构造得到对应的抽象语法树。
示例性的,若源代码为if a=b,可以对代码数据中的源代码进行分词以及解析处理,从而得到对应的代码信息包括“if”、“a”、“=”和“b”;对上述代码信息进行分类以及筛选处理,由于代码信息“a”和“b”为实体节点对应的代码信息,因此将代码信息“a”和“b”作为第一类代码信息,并生成抽象语法树对应的主体信息。由于代码信息“if”和“=”为逻辑节点对应的代码信息,因此将代码信息“if”和“=”作为第二类代码信息,并生成抽象语法树对应的连接信息。最后通过主体信息和连接信息生成对应的抽象语法树。
S103、遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息。
其中,所述节点信息用于表示编程语言的元素,从而为后续的路径的生成能够有着更为直观的分析。
具体地,可以利用python的AST模块中parse函数,将python文件转化成抽象语法树,因为内置compile函数的原因,所以输出的结果得到的是编译过后的字节码,也就是节点信息。
在一些实施例中,基于预设的遍历函数,遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的树形结构信息;基于预设的转换函数,对所述树形结构信息进行转换处理,得到所述抽象语法树的节点信息。由此可以准确地从抽象语法树中提取得到节点信息。
其中,所述遍历函数可以包括深度遍历函数或广度遍历函数,示例性的,广度遍历函数可以为walk函数,深度遍历函数可以为NodeVisitor函数。所述树形结构信息用于表示抽象语法树中各节点的连接关系。所述转换函数用于提取得到节点信息,具体可以包括Generic_visit函数和visit_[Node-type]函数。
具体地,可以通过深度遍历函数或广度遍历函数来使得节点输出能够符合预期一样展示出来。在AST模块里,广度遍历是walk函数;深度遍历是NodeVisitor函数,其中又内置generic_visit函数以及visit_[Node-type]函数两类函数,generic_visit函数能够进行深度遍历抽象语法树,完成节点信息的获取visit_[Node-type]函数能够生成对应的节点信息。
示例性的,如图3所示,可以利用python的AST模块中parse函数,将python文件转化成抽象语法树,由于内置compile函数的原因,所以输出的结果得到的是编译过后的字节码,也就是节点信息,从而可以利用可视化抽象语法树得到的节点信息,并为后续的路径的生成能够有着更为直观的分析。
S104、确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息。
其中,所述目标节点为具有明显特征性质的节点,具体地,所述目标节点可以包括身份、文字、运算符或一些内置名称(如int)等标记。所述路径信息用于表示代码数据中节点的各种路径,从而形成多维向量。
具体地,通过相关函数获取到节点信息后,将其按照需要的方式形成路径,然而路径特征选择也是一个难点,因为抽象语法树并不会表示出真实语法出现的每一个细节,代码细则会隐藏在嵌套的树结构中,加上ast模块是抽象类逻辑表示,有很大概率会产生重复的路径选择,或者是导致之后训练无法达到预期效果。因此,本申请可以将一份代码数据的路径多样化表示出来,即深度遍历节点输出后,将遍历到的每个叶子节点作为表示的路径结束,即root->token->leafNode,以确保形成的路径多样化。
在一些实施例中,对所述节点信息进行节点提取处理,得到多个节点及其对应的节点特征;根据所述节点特征,对所述多个节点进行筛选,得到目标节点。由此可以提取到节点特征以准确地筛选得到目标节点。
其中,所述节点特征用于表示节点的属性信息。
具体地,对所述节点信息进行节点提取处理,得到多个节点以及每个节点对应的节点特征,确定每个节点对应的节点特征是否包括预设标记特征,若该节点对应的节点特征包括预设标记特征,则将该节点作为目标节点;若该节点对应的节点特征不包括预设标记特征,则不将该节点作为目标节点。
其中,所述预设标记特征包括身份、文字、运算符或一些内置名称(如int)等标记特征。
示例性的,可以在python自带的抽象语法树模块里,自动生成对应的目标节点。
在一些实施例中,获取所述目标节点的节点特征,并根据所述节点特征对所述目标节点进行分类,得到多个父节点及各所述父节点对应的子节点;根据所述节点特征,对所述父节点和所述子节点进行路径构建,得到路径信息。由此可以准确地进行路径构建并生成路径信息。
具体地,可以获取目标节点的节点连接关系,并根据节点连接关系对目标节点的类型进行分类,得到多个父节点及各父节点对应的子节点;再根据节点连接关系对所述父节点和所述子节点进行路径构建,得到路径信息。
示例性的,如图4所示,可以从AST模块中提取标记化路径,它将词汇标记与其句法路径联系在一起,以一种抽象逻辑的方式进行表达。抽象语法树中的节点代表编程语言的元素,抽象语法树中的边将子节点与父节点连接起来,由此可以构成路径信息。图4中的AST模块中的灰色填充节点称为目标节点,通常包含身份、文字、运算符或一些内置名称(如int)的标记。之后可以利用AST模块自带的NodeVisitor函数进行深度遍历,获取到节点信息后,以叶子节点为终止进行路径生成。
S105、基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。
其中,所述代码识别模型用于对代码数据的身份进行识别,从而实现在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。所述身份信息可以用于确定代码数据的来源,从而准确地对恶意代码进行溯源以及定位。
在一些实施例中,对所述路径信息进行特征提取,得到路径特征;对所述路径特征进行向量转化处理,得到所述路径信息对应的数字向量;将所述数字向量输入到所述代码识别模型,得到所述代码数据对应的身份信息。由此可以将路径信息转化为数字向量,并准确地得到代码数据对应的身份信息。
其中,所述路径特征用于反映路径的节点信息状况,能够代表代码风格以及程序员身份的相关信息表示作为代码识别模型的输入,从而提高代码识别的效率。
具体地,获得代码的路径信息后,接下来需要为代码识别模型的输入做准备。由于语料库中存在多种路径,路径的表示呈现出大而稀疏的特征空间。为了提高效率,需要选择最重要或最有区别的路径特征进行向量转化处理,并作为代码识别模型的输入。
在形成路径特征后,准备将路径特征输入到代码识别模型,而代码识别模型的输入选择则是数字向量,旨在将每个节点按照特定数字特征表示,如Module=1,FunctionDef=2,Assign=3,以此类推,将文本向量转化为数字向量。
示例性的,如图5所示,若路径信息包括Module、FunctionDef、FunctionCall-、Assign和Name,其路径为Module->FunctionDef->FunctionCall->Assign->Name。可以将路径节点均转换为对应的数字型向量:001->002->003->005->021。
在一些实施例中,根据所述数字向量,确定所述代码数据与预设代码数据的相似度;若所述相似度超过相似度阈值,则获取所述预设代码数据的身份信息,并将所述身份信息作为所述代码数据的身份信息。
其中,所述预设代码数据通过将程序员写的代码汇总得到,每个预设代码数据均对应有身份信息。所述相似度阈值可以为任意数值,在此不做具体限定。
由于每个程序员编写代码的风格不同,可以使用机器学习的方法判断出一份匿名代码来自于哪位程序员,也可以将同一人写的不同代码识别出来,从而形成身份识别鉴定。
具体地,将数字向量输入到代码识别模型,从而确定代码数据与预设代码数据的相似度;若所述相似度超过相似度阈值,则获取所述预设代码数据的身份信息,并将所述身份信息作为所述代码数据的身份信息;若所述相似度未超过相似度阈值,则重新确定代码数据的身份信息,或,获取另外的预设代码数据进行相似度比较。
具体地,可以通过获取一份代码数据的所有路径特征,构成一个稀疏矩阵,将获得的稀疏矩阵存入csv文件,之后将数据集分为测试集和训练集,将训练好的代码识别模型去匹配对应测试集的代码,从而得到代码识别模型的精确度。
示例性的,如图6所示,经过训练后的代码识别模型进行相似度匹配后,能够保证准确率达到88%以上。
如图7所示,本申请通过获取代码数据(即源代码),所述代码数据包括部分或全部匿名代码;对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息(即节点路径);基于预训练好的代码识别模型,根据所述路径信息进行相似度匹配,以确定所述代码数据对应的身份信息。由此可以准确地识别出恶意代码,从而在自动化测试平台准确地对恶意代码进行溯源以及定位,提高了测试平台的稳定性和安全性,提高了用户体验。
请参阅图8,图8是本申请实施例提供的一种终端设备的示意性框图。如图8所示,该终端设备200包括一个或多个处理器201和存储器202,处理器201和存储器202通过总线连接,该总线比如为I2C(Inter-integrated Circuit)总线。
其中,一个或多个处理器201单独地或共同地工作,用于执行上述实施例提供的代码识别方法的步骤。
具体地,处理器201可以是微控制单元(Micro-controller Unit,MCU)、中央处理单元(Central Processing Unit,CPU)或数字信号处理器(Digital Signal Processor,DSP)等。
具体地,存储器202可以是Flash芯片、只读存储器(ROM,Read-Only Memory)磁盘、光盘、U盘或移动硬盘等。
其中,处理器201用于运行存储在存储器202中的计算机程序,并在执行所述计算机程序时实现上述实施例提供的代码识别方法的步骤。
示例性的,处理器201用于运行存储在存储器202中的计算机程序,并在执行所述计算机程序时,实现如下步骤:
获取代码数据,所述代码数据包括部分或全部匿名代码;对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息;基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。
在一些实施例中,所述处理器在实现所述对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树时,用于实现:对所述代码数据进行解析,得到代码信息;对所述代码信息进行筛选处理,得到目标代码信息;根据所述目标代码信息生成所述代码数据对应的抽象语法树。
在一些实施例中,所述目标代码信息包括第一类代码信息和第二类代码信息;所述处理器在实现所述根据所述目标代码信息生成所述代码数据对应的抽象语法树时,用于实现:根据所述第一类代码信息确定所述抽象语法树的主体信息;根据所述第二类代码信息确定所述抽象语法树的连接信息;根据所述主体信息和所述连接信息生成所述抽象语法树。
在一些实施例中,所述处理器在实现所述遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息时,用于实现:基于预设的遍历函数,遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的树形结构信息;基于预设的转换函数,对所述树形结构信息进行转换处理,得到所述抽象语法树的节点信息。
在一些实施例中,所述处理器在实现所述确定所述节点信息中的目标节点时,用于实现:对所述节点信息进行节点提取处理,得到多个节点及其对应的节点特征;根据所述节点特征,对所述多个节点进行筛选,得到目标节点。
在一些实施例中,所述处理器在实现所述根据所述目标节点生成路径信息时,用于实现:获取所述目标节点的节点特征,并根据所述节点特征对所述目标节点进行分类,得到多个父节点及各所述父节点对应的子节点;根据所述节点特征,对所述父节点和所述子节点进行路径构建,得到路径信息。
在一些实施例中,所述设备信息包括接口信息,所述处理器在实现所述基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息时,还用于实现:对所述路径信息进行特征提取,得到路径特征;对所述路径特征进行向量转化处理,得到所述路径信息对应的数字向量;将所述数字向量输入到所述代码识别模型,得到所述代码数据对应的身份信息。
在一些实施例中,所述处理器在实现所述将所述数字向量输入到所述代码识别模型,得到所述代码数据对应的身份信息时,用于实现:根据所述数字向量,确定所述代码数据与预设代码数据的相似度;若所述相似度超过相似度阈值,则获取所述预设代码数据的身份信息,并将所述身份信息作为所述代码数据的身份信息。
本申请的实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序中包括程序指令,所述处理器执行所述程序指令,实现本申请实施例提供的任一项代码识别方法。
其中,所述计算机可读存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述计算机可读存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种代码识别方法,其特征在于,应用于原子化微服务分布式架构的平台,所述方法包括:
获取代码数据,所述代码数据包括部分或全部匿名代码;
对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树;
遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息;
确定所述节点信息中的目标节点,并根据所述目标节点生成路径信息;
基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息。
2.根据权利要求1所述的方法,其特征在于,所述对所述代码数据进行解析以及抽象化处理,生成所述代码数据对应的抽象语法树,包括:
对所述代码数据进行解析,得到代码信息;
对所述代码信息进行筛选处理,得到目标代码信息;
根据所述目标代码信息生成所述代码数据对应的抽象语法树。
3.根据权利要求2所述的方法,其特征在于,所述目标代码信息包括第一类代码信息和第二类代码信息,所述根据所述目标代码信息生成所述代码数据对应的抽象语法树,包括:
根据所述第一类代码信息确定所述抽象语法树的主体信息;
根据所述第二类代码信息确定所述抽象语法树的连接信息;
根据所述主体信息和所述连接信息生成所述抽象语法树。
4.根据权利要求1所述的方法,其特征在于,所述遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的节点信息,包括:
基于预设的遍历函数,遍历所述抽象语法树,并对所述抽象语法树进行特征提取,得到所述抽象语法树的树形结构信息;
基于预设的转换函数,对所述树形结构信息进行转换处理,得到所述抽象语法树的节点信息。
5.根据权利要求1所述的方法,其特征在于,所述确定所述节点信息中的目标节点,包括:
对所述节点信息进行节点提取处理,得到多个节点及其对应的节点特征;
根据所述节点特征,对所述多个节点进行筛选,得到目标节点。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标节点生成路径信息,包括:
获取所述目标节点的节点特征,并根据所述节点特征对所述目标节点进行分类,得到多个父节点及各所述父节点对应的子节点;
根据所述节点特征,对所述父节点和所述子节点进行路径构建,得到路径信息。
7.根据权利要求1所述的方法,其特征在于,所述基于预训练好的代码识别模型,根据所述路径信息确定所述代码数据对应的身份信息,包括:
对所述路径信息进行特征提取,得到路径特征;
对所述路径特征进行向量转化处理,得到所述路径信息对应的数字向量;
将所述数字向量输入到所述代码识别模型,得到所述代码数据对应的身份信息。
8.根据权利要求7所述的方法,其特征在于,所述将所述数字向量输入到所述代码识别模型,得到所述代码数据对应的身份信息,包括:
根据所述数字向量,确定所述代码数据与预设代码数据的相似度;
若所述相似度超过相似度阈值,则获取所述预设代码数据的身份信息,并将所述身份信息作为所述代码数据的身份信息。
9.一种终端设备,其特征在于,所述终端设备包括存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述的计算机程序并在执行所述的计算机程序时实现如权利要求1至8任一项所述的代码识别方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时使所述处理器实现如权利要求1至8中任一项所述的代码识别方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211634020.5A CN116340940A (zh) | 2022-12-19 | 2022-12-19 | 代码识别方法、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211634020.5A CN116340940A (zh) | 2022-12-19 | 2022-12-19 | 代码识别方法、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116340940A true CN116340940A (zh) | 2023-06-27 |
Family
ID=86878006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211634020.5A Pending CN116340940A (zh) | 2022-12-19 | 2022-12-19 | 代码识别方法、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116340940A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932465A (zh) * | 2023-09-15 | 2023-10-24 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种镜像文件管理方法、系统、设备及介质 |
-
2022
- 2022-12-19 CN CN202211634020.5A patent/CN116340940A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116932465A (zh) * | 2023-09-15 | 2023-10-24 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种镜像文件管理方法、系统、设备及介质 |
CN116932465B (zh) * | 2023-09-15 | 2024-01-23 | 山东未来网络研究院(紫金山实验室工业互联网创新应用基地) | 一种镜像文件管理方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN109800175B (zh) | 一种基于代码插桩的以太坊智能合约重入漏洞检测方法 | |
CN111488174B (zh) | 应用程序接口文档的生成方法、装置、计算机设备及介质 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
US7340475B2 (en) | Evaluating dynamic expressions in a modeling application | |
CN112149399B (zh) | 基于rpa及ai的表格信息抽取方法、装置、设备及介质 | |
CN108614707A (zh) | 静态代码检查方法、装置、存储介质和计算机设备 | |
EP3623948B1 (en) | Method and system for code analysis to identify causes of code smells | |
US20110307488A1 (en) | Information processing apparatus, information processing method, and program | |
CN110427375B (zh) | 字段类别的识别方法及装置 | |
CN106371997A (zh) | 一种代码检查方法及装置 | |
CN115022026A (zh) | 一种区块链智能合约威胁检测装置及方法 | |
CN116340940A (zh) | 代码识别方法、终端设备及存储介质 | |
CN108563561A (zh) | 一种程序隐性约束提取方法及系统 | |
CN114418398A (zh) | 场景任务开发方法、装置、设备及存储介质 | |
CN112965909A (zh) | 测试数据、测试用例生成方法及系统、存储介质 | |
CN116820996A (zh) | 基于人工智能的集成测试用例自动生成方法和装置 | |
US20230072988A1 (en) | System and a method for automatic generation of smart contracts across blockchain platforms | |
Sinpang et al. | Detecting ambiguity in requirements analysis using Mamdani fuzzy inference | |
Seresht et al. | Automated assistance for use cases elicitation from user requirements text | |
CN113805861A (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
CN110928535A (zh) | 衍生变量部署方法、装置、设备及可读存储介质 | |
CN114610320B (zh) | 一种基于llvm的变量类型信息修复与比较方法及系统 | |
CN116502140B (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 |