源码检查器、方法、程序以及存储介质技术

技术编号:2838546 阅读:130 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种对计算机程序的源码所表示的程序动作相关的诸性质进行检查的源码检查器以及源码检查方法、执行该方法的程序、以及存储该程序的存储介质。该源码检查方法具有:路径抽出步骤、和检查内容决定步骤。路径抽出步骤,通过模拟执行预先输入的计算机用程序的源码所描述的程序,来抽出实际执行的命令串。检查内容决定步骤,根据路径抽出步骤所抽出的命令串,决定源码的检查内容。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术,涉及一种对与计算机程序的源码所表示的程序的动作相关各个性质进行检查的源码检查器以及源码检查方法、用来执行该方法的程序、以及用来存储该程序的存储介质。
技术介绍
作为以往的源码检查器,有对与源码所表示的程序(以下也称作应用程序)的动作相关的诸性质进行检查的源码分析器。作为源码分析器的例子,有使用模型检查技术对源码进行分析的源码模型检查器。源码所表示的应用程序的动作,是指按照源码中所描述的一系列命令的、程序的一系列动作。与该动作相关的诸性质的例子,可以列举出在动态确保存储器的情况下必须释放该存储器的性质、在执行了程序中的某个命令的情况下早晚必须要执行对应的特定命令的性质等。模型检查是指,输入表示要检查的性质的规格与成为检查对象的模型,判断模型是否具有规格所表示的性质。进行模型检查的装置称作模型检查器,描述成为检查对象的模型的称为模型描述。用于描述模型的语言,根据模型检查器而有所不同。例如,在模型检查器SPIN的情况下,用来描述模型的语言称作“Promela”。模型检查器SPIN,是对作为有限状态迁移系统而模型化的系统是否满足通过线性时间逻辑式所描述的检查式以全状态检索进行网罗式检查的检查器。模型检查器SPIN,例如公开在Gerard J.Holzmann,‘The modelChecker Spin’,IEEE Trans,On Software Engineering,Vol.23,No.5,May1997,pp.279-295。源码模型检查,是指以源码为检查对象的模型检查,是用来与以逻辑电路等硬件为对象的模型检查即硬件模型检查对比而使用的术语。作为以往的源码检查器,有的使用用来将源码翻译成模型检查器的输入语言的变换表。这种构成,例如公开在美国专利申请公开第2001/037492号、美国专利申请公开第2002/100022号中。图14为表示美国专利申请公开第2001/037492号中所记载的以往的源码检查器之构成的方框图。作为图14中所示的以往的源码检查器的模型检查器,从源码输入部1302输入成为检查对象的源码1301。接下来,该源码检查器,在源码变换表生成部1303中,基于由源码输入部1302所接收的源码1301,构成控制流向图。然后,对根据该控制流向图成为检查对象的源码1301的各个语句,生成集合有通过对应的模型描述语言、例如Promela描述写出的对译例的源码变换表1304。接下来,模型描述生成部1305,使用源码变换表1304中含有的对译例,将源码1301变换成模型描述语言。另外,规格输入部1307,将记载有表示所输入的要检查的源码1301的性质的规格的要检查的规格1308,发送给模型检查器执行部1306。之后,模型检查器执行部1306,使用来自规格输入部1307的规格1308、和模型描述生成部1305中所生成的模型描述,执行模型检查,并输出检查结果1309。另外,在自动生成的源码变换表1304不符合源码模型检查器使用者的意图的情况下,使用者的修正机构1310需要对源码变换表1304适当进行修正。例如,成为检查对象的源码1301,处理该源码以外的、例如与外部模型间的通信等情况。源码变换表生成部1303经常无法示出适当的翻译例,需要使用者进行弥补。源码模型检查中所使用的Promela等模型描述语言,与描述源码的例如C语言等编程语言的表现力是不同的。具体的说,存在编程语言能够描述,而模型描述语言无法描述的迁移条件。因此,本质上就很难将源码所表示的动作准确地翻译成模型描述语言,经常难以生成适当的源码变换表。因此,存在的问题是,很多情况下无法获得对成为检查对象的源码所表示的动作准确进行再现的模型描述,导致检查不正确。详细说明的话,模型检查按照以下顺序进行根据模型的描述,生成标号有向图(labeled directed graph),并对该图是否满足例如通过线性时间逻辑式等所给出的规格所表示的制约进行判断。线性时间逻辑式,通过给命题逻辑式添加时间概念而构成,广泛应用于对状态迁移模型进行形式描述时等。标号有向图由顶点与边的集合构成。各个边表示两个顶点间的关系,在连接顶点彼此的边中存在朝向。也即,标号有向图中,存在与边的起点以及终点逐个对应的顶点,各个顶点中附有标号。在将标号有向图的各个顶点看作状态,将沿着边的朝向移动顶点看作状态迁移时,可以将标号有向图看作状态迁移图。各个顶点的标号,能够看作各个状态下所产生的事件等。另外,模型检查,对该事件发生的列是否满足所给出的规格的制约进行判断。但是,标号有向图不存在迁移条件。迁移条件是指在存在以某个顶点为起点的多个边时,对应当迁移到哪个边终点的起点进行判断的条件。迁移条件不存在,表示在有以某个顶点为起点的多个边时,能够任意选择将哪个边的顶点所对应的状态看作下一个状态。模型检查通常对是否违反了要检查的规格的制约进行确认,因此对于可任意选择的迁移目的地,总是选择最差的情况。但是,表示源码所表示的动作的状态迁移图,一般通过带有迁移条件的标号有向图来表示。例如,通过if语句等所表示的条件节,通过该条件式的真伪来决定下一个状态。根据以上理由,存在的问题是通过没有迁移条件的标号有向图所表示的模型描述语言,与通过带迁移条件的标号有向图所表示的一般的编程语言之间,通过逐句翻译来进行变换本质上很困难。另外,以往的方法中,检查器的使用者很难对源码变换表进行修正。具体来说,检查器的使用者进行源码变换表的修正时,需要理解变换表中所描述的模型描述。进而,需要确定出没有正确反映出源码所表示的应用程序的动作之处。另外,对于成为检查对象的源码以外的部分,考虑到要适当进行模型检查,需要给出对该部分进行补足的模型描述。这些既便使用者是模型检查的专家,也需要非常困难且复杂的工作。
技术实现思路
本专利技术的目的在于,提供一种更正确地对成为检查对象的源码所表示的动作进行检查的源码检查器以及源码检查方法、用来执行该方法的方法执行程序、以及存储该程序的存储介质。本专利技术包括路径抽出步骤,通过模拟执行由预先输入的计算机用程序的源码所描述的程序,来抽出实际执行的命令串;以及,检查内容决定步骤,根据上述路径抽出步骤所抽出的命令串,决定上述源码的检查内容。通过本专利技术,能够更加正确地检查源码所表示的动作。附图说明图1为本专利技术的第1实施例中的包含源码检查器的源码检查系统的方框图。图2为表示该实施例中的成为检验对象的源码的例子的图。图3为表示根据图2中所示的源码所构成的控制流向图的图。图4为表示将图2中所示的源码改变为路径抽出用所得到的源码的图。图5为表示根据从图2中所示的源码中抽出路径得到的结果所构成的模型图。图6为表示根据图5的模型图所生成的模型描述的图。图7为表示本专利技术的第2实施例,将图2中所示的源代码改变为使用CBMC的路径抽出用所得到的源代码的图。图8为本专利技术的第3实施例中的包含源码检查器的源码检查系统的方框图。图9为本专利技术的第4实施例中的源码检查器的方框图。图10为表示该实施例中的检验程序之一例的图。图11为表示该实施例中的检验程序之一部分的第1图。图12为表示该实施例中的检验程序之一部分的第2图。图13为表示该实施例中的检验程序之一部分的第3图。图14为表示以往的源码检查器之构成的方框图。图中1本文档来自技高网
...

【技术保护点】
一种源码检查方法,其特征在于,具有:路径抽出步骤,通过模拟执行由预先输入的计算机用程序的源码所描述的程序,来抽出实际执行的命令串;以及,检查内容决定步骤,根据上述路径抽出步骤所抽出的命令串,决定上述源码的检查内容。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:青岛武伸伊藤智祥山口孝雄
申请(专利权)人:松下电器产业株式会社
类型:发明
国别省市:JP[日本]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利