首页> 中国专利> 变量访问一贯性检查装置、变量访问一贯性检查方法、变量访问一贯性检查程序

变量访问一贯性检查装置、变量访问一贯性检查方法、变量访问一贯性检查程序

摘要

访问一贯性检查装置确定由基于规定的条件而切换并执行多个分支处理的一组语句构成的分支程序块,检测在分支程序块内进行写入的变量(S01)。检测能够在分支程序块内切换的分支处理的数量,检测对变量进行写入的分支处理的数量(S04),判断能够在分支程序块内切换的分支处理的数量是否与对变量进行写入的分支处理的数量一致(S06)。而且,在判断为能够在分支程序块内切换的分支处理的数量与对变量进行写入的分支处理的数量不一致的情况下,将变量以及分支程序块的至少一方输出(D07)。

著录项

  • 公开/公告号CN104937558A

    专利类型发明专利

  • 公开/公告日2015-09-23

    原文格式PDF

  • 申请/专利权人 日产自动车株式会社;

    申请/专利号CN201380071044.7

  • 发明设计人 市川智;

    申请日2013-12-26

  • 分类号

  • 代理机构北京天昊联合知识产权代理有限公司;

  • 代理人何立波

  • 地址 日本神奈川县

  • 入库时间 2023-12-18 11:09:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-11-09

    授权

    授权

  • 2015-10-21

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20131226

    实质审查的生效

  • 2015-09-23

    公开

    公开

说明书

技术领域

本发明涉及一种变量访问一贯性检查装置、变量访问一贯性检 查方法、变量访问一贯性检查程序。

背景技术

当前,已知对由编程语言所记述的源程序中的控制流、数据流 以不执行该源程序的方式进行分析的静态分析方法(参照专利文献 1)。

专利文献1:日本特开平09-282173号公报

发明内容

根据专利文献1的静态分析方法,能够明确输入和输出的关系 而使程序的构造可视化。但是,无法使用户注意到实现了可视化的程 序构造中的有可能产生缺陷的位置。

本发明就是鉴于上述课题而提出的,其目的在于提供能够使用 户注意到程序构造中的有可能产生缺陷的位置的变量访问一贯性检 查装置、变量访问一贯性检查方法、变量访问一贯性检查程序。

本发明的一个实施方式所涉及的变量访问一贯性检查装置,对 能够在分支程序块内切换的分支处理的数量进行检测,检测出对变量 进行写入的分支处理的数量,判断能够在分支程序块内切换的分支处 理的数量是否与对变量进行写入的分支处理的数量一致。而且,在判 断为能够在分支程序块内切换的分支处理的数量与对所述变量进行 写入的分支处理的数量不一致的情况下,将变量以及分支程序块的至 少一方输出。

附图说明

图1是表示本发明的第1实施方式所涉及的变量访问一贯性检 查装置的硬件结构的框图。

图2是表示CPU11的功能结构的框图。

图3是表示由本发明第1实施方式所涉及的变量访问一贯性检 查装置执行的信息处理的流程、以及在信息处理过程中生成的中间数 据的数据流图。

图4(a)、(b)、(c)是表示作为读入的源代码D01而由C 语言记述的程序的一个例子的图。

图5(a)、(b)、(c)是表示由分支程序块确定部21确定的 分支程序块ID1、ID2的图。

图6是表示将变量检测部22所进行的处理的结果汇总而得到的 “分支程序块变量访问一览”的表。

图7(a)、(b)是表示将语句编号分配处理的结果汇总而得到 的“语句编号分配一览(D03)”的表。

图8是表示将变量访问顺序确定处理的结果汇总而得到的“变 量访问顺序一览(D04)”的表。

图9(a)、(b)、(c)是用于说明路径数量确定处理(S04) 的内容的图。

图10是表示将路径数量确定处理(S04)的结果汇总而得到的 “路径数量和变量访问顺序一览(D05)”的表。

