本发明专利技术提出一种用于源代码配对的静态检查方法及装置,其中本发明专利技术的方法包括以下步骤:对所述源代码进行词法分析,将所述源代码中的注释滤除,并将所述源代码拆分成若干个记号流;对所述记号流进行语法分析以构造语法树;对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;判断所述需配对元素在所述作用域中是否配对;若发现未被配对的所述需配对元素,则进一步判断是否允许修正;若允许修正则在所述作用域结束处添加配对;以及若不允许修正则发出警告和提示。该方法能够有效的提高配对检查效率,提高系统的稳定性,有效避免一些边界错误,还可以根据用户的设置完成对用户程序的自动修正,极大的减少程序员工作量。
【技术实现步骤摘要】
本专利技术涉及计算机
,具体涉及一种用于源码配对的静态检查方法及装置。
技术介绍
在软件开发过程中,源代码配对是重要的调试和测试工作之一。源代码配对错误难以被编译器直接发现,却能带来具有隐蔽性和延时性的不良后果。例如,内存仅申请未释放会导致内存泄露,锁和信号量未配对均会可能导致死锁、忙等待。这些配对错误都给程序调试工作带来额外困难。通常情况下,源代码配对工作依靠开发人员对源代码进行静态人工检查,依赖于 人工对代码逐行扫描检查,效率较低且准确率较低。
技术实现思路
本专利技术旨在至少在一定程度上解决上述技术问题之一或至少提供一种有用的商业选择。为此,本专利技术的一个目的在于提出一种开销较小、效率较高、准确率较高的源代码配对的静态检测方法。本专利技术的另一个目的在于提出一种开销较小、效率较高、准确率较高的源代码配对的静态检测装置。根据本专利技术实施例的一种用于源代码配对的静态检查方法,其特征在于,包括以下步骤S1、对所述源代码进行词法分析,将所述源代码中的注释滤除,并将所述源代码拆分成若干个记号流;S2、对所述记号流进行语法分析以构造语法树;S3、对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;S4、判断所述需配对元素在所述作用域中是否配对;S5、若发现未被配对的所述需配对元素,则进一步判断是否允许修正;S6、若允许修正则在所述作用域结束处添加配对;以及S7、若不允许修正则发出警告和提示。在本专利技术的一个实施例中,还包括S8、若所述需配对元素全部配对,则直接结束检查。在本专利技术的一个实施例中,所述需配对元素包括内存元素、锁元素和信号量元素。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在主函数中时,在所述主函数的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在子函数中时,在所述子函数的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在分支结构中时,在所述分支结构的每一个分支的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在循环结构中时,在所述循环结构的每一个循环节的结束处添加配对。根据本专利技术实施例的源代码配对的静态检查方法,能够有效的提高配对检查效率,提高系统的稳定性,有效避免一些边界错误,还可以根据用户的设置完成对用户程序的自动修正,极大的减少程序员工作量。根据本专利技术实施例的一种用于源代码配对的静态检查装置,其特征在于,包括以下部分词法分析器,用于对所述源代码进行词法分析,并将所述源代码中的注释滤除,将所述源代码拆分成若干个记号流;语法分析器,用于对所述记号流进行语法分析以构造语法树;查找及标记模块,用于对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;第一判断模块,用于判断所述需配对元素在所述作用域中是否配对,若发现未被配对的所述需配对元素,则进入第二判断模块;所述第二判断模块,用于判断是否允许修正,若允许修正则进入修正模块,若不允许修正则发出警告和提示;以及所述修正模块,用于在所述作用域结束处添加配对。在本专利技术的一个实施例中,若所述第一判断模块判断需配对元素全部配对,则直接结束检查。在本专利技术的一个实施例中,所述需配对元素包括内存元素、锁元素和信号量元 素。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在主函数中时,在所述主函数的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在子函数中时,在所述子函数的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在分支结构中时,在所述分支结构的每一个分支的结束处添加配对。在本专利技术的一个实施例中,当未被配对的所述需配对元素出现在循环结构中时,在所述循环结构的每一个循环节的结束处添加配对。根据本专利技术实施例的源代码配对的静态检查装置,具有较高的配对检查效率,较高的系统的稳定性,能够有效避免一些边界错误,还可以根据用户的设置完成对用户程序的自动修正,减少了程序员工作量。本专利技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中图I是本专利技术实施例的用于源代码配对的静态检查方法的流程图;以及图2是本专利技术实施例的用于源代码配对的静态检查装置的结构框图。具体实施例方式下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本专利技术,而不能理解为对本专利技术的限制。在本专利技术的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底” “内”、“外”、“顺时针”、“逆时针”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本专利技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。在本专利技术中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发·明中的具体含义。在本专利技术中,除非另有明确的规定和限定,第一特征在第二特征之“上”或之“下”可以包括第一和第二特征直接接触,也可以包括第一和第二特征不是直接接触而是通过它们之间的另外的特征接触。而且,第一特征在第二特征“之上”、“上方”和“上面”包括第一特征在第二特征正上方和斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”包括第一特征在第二特征正下方和斜下方,或仅仅表示第一特征水平高度小于第二特征。为使本领域技术人员更好地理解本专利技术,现对源代码的几种常见的需配对元素进行解释。(I)内存元素的申请与释放。计算机运行程序中,需要动态申请一些内存空间用于存储动态的用户数据,该部分内容在使用完毕时,应当予以释放,否则长时间运行则会引起内存泄露,在要求长时间运行的软件中危害尤其严重。(2)锁元素的加锁与解锁。计算机程序在运行中,线程之间常常需要访问一些临界区,即共享内存区,为了防止访问冲突,在访问时常常加锁,在访问完毕时释放锁,从而实现在临界区内只有一个线程在执行相应操作。相应地,如果申请的锁没有及时释放,则容易引起等待使用该项数据的线程忙等待和死锁。(3)信号量元素的申请和释放。信号量的作用和锁极为类似,区别在于信号量在等待时不会浪费处理器时间。以上三种常见的需配对元素,本文档来自技高网...
【技术保护点】
一种用于源代码配对的静态检查方法,其特征在于,包括以下步骤:S1、对所述源代码进行词法分析,将所述源代码中的注释滤除,并将所述源代码拆分成若干个记号流;S2、对所述记号流进行语法分析以构造语法树;S3、对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;S4、判断所述需配对元素在所述作用域中是否配对;S5、若发现未被配对的所述需配对元素,则进一步判断是否允许修正;S6、若允许修正则在所述作用域结束处添加配对;以及S7、若不允许修正则发出警告和提示。
【技术特征摘要】
【专利技术属性】
技术研发人员:胡事民,刘虎球,
申请(专利权)人:清华大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。