The invention discloses a program statement error detecting method and a device for reducing the program running error or the program running collapse caused by the program statement error. Including the program statement error detection method: traverse testing procedure statement, the identification of the testing procedures to be included in the statement variables; for each variable to identify, determine the program statement contains the variable type of statement and contains the variables of the program statement of position information, including the use of the type of sentence statements and assignment statements; for each statement, for each statement, according to the position information of the assignment statement using the position information and the statement contained in the corresponding variable is used, the analysis contains the program statements between the corresponding assignment and the use statement is used on the condition variable the use of; according to the condition of judgment is the use of variables depend on whether there is the use of error.
【技术实现步骤摘要】
一种程序语句错误检测方法和装置
本专利技术涉及计算机
,尤其涉及一种程序语句错误检测方法和装置。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。程序中空指针的使用是一个致命的问题,且往往不容易被发现,为了防止此种错误,指针使用之前的判空操作不可忽视。目前有很多针对特定编程语言的工具可以自动检测指针的未判空使用,例如针对C语言的Coverity代码静态检测工具。然而,lua作为游戏后台的主流开发脚本语言,目前并没有工具来自动检测指针的未判空使用。而指针未判空使用的后果常常是程序崩溃引起宕机,因此,如何对程序中指针未判空使用进行检测成为现有技术中亟待解决的技术问题之一。
技术实现思路
本专利技术实施例提供了一种程序语句错误检测方法和装置,用以减少由于程序语句错误导致的程序运行错误或者程序运行崩溃的问题。本专利技术实施例提供一种程序语句错误检测方法,包括:遍历待检测程序语句,识别所述待检测程序语句中包含的变量;针对识别出的每一变量,确定包含该变量的程序语句的语句类型和包含该变量的程序语句的 ...
【技术保护点】
一种程序语句错误检测方法,其特征在于,包括:遍历待检测程序语句,识别所述待检测程序语句中包含的变量;针对识别出的每一变量,确定包含该变量的程序语句的语句类型和包含该变量的程序语句的位置信息,所述语句类型包括使用语句和赋值语句;针对每一使用语句,根据该使用语句的位置信息和该使用语句中包含的被使用变量所对应的赋值语句的位置信息,分析相应的赋值语句和使用语句之间包含的程序语句得到所述被使用变量使用的依赖条件;根据所述依赖条件判断被使用变量是否存在使用错误。
【技术特征摘要】
1.一种程序语句错误检测方法,其特征在于,包括:遍历待检测程序语句,识别所述待检测程序语句中包含的变量;针对识别出的每一变量,确定包含该变量的程序语句的语句类型和包含该变量的程序语句的位置信息,所述语句类型包括使用语句和赋值语句;针对每一使用语句,根据该使用语句的位置信息和该使用语句中包含的被使用变量所对应的赋值语句的位置信息,分析相应的赋值语句和使用语句之间包含的程序语句得到所述被使用变量使用的依赖条件;根据所述依赖条件判断被使用变量是否存在使用错误。2.如权利要求1所述的方法,其特征在于,在遍历待检测程序语句之前,还包括:构造所述待检测程序语句的抽象语法树AST;以及遍历待检测程序语句,识别所述待检测程序语句中包含的变量,具体包括:遍历所述待检测程序语句的AST,识别所述AST中包含的预设标识符;从包含所述预设标识符的程序语句中提取所述待检测程序语句中包含的变量。3.如权利要求1所述的方法,其特征在于,所述依赖条件包括直接依赖条件和控制依赖条件;以及根据所述依赖条件判断被使用变量是否存在使用错误,具体包括:根据所述直接依赖条件和控制依赖条件,构造被使用变量的值依赖图VDG;在所述VDG中,针对每一使用语句,对该使用语句进行前向切片,直至到达该使用语句中包含的被使用变量所对应的第一条赋值语句为止;对所述前向切片进行分析得到分析结果;根据所述分析结果,判断被使用变量是否存在使用错误。4.如权利要求3所述的方法,其特征在于,对所述前向切片进行分析得到分析结果,具体包括:对所述前向切片进行分析,确定被使用变量的正确使用路径;从所述正确使用路径中查找被使用变量的控制依赖条件;并确定所述控制依赖条件的反向条件。5.如权利要求4所述的方法,其特征在于,如果所述控制依赖条件有多个;则确定所述控制依赖条件的反向条件,具体包括:确定多个控制依赖条件的并集的反向条件。6.如权利要求4或5所述的方法,其特征在于,根据所述分析结果,判断被使用变量是否存在使用错误,具体包括:将所述反向条件输入约束求解器;如果接收到所述约束求解器的求解结果,则确定被使用变量存在使用错误,如果未接收到所述约束求解器的求解结果,则确定被使用变量不存在使用错误。7.如权利要求1~5任一权利要求所述的方法,其特征在于,如果判断出被使用变量存在使用错误,则所述方法,还包括:针对判断出的变量使用错误进行修复;或者输出变量存在使用错误的提示信息。8.如权利要求7所述的方...
【专利技术属性】
技术研发人员:王杰,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。