[发明专利]代码排查方法和相关装置有效
申请号: | 201210355330.3 | 申请日: | 2012-09-21 |
公开(公告)号: | CN102929596A | 公开(公告)日: | 2013-02-13 |
发明(设计)人: | 谢青 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 唐华明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 排查 方法 相关 装置 | ||
技术领域
本发明涉及数据处理领域,具体涉及代码排查方法和相关装置。
背景技术
现行大型软件一般都有自己的代码库,其中代码都以百万行计。这样的航母级软件,软件质量和可靠性非常重要。例如当在进行某些维护时发现特定编码方式存在软件bug,此时对海量代码排查就成了必须要做的工作,而人工排查费时费力,且不可保证排查是否干净。
目前对例如C++代码等排查的工具虽比较多(如Lint、Coverity等),但现有工具都是通过分析语法树,利用单行正则表达式来对已知通用的C++规则进行排查,现有方式难以对较复杂规则代码进行匹配排查,使得应用场景受到诸多限制。
发明内容
本发明实施例提供一种代码排查方法和相关装置,以期提高对较复杂规则代码的匹配排查能力。
本发明第一方面提供一种代码排查方法,可包括:
利用正则表达式队列中的第m行正则表达式对标准格式代码段中的第n行标准格式代码进行匹配;
若所述正则表达式队列中的第m行正则表达式未成功匹配到所述标准格式代码段中的第n行标准格式代码,且所述n+y小于或等于N且大于0,则利用所述正则表达式队列中的第m行正则表达式,对所述标准格式代码段中的第n+y行标准格式代码进行匹配;
若所述正则表达式队列中的第m行正则表达式成功匹配到了所述标准格式代码段中的第n行标准格式代码,且所述m+x小于或等于M且大于0,并且所述n+y小于或等于所述N且大于0,则利用所述正则表达式队列中的第m+x行正则表达式,对所述标准格式代码段中的第n+y行标准格式代码进行匹配;
其中,所述x和y为非零整数,所述x和/或y为可变值或者固定值,所述标准格式代码段包括N行标准格式代码,所述正则表达式队列包括M行正则表达式,所述M、N、m和n为正整数,所述M和N大于1,0<m≤M,0<n≤N;
若满足设定的匹配停止条件,则输出所述正则表达式队列与所述标准格式代码段的匹配结果。
在第一方面的第一种可能的实现方式中,所述若满足设定的匹配停止条件,则输出所述正则表达式队列与所述标准格式代码段的匹配结果,包括:
若所述正则表达式队列中的每行正则表达式均被成功匹配了对应的设定次数,则输出匹配结果为所述标准格式代码段被所述正则表达式队列成功匹配;和/或,若正则表达式队列中的任意一行正则表达式未被成功匹配对应的设定次数,但所述n+y小于0或大于所述N,则输出匹配结果为所述标准格式代码段与所述正则表达式队列匹配失败。
在第一方面的第二种可能的实现方式中,所述若满足设定的匹配停止条件,则输出所述正则表达式队列与所述标准格式代码段的匹配结果,包括:若所述正则表达式队列中的每行正则表达式均被成功匹配了至少1次,则输出匹配结果为所述标准格式代码段被所述正则表达式队列成功匹配;和/或,若正则表达式队列中的任意一行正则表达式未被成功匹配至少1次,但所述n+y小于0或者大于所述N,则输出匹配结果为所述标准格式代码段与所述正则表达式队列匹配失败。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在所述利用正则表达式队列中的第m行正则表达式对标准格式代码段中的第n行标准格式代码进行匹配的步骤之前,所述方法还包括:
获取源代码段;
将获取的源代码段进行格式标准化处理以得到标准格式代码段。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述将获取的源代码段进行格式标准化处理得到标准格式代码段包括:去除获取的源代码段中的注释、换行和/或连续多个空格以得到标准格式代码段。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述若所述正则表达式队列中的第m行正则表达式成功匹配到了所述标准格式代码段中的第n行标准格式代码,且所述m+x小于或等于M且大于0,并且所述n+y小于或等于所述N且大于0,则利用所述正则表达式队列中的第m+x行正则表达式,对所述标准格式代码段中的第n+y行标准格式代码进行匹配,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210355330.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种有机硅改性耐高温涂料
- 下一篇:丝网微束等离子弧焊搭接焊的接头装配方法