图11是表示将访问比例判定(S05)的结果汇总而得到的“访 问比例一览(D06)”的表。

图12是表示将访问一贯性判定处理(S06)的结果汇总而得到 的“访问一贯性判定结果(D07)”的表。

图13(a)、(b)、(c)是表示图4(a)、(b)、(c)的程 序修正例的图。

图14(a)、(b)是表示根据规格方面的条件而将值改变并写 入的情况下的例子的流程图。

图15是表示变量的写入处理在确定的分支处理中遗漏的例子的 流程图。

图16是表示第2实施方式所涉及的CPU11’的功能结构的框图。

图17是表示由本发明的第2实施方式所涉及的变量访问一贯性 检查装置执行的信息处理的流程、以及在信息处理的过程中生成的中 间数据的数据流图。

图18是表示将临界值判定处理(S07)的结果汇总而得到的“临 界值判定结果(D09)”的表。

图19(a)、(b)是表示由比率计算部25计算出的比率不同的 情况的流程图。

具体实施方式

参照附图,对本发明的实施方式进行说明。在附图的记载中, 对相同部分标注相同标号并省略说明。

(第1实施方式)

[变量访问一贯性检查装置的硬件结构]

本发明的第1实施方式所涉及的变量访问一贯性检查装置,例 如能够应用于由搭载于车辆上的电子控制装置(ECU)执行的计算机 程序的变量访问一贯性检查处理。特别是对因计算机程序的规格遗漏 或者编码遗漏而引起的缺陷的可能性进行检查。

参照图1,对本发明的第1实施方式所涉及的变量访问一贯性检 查装置的硬件结构进行说明。作为变量访问一贯性检查装置的硬件结 构,能够使用通用的计算机。例如,变量访问一贯性检查装置具有: 输入输出装置12,其从存储介质读入作为检查对象的计算机程序(源 代码D01);存储装置14,其存储由输入输出装置12读入的源代码 D01、分析的中间数据;CPU(中央处理装置)11,其执行各种运算 并分析源代码D01;输入装置13,其用于使用户将分析所需的信息 输入;以及显示装置15,其对从CPU11输出的检查结果进行显示。 还能够利用输入输出装置12将检查结果写入至存储介质。

另外,变量访问一贯性检查装置还能够作为客户服务器模型而 实现。例如,经由计算机网络将通用的个人计算机(客户端)与服务 器连接。由此,能够经由计算机网络而将具有图1所示的CPU11的 服务器与输入输出装置12、输入装置13、存储装置14、或者显示装 置15连接。在该情况下,变量访问一贯性检查装置主要由CPU11(服 务器)构成,在变量访问一贯性检查装置中不包含输入输出装置12、 输入装置13、存储装置14、或者显示装置15。在该情况下,只要取 代存储装置14而在服务器11所具有的内部硬盘暂时存储分析的过程 中所生成的中间数据即可。

参照图2,对CPU11的功能结构进行说明。在具有CPU11的计 算机中,安装并执行用于使具有CPU11的计算机作为变量访问一贯 性检查装置而起作用的计算机程序(变量访问一贯性检查程序)。由 此,CPU11构成以下所示的各信息处理部。此外,在这里,示出了 通过软件实现变量访问一贯性检查装置的例子,但是,当然还能够准 备用于执行以下所示的各信息处理的专用硬件而构成变量访问一贯 性检查装置。

CPU11构成分支程序块确定部21、变量检测部22、总分支数量 检测部23、写入分支数量检测部24、分支数量判断部26、以及检查结 果输出部28。

