This application proposes a static source code scanning method, device, computer equipment and storage medium, in which methods include: acquiring an abstract grammar tree corresponding to the source code to be scanned; parsing the code information in the abstract grammar tree, generating a set of execution chains corresponding to the abstract grammar tree, in which each execution chain in the set of execution chains is separately tied to one of the source codes. Line paths correspond; each execution chain in the set of execution chains is traversed to determine whether the source code contains defective code. Through this method, the defect code can be determined only by analyzing each execution chain. The analysis process is simple and reliable, which improves the analysis efficiency. It solves the technical problems of complex and inefficient analysis process by converting the source code into the corresponding control flow chart and then traversing the control flow chart to realize the static scanning of the source code.
【技术实现步骤摘要】
静态源码扫描方法、装置、计算机设备及存储介质
本申请涉及数据处理
,尤其涉及一种静态源码扫描方法、装置、计算机设备及存储介质。
技术介绍
静态源代码扫描是近年被人们提及较多的软件应用安全解决方案之一,是指在软件工程中,程序员在写好源代码后,对编写完成的源代码进行扫描,以找出源代码当中存在的缺陷,保证软件质量。目前,相关技术中,对源代码进行静态扫描时,多是通过各种方式将源代码转换为控制流图,再采用多种算法对控制流图进行遍历分析,以对源代码进行缺陷检测。这种静态扫描方式,分析过程复杂,并且对不同的分析目标需要编写对应的遍历程序,效率低。
技术实现思路
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本申请的提出一种静态源码扫描方法、装置、计算机设备及存储介质,用于解决现有技术中先将源代码转换为对应的控制流图,再对控制流图进行遍历分析实现源代码的静态扫描,分析过程复杂、效率低的技术问题。为达上述目的,本申请第一方面实施例提出了一种静态源码扫描方法,包括:获取待扫描源码对应的抽象语法树;对所述抽象语法树中的代码信息进行解析,生成与所述抽象语法树对应的执行链集合,其中,执行链集合中每条执行链分别与源码中的一条执行路径对应;对所述执行链集合中的每条执行链进行遍历,以确定所述源码中是否包含缺陷代码。本申请实施例的静态源码扫描方法,通过获取待扫描源码对应的抽象语法树,对抽象语法树中的代码信息进行解析,生成与抽象语法树对应的执行链集合,进而对执行链集合中的每条执行链进行遍历,以确定源码中是否包含缺陷代码。由此,通过将源码转换为抽象语法树,而抽象语法树自身包含 ...
【技术保护点】
1.一种静态源码扫描方法,其特征在于,包括:获取待扫描源码对应的抽象语法树;对所述抽象语法树中的代码信息进行解析,生成与所述抽象语法树对应的执行链集合,其中,执行链集合中每条执行链分别与源码中的一条执行路径对应;对所述执行链集合中的每条执行链进行遍历,以确定所述源码中是否包含缺陷代码。
【技术特征摘要】
1.一种静态源码扫描方法,其特征在于,包括:获取待扫描源码对应的抽象语法树;对所述抽象语法树中的代码信息进行解析,生成与所述抽象语法树对应的执行链集合,其中,执行链集合中每条执行链分别与源码中的一条执行路径对应;对所述执行链集合中的每条执行链进行遍历,以确定所述源码中是否包含缺陷代码。2.如权利要求1所述的方法,其特征在于,所述对所述抽象语法树中的代码信息进行解析,生成与所述抽象语法树对应的执行链集合,包括:由父节点至末端子节点,依次根据每个节点对应的节点类型,生成多条子执行链,其中,每条子执行链中包括至少一个节点;根据所述多条子执行链中的节点间的关系,将所述多条子执行链进行合并处理,生成至少一条总执行链;所述对所述执行链集合中的每条执行链进行遍历,包括:对所述多条子执行链及所述至少一条总执行链分别进行遍历。3.如权利要求2所述的方法,其特征在于,所述依次根据每个节点对应的节点类型,生成多条子执行链,包括:依次判断每个节点对应的节点类型,是否为预设的节点类型;若任一节点对应的节点类型为预设的节点类型,则对所述任一节点所在的结构块中每个子节点的代码信息进行解析,以生成与所述任一节点所在的结构块对应的子执行链集合;否则,对所述任一节点所在的结构块的代码信息进行解析,以生成与所述任一节点所在的结构块对应的执行语句。4.如权利要求1所述的方法,其特征在于,所述执行链中包括各节点的节点内容和状态信息;所述对所述执行链集合中的每条执行链进行遍历,以确定所述源码中是否包含缺陷代码,包括:对每条执行链进行遍历,以确定每条执行链中各节点间的节点内容和/或状态信息是否匹配;若任一条执行链中至少一个节点的节点内容和/或状态信息未与其它节点的节点内容和/或状态信息匹配,则确定所述源码含缺陷代码。5.如权利要求4所述的方法,其特征在于,所述每条执行链中包括...
【专利技术属性】
技术研发人员:张全,李彦成,彭云鹏,
申请(专利权)人:百度在线网络技术北京有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。