[发明专利]用于源代码配对的静态检查方法及装置有效
| 申请号: | 201210217915.9 | 申请日: | 2012-06-27 |
| 公开(公告)号: | CN102799520A | 公开(公告)日: | 2012-11-28 |
| 发明(设计)人: | 胡事民;刘虎球 | 申请(专利权)人: | 清华大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 张大威 |
| 地址: | 100084 北京*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 用于 源代码 配对 静态 检查 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,具体涉及一种用于源码配对的静态检查方法及装置。
背景技术
在软件开发过程中,源代码配对是重要的调试和测试工作之一。源代码配对错误难以被编译器直接发现,却能带来具有隐蔽性和延时性的不良后果。例如,内存仅申请未释放会导致内存泄露,锁和信号量未配对均会可能导致死锁、忙等待。这些配对错误都给程序调试工作带来额外困难。
通常情况下,源代码配对工作依靠开发人员对源代码进行静态人工检查,依赖于人工对代码逐行扫描检查,效率较低且准确率较低。
发明内容
本发明旨在至少在一定程度上解决上述技术问题之一或至少提供一种有用的商业选择。为此,本发明的一个目的在于提出一种开销较小、效率较高、准确率较高的源代码配对的静态检测方法。本发明的另一个目的在于提出一种开销较小、效率较高、准确率较高的源代码配对的静态检测装置。
根据本发明实施例的一种用于源代码配对的静态检查方法,其特征在于,包括以下步骤:S1、对所述源代码进行词法分析,将所述源代码中的注释滤除,并将所述源代码拆分成若干个记号流;S2、对所述记号流进行语法分析以构造语法树;S3、对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;S4、判断所述需配对元素在所述作用域中是否配对;S5、若发现未被配对的所述需配对元素,则进一步判断是否允许修正;S6、若允许修正则在所述作用域结束处添加配对;以及S7、若不允许修正则发出警告和提示。
在本发明的一个实施例中,还包括:S8、若所述需配对元素全部配对,则直接结束检查。
在本发明的一个实施例中,所述需配对元素包括:内存元素、锁元素和信号量元素。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在主函数中时,在所述主函数的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在子函数中时,在所述子函数的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在分支结构中时,在所述分支结构的每一个分支的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在循环结构中时,在所述循环结构的每一个循环节的结束处添加配对。
根据本发明实施例的源代码配对的静态检查方法,能够有效的提高配对检查效率,提高系统的稳定性,有效避免一些边界错误,还可以根据用户的设置完成对用户程序的自动修正,极大的减少程序员工作量。
根据本发明实施例的一种用于源代码配对的静态检查装置,其特征在于,包括以下部分:词法分析器,用于对所述源代码进行词法分析,并将所述源代码中的注释滤除,将所述源代码拆分成若干个记号流;语法分析器,用于对所述记号流进行语法分析以构造语法树;查找及标记模块,用于对所述语法树进行语义分析,查找需配对元素,并标记所述需配对元素的作用域;第一判断模块,用于判断所述需配对元素在所述作用域中是否配对,若发现未被配对的所述需配对元素,则进入第二判断模块;所述第二判断模块,用于判断是否允许修正,若允许修正则进入修正模块,若不允许修正则发出警告和提示;以及所述修正模块,用于在所述作用域结束处添加配对。
在本发明的一个实施例中,若所述第一判断模块判断需配对元素全部配对,则直接结束检查。
在本发明的一个实施例中,所述需配对元素包括:内存元素、锁元素和信号量元素。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在主函数中时,在所述主函数的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在子函数中时,在所述子函数的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在分支结构中时,在所述分支结构的每一个分支的结束处添加配对。
在本发明的一个实施例中,当未被配对的所述需配对元素出现在循环结构中时,在所述循环结构的每一个循环节的结束处添加配对。
根据本发明实施例的源代码配对的静态检查装置,具有较高的配对检查效率,较高的系统的稳定性,能够有效避免一些边界错误,还可以根据用户的设置完成对用户程序的自动修正,减少了程序员工作量。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210217915.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:便携式电脑桌
- 下一篇:一种用于蒸汽清洁装置的排刷