分支程序块确定部21从存储装置14读入源代码D01,从成为 检查对象的计算机程序中确定分支程序块。分支程序块由基于规定的 条件而切换并执行多个分支处理的一组语句构成。“语句”是指源代 码中的每1行的处理单位。具体而言,例如在C语言的情况下,分 支程序块是指通过if语句或者switch语句等条件进行判定并切换并 执行多个处理(分支处理)的语句内的、由括号“{”和“}”包围 的处理单位。作为能够判定为条件分支的位置,例如预先对“if”以 及“switch”进行规定。分支程序块确定部21从成为分析对象的源 代码D01中确定能够判定为条件分支的位置,将在其后续接的由“{” 和“}”包围的部位确定为分支程序块。例如,在if语句的情况下, 分支程序块确定部21将if语句的条件语句“()”结束之后的“{” 判断为分支程序块的开始。然后,在检测出“}”、且在其后并未续 接有else语句的情况下,将该“}”判断为分支程序块的结尾。另 一方面,在其后续接有else语句的情况下,再次检测出接下来的“}”, 并将该“}”判断为分支程序块的结尾。在if语句的情况下,在其 后续接的处理在1行中结束时,有时也省略“{”、“}”,但是, 在该情况下,判断为在这1行的开头存在“{”、且在这1行的末尾 存在“}”,进行相同的处理。另外,在switch语句的情况下,将 由“{”和“}”包围的部分理解为分支程序块。由分支程序块确定 部21确定的分支程序块暂时存储于存储部14中。

变量检测部22从存储部14读入分支程序块,检测出在分支程序 块内进行写入的变量。具体而言,变量检测部22针对分支程序块内 的每个分支处理而检测出被写入的变量。例如,在C语言的情况下, 检测出由“=”表示的式子的左边的所有变量。在确定了多个分支程序 块的情况下,变量检测部22针对每个分支程序块而检测出变量。由变 量检测部22检测出的变量暂时存储于存储部14中。

总分支数量检测部23从存储部14读入分支程序块,对能够在分 支程序块内切换的分支处理的数量(称为“总路径数量”)进行检测。 例如,在由“if”确定的分支程序块的情况下,在“if”之后续接的 由“{”和“}”包围的部位表示分支处理。总分支数量检测部23 将分支程序块内所包含的、由“{”和“}”包围的部位的数量作为 总路径数量而进行检测。在由“switch”确定的分支程序块的情况下, 总分支数量检测部23将“switch”之后续接的“case”的数量作为总路 径数量而进行检测。在确定了多个分支程序块的情况下,总分支数量 检测部23针对各分支程序块而检测总路径数量。由总分支数量检测部 23检测出的总路径数量暂时存储于存储部14中。

写入分支数量检测部24从存储部14读入分支程序块,检测对变 量进行写入的分支处理的数量(称为“写入路径数量”)。具体而言, 写入分支数量检测部24将分支程序块内所包含的分支处理中的、对变 量进行写入的分支处理的数量作为写入路径数量而进行检测。在确定 了多个分支程序块的情况下,写入分支数量检测部24针对每个分支程 序块而检测写入路径数量。并且,在1个分支程序块中检测出多个变 量的情况下,写入分支数量检测部24针对各变量而检测写入路径数 量。由写入分支数量检测部24检测出的写入路径数量暂时存储于存 储部14中。

分支数量判断部26从存储部14读入总路径数量以及写入路径数 量。并且,分支数量判断部26判断能够在分支程序块内切换的分支处 理的数量(总路径数量)与对变量进行写入的分支处理的数量(写入 路径数量)是否一致。在确定或者检测出多个分支程序块或者多个变 量的情况下,写入分支数量检测部24针对每个分支程序块且针对每个 变量进行判断。例如,分支数量判断部26可以判断图2所示的比率计 算部25计算出的比率是否为100%。分支数量判断部26的判断结果暂 时存储于存储部14中。

检查结果输出部28从存储部14读入分支数量判断部26的判断结 果。并且,在分支数量判断部26判断为能够在分支程序块内切换的分 支处理的数量与对变量进行写入的分支处理的数量不一致的情况下, 检查结果输出部28将由变量检测部22检测出的变量、以及由分支程 序块确定部21确定的分支程序块中的至少一方输出。

