[发明专利]抑制计算机程序中的警告的方法和计算设备有效
申请号: | 201480026218.2 | 申请日: | 2014-05-08 |
公开(公告)号: | CN105283853B | 公开(公告)日: | 2018-08-07 |
发明(设计)人: | M·范德瑞;S·拉希瑞;F·洛戈佐;S·布莱克谢尔 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 罗婷婷 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 制定 语义 基线 | ||
本文描述了涉及制定语义基线的各技术。基于对基线程序进行的第一静态分析推断出基线程序的正确性条件。随后将这些正确性条件插入到对基线程序的修订中。当对其中插入有正确性条件的经修订程序进行第二静态分析时,抑制从基线程序继承的警告,同时向开发者显露由这些修订引起的警告。
技术领域
本发明涉及抑制计算机程序中的警告的技术。
背景技术
由程序开发者开发的计算机程序常常相对较大和复杂。例如,操作系统的源代码可包括几十万到几百万条代码,其中代码的不同部分由不同的开发者在不同的时间帧上写出。由于开发者通常无法通过源代码推测所有可能的执行,在程序的运行时可发生无法预料的错误。例如,某些变量值、事件、执行路径、其一些组合等可使得程序在被执行时按不期望/不合需的方式操作(例如,该程序包括潜在的隐错)。为了检测隐错,已开发出了静态分析和验证工具。
静态分析和验证工具分析计算机可执行代码以标识程序执行期间可发生的潜在隐错,诸如空指针异常、除以零错误、数组越界错误等等。在某些情况下,被提供警告的开发者可希望忽略这样的警报,因为这些隐错可能是伪造的或者不值得修复(例如,修复隐错可导致程序中更严重的问题)。随后,进一步,开发者可希望使这些“旧”警告被抑制,因为开发者已经审阅了这些警告,并且重新提供相同的警告是多余的。换言之,抑制警告可允许开发者仅被通知由向程序添加新特征引起的问题。
使用常规的静态分析和验证工具,开发者的选项为1)向代码添加假设语句以抑制每一个不期望的警告;或者2)经由属性或警报过滤文件来抑制警告。这些方法具有许多缺点。例如,第一选项允许开发者作出显式的假设,但这仅在这样的假设被开发者感兴趣的情况下才是有利的。此外,插入假设要求与由该工具发出的开发者期望抑制的警告的数目成比例的人工努力。此外,在作出对程序的改变时,开发者必须人工地重构任何假设。关于以上提到的第二选项,各警告可通过警告消息、警告类型或警告位置之间的句法匹配的方式来抑制。由此,例如,开发者可指示在程序的新版本被分析时,要抑制在程序的行i处的任何警告。
更具体地,开发者可在对警告进行人工检查之后添加抑制属性(或警报过滤文件中的条目);然而,这样的基于句法的抑制可能十分脆弱,因为对程序的小改变可导致句法匹配失败。失败的抑制可随后导致重新报告已经被开发者归类为虚假的警报,由此导致混淆和恼怒。此外,使用句法匹配可无意地抑制事实上确实为新的警告(例如,由对程序的修订引起的警告)。例如,基于行的抑制策略可期望地抑制与程序的行i处的断言失败有关的所有警告。因此,在原始程序中可抑制基于行i处的断言a0的警报。然而,如果开发者在程序的行i处插入了一新的且可能失败的断言a1,由此使a0向后移位到行i+1,则关于a1的失败的警告将被(错误地)抑制,而关于a0的失败的警告将被(错误地)报告。
发明内容
以下是在本文更详细描述的主题的简要概述。本概述不旨在成为关于权利要求的范围的限制。
本文中描述了涉及制定语义基线的各种技术,制定语义基线指的是根据对计算机可执行程序中的警告的起因的语义理解来抑制这样的警告。更具体地,可接收计算机程序(基线程序)的第一版本,并可在其上执行静态分析。对基线程序的静态分析即对这样的计算机程序的语义分析导致标识出在执行该程序时可发生的可能隐错。当标识出隐错时,可向开发者提出警告,其中示例性警告可包括向开发者指示:在执行基线程序时可发生空指针异常、在执行基线程序时可发生除以零错误、在执行基线程序时可发生数组越界错误等等。每一标识出的警告对应于基线程序中的相应位置。
此外,对于每一标识出的警告,可推断出相应的语义条件。推断出的语义条件为以下两种类型之一:1)充分条件;或2)必要条件。充分条件保证当满足这样的条件时,基线程序将到达非错误状态。必要条件保证当不满足这样的条件时,基线程序将到达错误状态。语义条件可以是例如变量具有大于阈值的值、变量具有小于阈值的值、循环的迭代数限于为某一值等等。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480026218.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:查询一个或多个数据库
- 下一篇:触摸式输入装置以及触摸式输入检测方法