代码的扫描方法、装置、设备、存储介质及程序产品制造方法及图纸

技术编号:33555472 阅读:6 留言:0更新日期:2022-05-26 22:52
本申请提供了一种代码的扫描方法、装置、设备及计算机可读存储介质;涉及计算机以及数据处理技术领域,方法包括:获取源代码中每行代码分别对应的标识序列,其中,每个标识序列包括多个标识,每个标识序列对应于源代码中的一个数组对象;对每个标识序列进行以下处理:确定标识序列中每个标识的标识类型,以及基于标识类型对应的字典结构转换规则,对每个标识进行字典结构转换;基于转换结果,确定与数组对象一一对应的模拟数组对象。通过本申请,能够安全和准确地生成与源代码中数组对象对应的模拟数组对象,从而提升开发者查验源代码的效率。效率。效率。

【技术实现步骤摘要】
代码的扫描方法、装置、设备、存储介质及程序产品


[0001]本申请涉及计算机技术,尤其涉及一种代码的扫描方法、装置、设备、存储介质及程序产品。

技术介绍

[0002]在集成开发环境(IDE,Integrated Development Environment)中,开发人员可以获取源代码中的变量参数的定义行及使用行,但对于源代码中的数组的子对象进行检索,需要开发人员自行匹配数组结构;在代码检视中,对于数组结构匹配,容易忽略数组层级结构的不同,而出现获取不到对象(例如:键(Key)、数组对象)、对象对应的取值(例如:键对应的键值(Value),数组对象中的值)的情况。

技术实现思路