CPU11还构成非写入分支确定部27。非写入分支确定部27从存 储部14读入分支数量判断部26的判断结果。并且,在能够在分支程 序块内切换的分支处理的数量与对变量进行写入的分支处理的数量不 一致的情况下,非写入分支确定部27确定对变量不进行写入的分支处 理。确定对变量不进行写入的分支处理的信息暂时存储于存储部14中。 检查结果输出部28将确定对变量不进行写入的分支处理的信息,与变 量以及分支程序块中的至少一方相关联而输出。

CPU11还构成比率计算部25。比率计算部25从存储部14读入分 支数量判断部26的判断结果。并且,比率计算部25计算对变量进行 写入的分支处理的数量相对于能够在分支程序块内切换的分支处理的 数量的比率(访问比例)。由比率计算部25计算出的比率暂时存储于 存储部14中。检查结果输出部28将由比率计算部25计算出的比率, 与变量以及分支程序块中的至少一方相关联而输出。

[由变量访问一贯性检查装置执行的信息处理的次序]

下面,作为本发明的第1实施方式所涉及的变量访问一贯性检查 方法的一个例子,参照图3~图13,对由图1以及图2所示的变量访问 一贯性检查装置执行的信息处理的次序进行说明。

首先,CPU11从输入输出装置12读入成为检查对象的源代码 D01。此外,也可以预先由用户利用输入输出装置12而将源代码D01 读入至变量访问一贯性检查装置内,并将该源代码D01存储于存储装 置14中。作为读入的源代码D01,图4(a)、(b)、(c)示出由C 语言记述的计算机程序的一个例子。成为检查对象的计算机程序记述 于图4(a)、(b)、(c)所示的3个文件中。图4(a)的文件名是 “Task1.c”,图4(b)的文件名是“Task2.c”,图4(c)的文件名是 “foo.c”。在由C语言记述的程序的一个例子中,在各文件的左端部 记载的从1开始的连续编号表示各文件的“行号”。

然后,分支程序块确定部21执行图3所示的“变量访问分析” 处理(S01)。首先,分支程序块确定部21从图4(a)、(b)、(c) 所示的计算机程序中确定分支程序块。具体而言,作为分支程序块的 开始位置,确定“if”以及“switch”。并且,将在所确定的“if”以及 “switch”之后续接的、由“{”和“}”包围的部位确定为分支程序 块,并对所确定的分支程序块依次赋予识别编号。图5(a)、(b)、 (c)表示由分支程序块确定部21确定的分支程序块ID1、ID2。在 “Task1.c”中确定了分支程序块ID1,在“Task2.c”中确定了分支 程序块ID2。所确定的分支程序块ID1、ID2暂时存储于存储部14 中。

然后,变量检测部22从存储部14读入分支程序块ID1、ID2, 并检测在分支程序块ID1、ID2内进行写入的变量。具体而言,检测 出由“=”表示的式子的左边的所有变量。变量检测部22针对每个分 支程序块ID1、ID2而检测变量。在未写入有变量的分支程序块中,检 测“if”、“else”、以及“case”等分支语句。

另外,无论是否处于分支程序块内,变量检测部22都对在写入变 量之后读入该变量的位置进行检测。可以不对读入该变量的位置标注 分支程序块ID。

图6的表中示出将上述的变量访问分析处理(S01)的结果汇总而 得到的“变量访问一览(D02)”。在图6的表中,将在分支程序块内 进行写入的变量名、文件名、行号、语句、分支程序块ID、以及R/W 输出。在R/W中,“W”表示对变量进行写入,“R”表示进行变量 的读出。如果在检测出“if”、“else”、以及“case”等分支语句但 未对变量进行写入的情况下,将“No W”输出。这里,对变量进行访 问包含对变量进行写入和读入变量。图6的表中示出从图5(a)所示 的分支程序块ID1中确定变量“SW1”,并从图5(b)所示的分支程 序块ID2中确定变量“V1_Out”的情况。“变量访问一览(D02)” 暂时存储于存储部14。

