标志访问缺陷检查装置、标志访问缺陷检查方法以及标志访问缺陷检查程序的制作方法

文档序号:9221626阅读:369来源:国知局
标志访问缺陷检查装置、标志访问缺陷检查方法以及标志访问缺陷检查程序的制作方法
【技术领域】
[0001 ] 本发明涉及一种标志访问缺陷检查装置、标志访问缺陷检查方法以及标志访问缺陷检查程序。
【背景技术】
[0002]当前,已知一种对由编程语言记述的源程序中的控制流、数据流以不执行该源程序的方式进行分析的静态分析方法(参照专利文献I)。
[0003]专利文献1:日本特开平09 - 282173号公报

【发明内容】

[0004]根据专利文献I的静态分析方法,能够明确输入与输出的关系而使程序的构造可视化。但是,无法使用户注意到实现了可视化的程序构造中的有可能产生缺陷的位置。
[0005]本发明就是鉴于上述课题而提出的,其目的在于提供一种能够使用户注意到程序构造中的、有可能产生缺陷的位置的标志访问缺陷检查装置、标志访问缺陷检查方法以及标志访问缺陷检查程序。
[0006]本发明的一个方式所涉及的标志访问缺陷检查装置,从利用仅能设定两个值的标志而切换并执行大于或等于两个的不同的处理的计算机程序中检测出标志,分别确定对标志进行访问的语句、该语句中的针对标志的处理内容、以及该语句的执行顺序。并且,基于针对标志的处理内容以及语句的执行顺序,判断无法利用标志而切换并执行大于或等于两个的不同的处理的可能性的有无,输出其判断结果。
【附图说明】
[0007]图1是表示本发明的实施方式所涉及的标志访问缺陷检查装置的硬件结构的框图。
[0008]图2是表示CPUll的功能结构的框图。
[0009]图3是表示由本发明的实施方式所涉及的标志访问缺陷检查装置执行的信息处理的流程、以及在信息处理过程中生成的中间数据的数据流图。
[0010]图4(a)?(g)是作为读入的源代码DOl而示出用C语言记述的计算机程序的一例的图。
[0011]图5是表示通过变量检测处理(SOl)检测的变量的一览即“变量访问一览(D02) ”的表。
[0012]图6是表示通过标志提取处理(S02)提取的标志的一览即“标志一览(D03) ”的表。
[0013]图7 (a)?(g)是表示由分支程序块确定部22确定的分支程序块IDl?ID4的图。
[0014]图8是表示通过上述分支程序块确定处理(S03)确定的分支程序块的一览即“程序块ID 一览(D04) ”的表。
[0015]图9是表示对标志进行访问的语句所属的分支程序块的一览即“标志访问一览(D05)” 的表。
[0016]图10是表示针对标志的处理内容的分类结果即“标志判定一览(D06) ”的表。
[0017]图11 (a)?(d)是表示针对各个分支程序块IDl?ID4确定各语句的执行顺序而得到的结果即“语句编号分配一览(D07) ”的表。
[0018]图12是表示标志访问顺序确定处理(S07)的结果即“标志访问顺序一览(D08) ”的表。
[0019]图13(a)、(b)是表示根据标志(Flag)的状态而切换并执行两个处理(处理I及处理2)的正常的计算机程序的事例的流程图。
[0020]图14(a)、(b)是表示通过第I缺陷模式判定处理(S08)而能够检测出的缺陷的事例的流程图。
[0021]图15(a)、(b)是表示通过第2缺陷模式判定处理(S09)而能够检测出的缺陷的事例的流程图。
[0022]图16(a)、(b)是表示通过第3缺陷模式判定处理(S 10)而能够检测出的缺陷的事例的流程图。
[0023]图17(a)?(C)是表示根据标志(Flag)的状态而切换并执行3个处理(处理1、处理2以及处理3)的正常的计算机程序的事例的流程图。
[0024]图18(a)?(C)是表示通过第4缺陷模式判定处理(S 11)而能够检测出的缺陷的事例的流程图。
[0025]图19是表示“第I缺陷模式判定结果(D09) ”的表。
[0026]图20是表示“第2缺陷模式判定结果(DlO) ”的表。
[0027]图21是表示“第3缺陷模式判定结果(Dll) ”的表。
[0028]图22是表示“第4缺陷模式判定结果(D12) ”的表。
[0029]图23是表示“判断结果一览(D13) ”的一例的表。
[0030]图24(a)?(g)是表示基于图23所示的判断结果一览(D13)对图4(a)?(g)所示的计算机程序进行修正的结果的图。
[0031]图25(a)?(g)是表示对标志写入的值出错的计算机程序的一例的图。
[0032]图26是表示将图25(a)?(g)所示的计算机程序作为检查对象的情况下的“判断结果一览(D13) ”的一例的表。
[0033]图27(a)?(g)是表示记述对标志进行访问的处理的位置出错的计算机程序的一例的图。
[0034]图28是表示将图27(a)?(g)所示的计算机程序作为检查对象的情况下的“判断结果一览(D13)”的一例的表。
【具体实施方式】
[0035]参照附图,对本发明的实施方式进行说明。在附图的记载中,对同一部分标注同一标号并省略说明。
[0036][标志访问缺陷检查装置的硬件结构]
[0037]本发明的实施方式所涉及的标志访问缺陷检查装置,例如能够适用于由搭载于车辆的电子控制装置(ECU)执行的计算机程序的标志访问缺陷检查处理。尤其是,能够检查利用仅能设定两个值的标志而切换并执行大于或等于两个的不同的处理的计算机程序中的、标志的编码错误或编码遗漏的可能性。
[0038]参照图1,对本发明的实施方式所涉及的标志访问缺陷检查装置的硬件结构进行说明。作为标志访问缺陷检查装置的硬件结构,能够使用通用的计算机。例如,标志访问缺陷检查装置具备:输入输出装置12,其从存储介质读入成为检查对象的计算机程序(源代码D01);存储装置14,其暂时存储由输入输出装置12读入的源代码D01、在分析过程中生成的中间数据;CPU(中央处理装置)11,其执行各种运算并对源代码DOl进行分析;输入装置13,其供用户输入分析所需的信息使用;以及显示装置15,其对从CPUll输出的检查结果进行显示。还能够使用输入输出装置12将检查结果写入到存储介质。
[0039]另外,标志访问缺陷检查装置还能够作为客户服务器模型而实现。例如,经由计算机网络将通用的个人计算机(客户端)与服务器连接。由此,能够经由计算机网络将具备图1所示的CPUll的服务器与输入输出装置12、输入装置13、存储装置14、或者显示装置15连接。在该情况下,标志访问缺陷检查装置主要由CPUll (服务器)构成,输入输出装置12、输入装置13、存储装置14、或者显示装置15不包含在标志访问缺陷检查装置中。在该情况下,只要取代存储装置14而在服务器11所具备的内部硬盘暂时存储分析过程中生成的中间数据即可。
[0040]参照图2 JtCPUll的功能结构进行说明。在具备CPUll的计算机安装并执行用于使具备CPUl I的计算机作为标志访问缺陷检查装置起作用的计算机程序(标志访问缺陷检查程序)。由此,CPUll构成以下所示的各信息处理部。此外,这里,示出由软件实现标志访问缺陷检查装置的例子,当然也能够准备用于执行以下所示的各信息处理的专用硬件而构成标志访问缺陷检查装置。
[0041]CPUll构成标志检测部21、分支程序块确定部22、访问位置确定部23、处理内容分类部24、访问顺序确定部25、缺陷可能性判断部26、以及检查结果输出部27。标志检测部21中包含变量检测部28和标志提取部29。缺陷可能性判断部26中包含第I缺陷模式判定部30、第2缺陷模式判定部31、第3缺陷模式判定部32、以及第4缺陷模式判定部33。
[0042]标志检测部21从存储装置14读入源代码D01,从源代码DOl中检测出标志。所谓“标志”是指在源代码DOI中被访问的变量中的、仅能够设定为例如“O”及“ I”等的两个值的变量。所谓“在源代码DOl中被访问的变量”,表示在源代码DOl中作为写入处理或读出处理的对象而记述的变量。所谓“变量”是指分配到RAM区域的局部变量、全局变量、静态(Static)变量等在源代码DOl中其值能够发生变更的符号。具体地说,变量检测部28检测在源代码DOl中被访问的变量。检测出的变量暂时存储于存储部14中。标志提取部29将存储于存储部14中的变量读出,从由变量检测部28检测的变量中提取标志。由标志检测部21提取的标志暂时存储于存储部14中。
[0043]分支程序块确定部22从存储装置14读入源代码D01,从源代码DOl所包含的语句中,确定由基于规定的条件语句而分支的一组语句构成的分支程序块。在“规定的条件语句”中,例如在C语言的情况下,包含if语句或switch语句。所谓“基于规定的条件语句而分支的一组语句”,例如在C语言的情况下,是指if语句或switch语句、以及其后续接的由括号“ {”、“} ”包围的处理单位。作为能够判定为条件分支的位置,例如预先规定“if”以及“switch”。分支程序块确定部22从成为分析对象的源代码DOl中,确定能够判定为条件分支的位置,将其后续接的由“ Γ和“} ”包围的处理单位确定为分支程序块。由分支程序块确定部22确定的分支程序块暂时存储于存储部14中。
[0044]访问位置确定部23从存储装置14读入源代码DOl以及由标志检测部2
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1