[0003]本申请实施例提供一种代码的扫描方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够安全和准确地生成与源代码中的数组对象对应的模拟数组对象,从而提升开发者查验源代码的效率。
[0004]本申请实施例的技术方案是这样实现的:
[0005]本申请实施例提供一种代码的扫描方法,包括:
[0006]获取源代码中每行代码分别对应的标识序列,其中,每个所述标识序列包括多个标识,每个所述标识序列对应于所述源代码中的一个数组对象;
[0007]对每个所述标识序列进行以下处理:
[0008]确定所述标识序列中每个所述标识的标识类型,以及
[0009]基于所述标识类型对应的字典结构转换规则,对每个所述标识进行字典结构转换;
[0010]基于转换结果,确定与所述数组对象一一对应的模拟数组对象。
[0011]本申请实施例提供一种代码的扫描装置,包括:。
[0012]数据采集模块,用于获取源代码中每行代码分别对应的标识序列,其中,每个所述标识序列包括多个标识,每个所述标识序列对应于所述源代码中的一个数组对象;
[0013]数据转换模块,用于对每个所述标识序列进行以下处理:确定所述标识序列中每个所述标识的标识类型,以及基于所述标识类型对应的字典结构转换规则,对每个所述标识进行字典结构转换;基于转换结果,确定与所述数组对象一一对应的模拟数组对象。
[0014]本申请实施例提供一种电子设备,所述电子设备包括:
[0015]存储器,用于存储可执行指令;
[0016]处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例所述的代码的扫描方法。
[0017]本申请实施例提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时实现本申请实施例所述的代码的扫描方法。
[0018]本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例所述的代码的扫描方法。
[0019]本申请实施例具有以下有益效果:
[0020]在静态扫描中将源代码的标识序列对应的数组对象转换为了字典存储结构的模拟数组对象,基于字典存储结构的模拟数组对象便于获取数组对象中的对象值,并且在静态扫描中构建模拟数组对象无需执行代码,避免了产生脏数据,提升了构建模拟数组的效率与安全性,便于开发者根据模拟数组对象高效地查验源代码。
附图说明
[0021]图1是本申请实施例提供的代码的扫描方法的应用场景的示意图;
[0022]图2是本申请实施例提供的用于代码的扫描的电子设备的结构示意图;
[0023]图3A是本申请实施例提供的代码的扫描方法的流程示意图;
[0024]图3B是本申请实施例提供的代码的扫描方法的流程示意图;
[0025]图3C是本申请实施例提供的代码的扫描方法的流程示意图;
[0026]图3D是本申请实施例提供的代码的扫描方法的流程示意图;
[0027]图3E是本申请实施例提供的代码的扫描方法的流程示意图;
[0028]图4是本申请实施例提供的数组对象的层级关系示意图;
[0029]图5是本申请实施例提供的代码的扫描方法的流程示意图;
[0030]图6是本申请实施例提供的代码的扫描方法的流程示意图。
具体实施方式
[0031]为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0032]在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
[0033]在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
[0034]除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的
的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
[0035]对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
[0036]1)行对象,以服务器端编程语言(PHP,Professional Hypertext Preprocessor)的语法中的语句单元为单位分隔的对象,行对象可以是一个占用多行定义的数组,例如:数组对象['key1'=>'value1','key2'=>'value2']可以视为一个行对象。行对象还可以是
变量声明,例如:一行(代码中以回车符分隔的代码块)中的多个变量声明,每个变量声明可以作为一个单独行对象。
[0037]2)标识(Token)序列,是静态扫描工具(Ulink,USB接口仿真器)中使用核心模块(Pygments)开源工具获取的代码分词结果,标识序列中包括提取到的关键词、区分注释、字符串文本等类型的标识。
[0038]3)数组对象,服务器端编程语言中的一种数据结构,可以是一维数组或者多维数组。通常由Key和Value组成的键值对的形式出现,如:['key1'=>'value1','key2'=>'value2'],是一个二维数组,包括两个键值对。本申请实施例中,为便于进行区分以及解释说明,将Key称为关键字或者键,将Key对应的Value称为键值或者值,关键字与键值组成键值对。
[0039]4)模拟数组对象,静态扫描工具中,基于数组对象进行模拟得到的对象。模拟数组对象提供写入、查询等接口,本体数据保存在字典存储结构中。字典数组也即模拟数组对象,是python中的一种字典存储结构,与服务器端编程语言的数组对象有相似之处,也通常以无序的键值对(键值对包括关键字、关键本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码的扫描方法,其特征在于,所述方法包括:获取源代码中每行代码分别对应的标识序列,其中,每个所述标识序列包括多个标识,每个所述标识序列对应于所述源代码中的一个数组对象;对每个所述标识序列进行以下处理:确定所述标识序列中每个所述标识的标识类型,以及基于所述标识类型对应的字典结构转换规则,对每个所述标识进行字典结构转换;基于转换结果,确定与所述数组对象一一对应的模拟数组对象。2.如权利要求1所述的方法,其特征在于,所述确定所述标识序列中每个所述标识的标识类型,包括:对所述标识序列中每个所述标识进行以下处理:对不同的所述标识类型对应的参考标识与所述标识序列中的标识进行匹配处理,得到所述参考标识中与所述标识序列中的标识匹配的目标标识;将与所述目标标识对应的标识类型,作为所述标识序列中的标识对应的标识类型。3.如权利要求1所述的方法,其特征在于,所述标识类型包括:起始标识、字符串文本以及结尾标识;所述基于所述标识类型对应的字典结构转换规则,对每个所述标识进行字典结构转换,包括:对每个所述标识执行以下转换:当所述标识的标识类型为起始标识时,基于所述起始标识对应的字典结构转换规则,将所述标识转换为字典结构中的头部标识;当所述标识的标识类型为字符串文本时,基于所述字符串文本对应的字典结构转换规则,将所述标识转换为字典结构中的字符串文本;当所述标识的标识类型为结尾标识时,基于所述结尾标识对应的字典结构转换规则,将所述标识转换为字典结构中的结尾标识;其中,每个所述标识进行字典结构转换得到的字符组成字典结构的所述模拟数组对象,将字典结构的所述模拟数组对象,以及不同的所述数组对象与所述模拟数组对象之间的对应关系作为转换结果。4.如权利要求3所述的方法,其特征在于,所述字符串文本包括映射符号、分隔符号、关键字以及键值;当所述标识的标识类型为字符串文本时,基于所述字符串文本对应的字典结构转换规则,将所述标识转换为字典结构中的字符串文本,包括:当所述字符串文本为映射符号时,将所述映射符号转换为所述字典结构中的定义符号,并将所述标识序列中与所述映射符号相邻的字符转换为字典结构;当所述字符串文本为分隔符号时,将所述标识序列中与所述分隔符号相邻的字符转换为字典结构。5.如权利要求4所述的方法,其特征在于,当所述字符串文本为映射符号时,将所述映射符号转换为所述字典结构中的定义符号,并将所述标识序列中与所述映射符号相邻的字符转换为字典结构,包括:当所述字符串文本为映射符号时,从所述标识序列中确定位于所述映射符号之前的字
符以及位于所述映射符号之后的字符;将位于所述映射符号之前的字符转换为字典结构中的定义词,将所述映射符号转换为所述字典结构中的定义符号,将位于所述映射符号之后的字符转换为所述字典结构中与位于所述映射符号之前的字符对应的定义值。6.如权利要求4所述的方法,其特征在于,当所述字符串文本为分隔符号时,将所述标识序列中与所述分隔符号相邻的字符转换为字典结构,包括:当所述字符串文本为分隔符号时,从所述标识序列中确定与所述分隔符号相邻的字符;当与所述分隔符号相邻的字符中的键值缺失对应的关键字时,对缺失对应的关键字的键值进行自增标识处理,得到键值对,将所述键值对转换为字典结构中的定义值对,其中,所述键值对包括键值与所述键值对应的自增关键字,所述定义值对包括定义词以及所述定义词对应的定义值;当位于所述分隔符号之后的字符不是关键字或键值时,跳过所述分隔符号,并基于所述分隔符号后的字符转入进行字典结构转换的处理;当位于所述分隔符号之后的字符是关键字或键值时,将所述分隔符号作为所述字典结构中的分隔符号。7.如权利要求3所述的方法,其特征在于,当所述标识的标识类型为结尾标识时,基于所述结尾标识对应的字典结构转换规则,将所述标识转换为字典结构中的结尾标识,包括:当所述标识的标识类型为结尾标识且所述结尾标识之前存在起...

【专利技术属性】
技术研发人员:葛雨辰周超邱旻峰
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1