然后,变量访问一贯性检查装置执行图3所示的“语句编号分配” 处理(S02)。在语句编号分配处理(S02)中,从存储部14读入源代 码D01,针对每项任务(Task1.c、Task2.c)分析语句的执行顺序,对 各语句赋予执行顺序编号。图7(a)、(b)表示将语句编号分配处理 的结果汇总而得到的“语句编号分配一览(D03)”。在图7(a)、 (b)中,“语句编号”表示语句的执行顺序。在语句编号分配处理(S02) 中,从各任务的上游开始分析语句,确定程序被执行的顺序。在存在 分支语句的情况下,以从上游开始依次执行所有分支的方式添加语句 编号。在存在循环处理的情况下,以执行1次该循环处理的方式添加 语句编号。另外,在存在子函数(子程序处理)的情况下,以执行该 子程序处理的方式确定语句的执行顺序。“语句编号分配一览(D03)” 暂时存储于存储部14中。

然后,变量访问一贯性检查装置执行图3所示的“变量访问顺序 确定”处理(S03)。在变量访问顺序确定处理(S03)中,首先,从 存储部14读入“分支程序块变量访问一览(D02)”以及“语句编号 分配一览(D03)”。对图6所示的“分支程序块变量访问一览(D02)” 和图7(a)、(b)所示的“语句编号分配一览(D03)”进行比较。 并且,确定在分支程序块内进行访问的变量的执行顺序(语句编号)。 图8表示将变量访问顺序确定处理(S03)的结果汇总而得到的“变 量访问顺序一览(D04)”。根据变量访问顺序一览(D04)可知在 各分支程序块中被访问的变量按照何种执行顺序被访问。“变量访问 顺序一览(D04)”暂时存储于存储部14中。

接下来,变量访问一贯性检查装置执行图3所示的“路径数量确 定处理”(S04)。在路径数量确定处理(S04)中,针对每个分支程 序块ID1、ID2而检测总路径数量和写入路径数量。具体而言,总分支 数量检测部23从存储部14读入“变量访问顺序一览(D04)”,将“if” 之后续接的、由“{”和“}”包围的分支处理的数量作为总路径数 量而进行检测。另外,总分支数量检测部23将“switch”之后续接的 “case”的数量作为总路径数量而进行检测。

另外,写入分支数量检测部24将分支程序块内所包含的分支处理 中的、对变量进行写入的分支处理的数量作为写入路径数量而进行检 测。在1个分支程序块中检测出多个变量的情况下,写入分支数量检 测部24针对各变量检测写入路径数量。

参照图9(a)、(b)、(c),对路径数量确定处理(S04)的 内容进行说明。在图9(a)的“Task1.c”中,分支程序块ID1的总 路径数量为5,变量“SW1”的写入路径数量为5。另外,在图9(b) 的“Task2.c”中,分支程序块ID2的总路径数量为6,变量“V1_Out” 的写入路径数量为5。图10的表中示出将图9所示的路径数量确定 处理(S04)的结果汇总而得到的“路径数量和变量访问顺序一览 (D05)”。相对于图6的表,图10的表中针对每个变量追加有总 路径数量和写入路径数量。“路径数量和变量访问顺序一览(D05)” 暂时存储于存储部14中。

然后,变量访问一贯性检查装置执行图3所示的“访问比例判 定”处理(S05)。在访问比例判定处理(S05)中,对每个分支程 序块的访问比例进行计算。具体而言,比率计算部25从存储部14 读入“路径数量和变量访问顺序一览(D05)”,计算出写入路径数 量相对于总路径数量的比率(访问比例)即写入路径数量(B)/所有 路径数量(A)。该比率是表示进行写入的分支处理相对于分支程序 块所包含的所有分支处理占有多大比例的数值。

图11的表中示出将访问比例判定处理(S05)的结果汇总而得 到的“访问比例一览(D06)”。相对于图10的表,图11的表中追 加有访问比例(比率)。变量“SW1”的比率为5/5=100%。即,在 分支程序块ID1所包含的所有分支处理中,毫无遗漏地对变量“SW1” 进行写入处理。另一方面,变量“V1_Out”的比率为5/6=83%。不 存在对变量“V1_Out”的写入处理的比例为17%。“访问比例一览 (D06)”暂时存储于存储部14中。

接下来,变量访问一贯性检查装置执行图3所示的“访问一贯 性判定(S06)”处理。在访问一贯性判定处理(S06)中,检测并 输出所有路径数量与写入路径数量不一致的部位。具体而言,首先, 分支数量判断部26从存储部14读入“访问比例一览(D06)”,判断 通过访问比例判定处理(S05)而计算出的比率是否为100%。并且, 在分支数量判断部26判断为总路径数量与写入路径数量不一致的情况 下,检查结果输出部28将由变量检测部22检测出的变量、以及由分 支程序块确定部21确定的分支程序块中的至少一方输出。

图12的表中示出将访问一贯性判定处理(S06)的结果汇总而 得到的“访问一贯性判定结果(D07)”。图12的表中示出从图11 的表中提取的总路径数量与写入路径数量不一致的变量“V1_Out” 的内容。如图12所示,检查结果输出部28将总路径数量与写入路径 数量不一致的变量名、文件名、行号、语句编号、语句、分支程序块 ID、总路径数量、写入路径数量、访问比例、以及R/W输出。

用户(设计者)能够通过访问一贯性判定处理(S06)而确定总 路径数量与写入路径数量不一致的变量。另外,在文件“Task2.c” 的第18行的语句“case 4:”之后,保持未对变量“V1_Out”进行 写入的状态,在文件“Task2.c”的第5行读入变量“V1_Out”。由 此,用户能够复查是否存在规格以及编码的遗漏。设计者能够通过该 复查而注意到规格以及编码的遗漏并追加处理。图13(a)、(b)、 (c)中示出图4(a)、(b)、(c)所示的程序的修正例。在图4 (b)的文件“Task2.c”的第18行的语句“case 4:”之后,如图13 (b)的标号AM1所示,追加对变量“V1_Out”写入26的语句。

[第1实施方式的效果]

在软件的处理中对变量进行访问时,大多根据规格方面的条件 而写入不同的值。例如,存在在汽车等中使用的空调。手动进行设定 的空调,能够将风量、温度分别划分为几个等级,并阶梯式地调整输 出。在该情况下,作为软件的处理而嵌入设置如下逻辑,即,从端口 读入风量、温度的各开关的状态,并对空调的输出变量进行设定。图 14(a)、(b)是表示根据规格方面的条件而写入不同的值的情况下 的例子的流程图。在图14(a)中,示出根据变量“SW1”的值而使 对“V1_Out”写入的值发生变化的例子。在图14(b)中,示出根据 变量“SW2”的值而使对“V2_Out”写入的值发生变化的例子。这 样,这种根据“条件”而“必须改写变量的值”的规格在软件中频繁 地出现。

但是,如果因存在较多的条件而导致处理变得复杂,则有时会 忘记针对分支程序块内的某个路径(分支处理)而记述变量的写入处 理。其原因在于,存在未针对所有分支处理而妥当地考虑规格的情况, 或者存在因分支处理的数量过多而导致无法对所有分支处理都进行 测试的情况。因此,在分支程序块内存在变量的写入处理的情况下, 需要进行检查,以使得变量的写入处理不会在确定的分支处理中遗 漏。

图15是表示在确定的分支处理中遗漏了变量的写入处理的例子 的流程图。根据表示空调的温度开关的状态的变量“SW1”的状态而 切换空调的设定。变量“SW1”能够从0~4中取值。在变量“SW1” 为0~3的情况下,分别进行对“V1_Out”写入18、20、22、24的处 理,然后,分支收敛。在变量“SW1”为4的情况下,需要进行对 “V1_Out”写入26的处理,但是,分支在未进行该写入处理的状态 下收敛。在该情况下,如果详细的规格书中对变量“SW1”为4时的 路径(分支处理)的规格进行了定义、且针对变量“SW1”为0~4 时的所有路径(分支处理)实施了单体测试,则会注意到变量“SW1” 为4的情况下的写入处理的遗漏。但是,在制作详细规格的阶段,在 未考虑变量“SW1”为4时的路径(分支处理)的规格的情况下,即 使实施单体测试,也无法检测出写入处理的遗漏。其原因在于,并未 考虑变量“SW1”为4时的路径(分支处理)的规格。另外,即使在 考虑了变量“SW1”为4时的路径(分支处理)的规格的情况下,在 分支处理的数量较多从而无法对所有分支处理都实施单体测试的情 况下,也有可能无法检测出写入处理的遗漏。这样,在现有的规格的 制作、单体测试的实施过程中,难以抑制因写入处理的遗漏而引起的 缺陷。另外,还不存根据这种观点而进行检测的工具。即,在通过分 支处理而将值写入的情况下,必须验证是否在所有路径(分支处理) 进行了变量的写入处理(访问的一贯性)。

根据第1实施方式,在分支数量判断部26判断为总路径数量与 写入路径数量不一致的情况下,如图12所示,检查结果输出部28将 变量以及分支程序块的至少一方输出。在总路径数量与写入路径数量 不一致的情况下,存在规格遗漏或者编码遗漏的可能性。因此,通过 将变量或者分支程序块的至少一方输出,能够使用户注意到程序构造 中的有可能产生缺陷的部位。对于需要在所有的分支处理中对变量进 行写入的程序构造,能够提示产生缺陷的可能性。这样,在从设计阶 段开始便在规格中遗漏了处理的情况下,或者在即使在规格中进行了 定义但却无法实施单体测试的程序构造的情况下,能够抑制写入处理 遗漏的缺陷。另外,能够使用户注意到无法根据大量的源代码而凭借 人眼进行判断的变量访问的一贯性未得到保持的情况。另外,能够预 先防止无法通过在软件开发流程中使用的测试(单体测试、综合测试、 系统测试)而发现的、变量访问一贯性未得到保持的程序的错误。

在总路径数量与写入路径数量不一致的情况下,非写入分支确定 部27确定对变量不进行写入的分支处理,如图12所示,检查结果输 出部28将确定对变量不进行写入的分支处理的信息,与变量以及分支 程序块的至少一方相关联而输出。在程序构造中应该进行验证的部分 得到确定,因此,能够提高由用户进行的验证作业的效率。此外,在 “确定分支处理的信息”中包含文件名、行号、语句编号、以及语句。

比率计算部25计算出写入路径数量相对于总路径数量的比率,检 查结果输出部28将计算出的比率,与变量以及分支程序块的至少一方 相关联而输出。在总路径数量与写入路径数量不一致的情况下,比率 (访问比例)越高即越接近100%,规格遗漏或者编码遗漏的可能性越 高。因此,将比率与变量以及分支程序块的至少一方相关联而输出。 由此,能够使缺陷的可能性实现数值化。作为有可能产生缺陷的部位, 在输出多个变量或者多个分支程序块的情况下,能够向用户告知作为 验证对象的优先级,因此,能够提高由用户进行的验证作业的效率。 这样,在源代码内存在大量的分支处理的情况下,针对每个分支程序 块而计算出比率(访问比例),并向用户通知该比率。由此,能够使 用户注意到未产生规格的遗漏、编码的遗漏的情况,能够预先防止缺 陷。

(第2实施方式)

在第2实施方式中,对还具有利用预先规定的阈值而判定由比 率计算部25计算出的比率的功能的变量访问一贯性检查装置进行说 明。参照图16,对第2实施方式所涉及的CPU11’的功能结构进行说 明。此外,第2实施方式所涉及的变量访问一贯性检查装置的硬件结 构与图1相同,将说明省略。如图16所示,除了图2所示的功能结 构(21~28)以外,CPU11’还具有比率判断部29,该比率判断部29 判断由比率计算部25计算出的比率是否比预先规定的阈值高。

参照图17,对由本发明的第2实施方式所涉及的变量访问一贯 性检查装置执行的信息处理的流程以及在信息处理的过程中生成的 中间数据进行说明。直至访问一贯性判定处理(S06)为止的信息处 理(S01~S06)、源代码D01、以及直至访问一贯性判定结果D07为 止的中间数据(D02~D07)与图3相同,将说明省略。

在访问一贯性判定处理(S06)之后,变量访问一贯性检查装置 执行图17所示的“临界值判定”处理(S07)。在临界值判定处理 (S07)中,比率判断部29判断由比率计算部25计算出的比率是否比 预先规定的阈值高。比率判断部29从存储部14读入图12所示的访问 一贯性判定结果(D07)以及由用户预先设定的临界值(D08),利用 访问一贯性判定结果(D07)以及临界值(D08)进行判断。并且,如 图18的表所示,检查结果输出部28将比率判断部29的判断结果,与 变量以及分支程序块的至少一方相关联而输出。

图19(a)、(b)表示由比率计算部25计算出的比率不同的情 况。如图19(a)所示,在变量“V1_Out”的写入处理中,总路径数 量为6,与此相对,写入路径数量为5,因此,访问比例(比率)为83%。 与此相对,如图19(b)所示,在变量“V2_Out”的写入处理中,总 路径数量为3,与此相对,写入路径数量为2,因此,访问比例(比率) 为66%。在图19(b)所示的情况下,变量“V2_Out”的访问比例(比 率)较低,因此,规格的遗漏或者编码的遗漏的可能性较低。因此, 用户预先设定阈值。并且,比率判断部29判断由比率计算部25计算 出的比率是否比预先规定的阈值高。而且,对于比阈值大的比率,能 够输出警告。由此,在即将出厂之前等,在用户的验证时间较少时, 用户能够重点验证危险性较高的部位。

图18的表中示出将临界值判定处理(S07)的结果汇总而得到的 “临界值判定结果(D09)”。对于总路径数量与写入路径数量不一致 的变量“V1_Out”以及“V2_Out”,图18的表中还追加有访问比例 (比率)的判断结果以及阈值(80%)。变量“V2_Out”的访问比例 (67%)比阈值(0.8)低。另一方面,变量“V1_Out”的访问比例(83%) 比阈值(0.8)高。

即便是一眼就能发现访问一贯性未得到保持的程序构造,实际上 也存在按照预想而设计的情况。因此,直至查明真正的缺陷为止的验 证效率有时会降低。因此,比率判断部29判断比率是否比预先规定的 阈值高,检查结果输出部28将比率判断部29的判断结果,与变量以 及分支程序块的至少一方相关联而输出。由此,对于作为验证对象的 优先级,能够得到基于阈值的判定结果,因此,能够明确验证对象而 进一步提高验证作业的效率。

如上所述,对本发明的实施方式进行了记载,但构成本公开的 一部分的记述以及附图不应被理解为用于对本发明进行限定。对于本 领域技术人员而言,根据本公开而实现的各种各样的代替的实施方 式、实施例以及应用技术是显而易见的。

在即便是在分支处理(路径)中进行了写入的变量,也在分支收 敛之后不进行变量的读入的情况下,变量检测部22可以不对该变量进 行检测。其原因在于,如果在分支收敛之后不进行变量的读入,则即 使写入路径数量与总路径数量不一致,规格的遗漏、编码的遗漏的可 能性也较低。

标号的说明

21 分支程序块确定部

22 变量检测部

23 总分支数量检测部

24 写入分支数量检测部

25 比率计算部

26 分支数量判断部

27 非写入分支确定部

28 检查结果输出部

29 比率判断部

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号