JPH01237737A - フラグ識別支援方式 - Google Patents

フラグ識別支援方式

Info

Publication number
JPH01237737A
JPH01237737A JP63064596A JP6459688A JPH01237737A JP H01237737 A JPH01237737 A JP H01237737A JP 63064596 A JP63064596 A JP 63064596A JP 6459688 A JP6459688 A JP 6459688A JP H01237737 A JPH01237737 A JP H01237737A
Authority
JP
Japan
Prior art keywords
list
variable
flag
definition
conditional
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP63064596A
Other languages
English (en)
Inventor
Mitsunori Fukazawa
光規 深沢
Bukan Kin
金 武完
Masaaki Wakamoto
雅晶 若本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP63064596A priority Critical patent/JPH01237737A/ja
Publication of JPH01237737A publication Critical patent/JPH01237737A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔概  要〕 手続型言語のプログラムの変数のうちフラグとして用い
られているものを識別するためのフラグ識別支援方式に
関し、 ソフトウェアのテスト等を効率的に行う為の支援方式を
提供することを目的とし、 入力されたプログラムに対し、条件文または代入文によ
ってのみ参照されるような変数のリストを作成する変数
リスト生成部と、変数リスト中の指定された変数に対し
て、到達可能な定義の集合を求める到達可能定義集合抽
出部と、上記の到達可能な定義の集合が、ある条件文に
よって互いに素な部分集合に分割されるかを調べるマー
カ最終判定部と、マーカと判定された変数からフラグと
して使われる変数のリストを作成するフラグ抽出部と、
前記フラグのリストを出力する出力処理部とを持ち、入
力されたプログラム中で、フラグとして使われている変
数を抽出するための支援を行うように構成する。
〔産業上の利用分野〕
本発明はソフトウェアのテスト方式に係り、特に手続型
言語のプログラムの変数のうちフラグとして用いられて
いるものを識別するためのフラグ識別支援方式に関する
本発明は、コンピュータによってフラグ識別作業を支援
するための方式であり、既存の技術であるデータフロー
解析を利用することによってフラグの識別を効率化する
ことを目的とする。
〔従来の技術及び発明が解決しようとする課題〕ソフト
ウェアのテスト、あるいは保守例えば機能の削除、変更
、追加の必要性から作成済みのプログラムを理解しよう
とするとき、ある変数がフラグであることを識別するこ
とは理解作業を容易にするために重要である。従来、こ
の作業は担当者が直接プログラムを読み、自身が持って
いる知識や経歴を頼りに行われていたため、時間と労力
がかかり、作業内容も不均質であった。
本発明はソフトウェアのテスト等を効率的に行う為の支
援方式を提供することを目的とする。
〔課題を解決するための手段及び作用〕本発明の詳細な
説明する前に、フラグの定義を明確にする。ただし、以
下では複数のプログラムに跨がって利用されるようなフ
ラグは除外して考える。すなわち、本発明はプログラム
内部でローカルに使われ他のプログラムの参照関係がな
いフラグのみを対象としている。基本的にフラグはプロ
グラムのある点における処理の仕方に応じて他の(後の
)点の処理の分岐を制御するためのものであるとする。
すなわち、フラグはプログラムにおいて分岐の制御のた
めだけに使われる制御変数であり、それ以外の意味は持
たないとする。フラグはプログラム中のある点における
処理の仕方を保存するための目印(マーカ)用変数と対
で使われるが、マーカ自身がフラグとなることもある。
通常は両者は同一である。
次にフラf’の定義を与える。
・変数AH,・・・、A6によって変数Xが定義される
(例えば、X : ” AI + 2 At + 3 
A3などのように、AI、・・・、Aいの値によってX
の値が定められるような代入文をXの定義という)とき
、これを関数的にX : =X (A、、・・・。
Aイ)とかくことにする。
・以下、条件文の条件関数とは、条件文中の条件式が成
立するときに真(T)、成立しないときに偽(F)とな
るような関数であるとする。
例えば条件文 「if X+2Y〉Othen・・・else・・・」
の条件関数は である。
・変数Xが間接的に参照されるとは、Y:=f(X、 
 Z’)のようにXを用いて定義される変数(この場合
Y)が参照されることをいう。
ここで本発明でプログラム中に使用される変数がフラグ
と判断するための条件を以下に見い出す。
〔定義1〕 変数Xがマーカ(MK)である。
(1)Xは、プログラム中の条件文、または代入文にお
いてのみ参照される(この参照されるノードをηとする
)。
(2)  (1)の参照に対して、Xは異なる2つ以上
の到達可能な定義を持つ(これをRD(η、X>とする
)。
(31RD(η、X)は、ある条件文によって互いに異
なると判別できる部分集合に分割される(定義2参照)
。この定義1の(3)をさらに具体的に定義2として見
い出される。
〔定義2)  RD(η、 X) = (X : =X
(i)(Al(り、・・・A、 U) ); i = 
1゜・・・、n) とするとき、 RD(η、X)がある条件文によって互いに異なると判
別できる部分集合に分割される。
+l)  Xを直接(例えばC(X) )または間接的
(例えばC(W);w== (X))に参照する条件文
が存在する。このときこの条件文の条件関数をC(X、
  Yl 、  ・・・、Yi)とする。
ただし、Xが条件文において間接的に参照される場合、
Xによって定義される変数(Wとする)が存在し、W:
=g (X、B、、  ・・・。
Bs)のように表される。このとき、条件関数は C(g  (X、  B、、  ・ −・、  Bs)
、  Y、。
・ ・ ・、Yi) と表されるが、本質的な影響はないので、簡単のためC
(X、Y、、  ・・・、Yz)の場合だけを考える。
(21X(7)定義X 、 =)((i)  (A、 
 (i) 、  ・・、。
A、 (i) )において、関数X(′)の定義域(す
なわち、全てのAk ”  (K=1.  ・・ ・。
m)の取り得る値の可能な組合せの集合)をdon(X
 )  (dom;領域)とかくとき、全てのX<=+
  (i=  1.  ・・+、n)!11:対して以
下が成立する。
Y++  ・・・YLの取り得る値を任意に固定したと
き(これをyl、・・・yzとする)、C(X(直) 
目(ム’+71+  ・・・、y、c)=一定forf
”こdom(X ” ) +3)Y、、  ・・・Yfiの取り得る値を任意に固
定したとき、 C(X”ゝ (言(11)、y、、・・・。
yz)≠C(X ”  (a ” ) r  7 r 
+  ・・・。
y□)となるi、j(i≠j)が存在する。
〔定義3〕 変数Xがフラグである。
XはMKであり、かつ、直接参照するような条件文があ
るか、又はMKによって定義され、かつ、Xを直接参照
するような条件文が存在する。
定義1は、プログラム中でマーカとして使われる変数の
定義である。マーカ自身とフラグとが一致する場合が多
く、例えば、第2図(a)のMはフラグであリマーカで
ある。また、例えば第2図世)の例の場合、Ml、M2
はマーカであるがフラグではなく、Fはマーカではない
が、フラグであると考える。
定義2はマーカの性質のひとつ(定義1131)を定式
化したものである。
定義3はフラグの定義である。
次に本発明の機能ブロック図を第1図に示す。
本発明は指定されたプログラムを入力しく101)、プ
ログラム内でフラグとして用いられる変数のリストを出
力する(107)。
変数リスト生成部102は、読み込んだプログラムの全
(ローカル)変数の内、条件文または代入文によっての
み参照される変数のリストを作成する(定義1(11)
。このリストを“処理リスト”と呼ぶ。処理リストから
先頭の要素(変数)を取り出し、到達可能定義集合抽出
部103以後の処理を実行し、処理が終了したら次の要
素を取り出し同様なことを繰り返す。
到達可能定義集合抽出部103は、定義2(2)をチエ
ツクするためのものである。これは変数リスト生成部1
02によって取り出された変数を入力とし、既存の技術
であるデータフロー解析手段1O8を利用することによ
って、その変数(Xとする)が参照される箇所に到達可
能なXの定義の集合を求める。この集合が2つ以上の要
素から成るとき(定義[2))、マーカ最終判定部10
4以後の処理を実行し、そうでなければXに関する処理
を終了する。
ここで、プログラムのある点ηに到達可能なXの定義(
代入文)とは、その定義からηに達するパスが存在し、
かつ、そのパス上に他のXの定義が存在しないような定
義をいう。例えば第3図の44に到達可能なXの定義の
集合RD(η4.X)は(X : =3.X : =X
+Y)である。
第4図に到達可能定義集合抽出部の処理フロー図を示す
。以下第4図によってこの処理を説明する。
変数リスト生成部102により取り出された変敗X(2
01)に関する、全ての参照箇所が調べられ、そのプロ
グラム内の位置を識別するための名前、例えば行番号な
どがつけられて、REFリストに格納される(202)
。例えば第3図ではREFリスト−(η3.η4)であ
る。
REFリストから先頭要素ηを取り出し、(Xの)参照
箇所ηに到達可能な(Xの)定義の集合RD (77、
X)を求める(203)。
RD(η、X>の要素数が1つ以下の場合、Xに関する
処理を終了し到達可能定義集合抽出部103へ戻る(2
05)。
そうでなければRD(η、X)を“RDリスト”へ格納
しく206) 、REFリストが空になるまで(207
)同様なことを繰り返す。
次に、マーカ最終判定部104の説明を、その処理フロ
ー図である第5図を用いて行う。マーカ最終判定部10
4は定義1の(3)(すなわち定義2)をチエツクする
ための処理を行う部分である。
先ず、着目している変数Xを直接又は間接に参照する条
件文が存在するか否かを判定しく303)、もしなけれ
ばXに関する処理を終了して到達可能定義集合抽出部1
03へ戻る(302)。
ここで、Xを間接に参照するとは、Y:=f(X、Z”
)のようにXを用いて定義される変数Yを参照する場合
をいうこととする。
次にその条件文に関する条件関数 C(X、 Y+ 、Y2 、・・・、Yl)を条件文か
ら求める(304)。
条件文のプログラム中の位置をη。とする。
入力されたRDリスI−(301)から先頭要素(RD
 (η、X>とする)を取り出す(305)。
更に、RD(η、X>の先頭要素(x 、 = x (
i)(A、(”)、・・・ 、a、、(1)  とする
。)を取り出す(306)。
このX(i)に対して定義2の(2)が成立するか否か
を次のようにしてチエツクする(307)。
プログラム中でX 、 = X (i)  (A、  
+り、・・・ )、、 (1) )が存在する箇所(定
義箇所)をη(1)  とする。
プログラム変数の取り得る値の推定支援方式(以下値推
定方式と略す)によって、A、  Tit。
・・・、A、 +i)の各々に対して、η(i)におい
て取りうる値を全て求め、それらの値の組み合わせの全
てに対して(すなわち全てのa(a)εdomX(“)
に対し) C(X”  (a ”’ ) + )’+ 、・・・、
yA)・・・・・(1) を計算し、それらの計算結果が全て一致するかどうかを
調べる。ただし、Cは条件関数、y++  ・・・、y
 はY3.・・・、YLのηゎにおいて取り得る値に固
定する。丁(正) は a (i)   =   (a 、(り、   a %
il   、    、   ・  t、   a 、
(五) )かツa lC1’ +  ” ’ +  a
m ″)  は各々A 、  (t )。
・・・、Aイ(iゝ の取り得る値である。実際には、
Xがマーカのときは、Xの定義は単なる定数(Xとする
)であることが多く、(1)式はその定義に対し、 C(x、y、、  ・・・、yl) となり、不変なので、この場合Xに関して定義2(2)
は容易に成立する(307)ことが分る。
RD(η、X)の全ての要素(ηに到達可能なXの定義
)に対し、同様のチエツクを行う (309)。
次に、Xの各定義 X : = X (i)  (・・
・・)に対し、Xに関して定義2(2)が成立するか、
(307)のチエツクを行う際に実行される(11式の
計算の結果を利用して定義2の(3)が成立するか否か
を調べる。成立すればXはマーカと判定され、成立しな
ければXに関する処理を終了して到達可能定義集合抽出
部103へ戻る(30 B)。
以上のようにしてマーカ最終判定部104の処理によっ
て、Xが目印(マーカ)であると判定された場合、次に
フラグ抽出部105が実行される。
フラグ抽出部105はマーカ変数Xを入力とし、Xがプ
ログラム中のある条件文において直接参照されるかどう
かを調べる。直接参照されるならばXはフラグであると
判定され、フラグリストに格納される。条件文に直接参
照されないとき、プログラム中でXが参照される代入文
を調べ、その代入先の変数(代入文の左辺)をフラグと
してフラグリストに格納し、更に変数リストから消去す
る。
以上によってXに関する処理を終了し、到達可能定義集
合抽出部103に戻って同様の処理を繰り返す。
変数リスト生成部102で生成した変数リストの全ての
要素(変数)に対して処理が終了した後、出力処理部1
06によって、フラグリストを適当な形で出力する。
〔実  施  例〕
本発明の実施例を第6図に示すプログラムのフローチャ
ートについて、第1図、第4図、第5図を参照して説明
する。
入力されたプログラム(第6図)に対し、変数リスト生
成部102の処理を実行し、変数リスト(・・・、X、
Y、  ・・・)を作成する。
変数リストの各要素に対し、到達可能定義集合抽出部1
03以後の処理を次々と実行し、今、変数Xに関する処
理を実行するものとする。
変数Xは到達可能定義集合抽出部103に送られ(20
1)、その参照箇所を調べられる。この実施例のプログ
ラムにおけるXの参照箇所はYニーX−4であるので、
これにηという名前をつけてREFリストに格納する(
202)。REFリスト=(η)である。
次に、ηをREFリストがら取り出して、データフロー
解析手段108を用いてRD(η、x)を求める(20
3)、RD (η、X)= (X:=1、X:=51で
ある。
RD(η、X)の要素数は2以上なので(204)、こ
れをRDリストに格納する(206)。
RDリスト=RD (η、X)である。
REFリストは空となるので(20?)、マーカ最終判
定部104へ処理を移す。
マーカ最終判定部104において、まずXを直接または
間接に参照する条件文があるかどうがが判定されるが(
303)、Xは2つ目の条件分岐において間接的に参照
される。
従って、この条件文に関する条件関数を求める(304
)。
条件関数は、 である。
RDリストから先頭要素RD(η、X)を取り出す(3
05)。
次に、RD(η、X)から先頭要素X:=1を取り出す
(306)。この定義は定数定義であり、Xの定義に変
数を含まないのでXは常に同一の値(すなわち1)を取
るので、恒等的に C(1) =F          ・・・・ (ア)
となり、Xに関して定義2(2)が成立する(307)
このとき、RD(η、X)= (X:=5)であり、空
でないので(309)X:=5を取り出しく306)、
同様に C(5)=T           ・ ・ ・ ・ 
(イ)からXに関して定義2(2)が成立する(307
)。
(ア)、(イ)より定義2の(3)が成立するので(3
10)、Xをマーカと判定する(311)。
次にフラグ抽出部105に処理が移される。フラグ抽出
部105では、マーカ変数Xを入力し、Xを直接参照す
る条件文が存在するかを′調べるが、存在しないので、
Xによって定義される変数Yをフラグとしフラグリスト
に格納し、Yを変数リストから消去する。
以上によってXに関する処理を終了し、到達可能定義集
合抽出部103へ戻って変数が無くなるまで同様の処理
を行い、最後にフラグリストを出力して全処理を終了す
る。
〔発明の効果〕
本発明によれば、手続型言語のプログラムのテストに際
して従来の手作業に比べて著しく作業効率が向上する。
【図面の簡単な説明】
第1図は本発明の機能ブロック図、 第2図(a)、 (blはマーカ判別図、第3図は本発
明を説明するためのフローの一例、第4図は本発明の到
達可能定義集合抽出部処理フロー図、 第5図はマーカ最終判定部処理フロー図、第6図は入カ
プログラム例図である。 。 101・・・入力プログラム、 102・・・変数リスト生成部、 103・・・到達可能定義集合抽出部、104・・・マ
ーカ最終判定部、 105・・・フラグ抽出部、 106・・・出力処理部、 107・・・出力リスト、 108・・・データフロー解析手段、 109・・・変数の取り得る値推定手段。

Claims (1)

  1. 【特許請求の範囲】 入力されたプログラム(101)に対し、条件文または
    代入文によってのみ参照されるような変数のリストを作
    成する変数リスト生成部(102)と、 変数リスト中の指定された変数に対して、到達可能な定
    義の集合を求める到達可能定義集合抽出部(103)と
    、 上記の到達可能な定義の集合が、ある条件文によって互
    いに素な部分集合に分割されるかを調べるマーカ最終判
    定部(104)と、 マーカと判定された変数からフラグとして使われる変数
    のリストを作成するフラグ抽出部(105)と、 前記フラグのリストを出力する出力処理部(106)と
    を持ち、入力されたプログラム中で、フラグとして使わ
    れている変数を抽出するための支援を行うフラグ識別支
    援方式。
JP63064596A 1988-03-17 1988-03-17 フラグ識別支援方式 Pending JPH01237737A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63064596A JPH01237737A (ja) 1988-03-17 1988-03-17 フラグ識別支援方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63064596A JPH01237737A (ja) 1988-03-17 1988-03-17 フラグ識別支援方式

Publications (1)

Publication Number Publication Date
JPH01237737A true JPH01237737A (ja) 1989-09-22

Family

ID=13262794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63064596A Pending JPH01237737A (ja) 1988-03-17 1988-03-17 フラグ識別支援方式

Country Status (1)

Country Link
JP (1) JPH01237737A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038394A1 (ja) * 2004-10-04 2006-04-13 Matsushita Electric Industrial Co., Ltd. ソースコード検査器、方法、プログラム及び記憶媒体
JP2018049565A (ja) * 2016-09-23 2018-03-29 株式会社東芝 ソフトウエア検証用システム及びソフトウエア検証方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038394A1 (ja) * 2004-10-04 2006-04-13 Matsushita Electric Industrial Co., Ltd. ソースコード検査器、方法、プログラム及び記憶媒体
US8020153B2 (en) 2004-10-04 2011-09-13 Panasonic Corporation Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program
JP2018049565A (ja) * 2016-09-23 2018-03-29 株式会社東芝 ソフトウエア検証用システム及びソフトウエア検証方法

Similar Documents

Publication Publication Date Title
CN115564322B (zh) 一种业务处理方法、装置、电子设备及存储介质
JP2010140434A (ja) プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム
US20150106793A1 (en) Detecting Byte Ordering Type Errors in Software Code
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
US9134979B2 (en) Convergence analysis in multithreaded programs
CN109379398A (zh) 一种数据同步方法及装置
CN113495728A (zh) 依赖关系确定方法、装置、电子设备及介质
CN108512822B (zh) 一种数据处理事件的风险识别方法和装置
CN114003234A (zh) 小程序局部编译方法、装置、设备及计算机可读存储介质
CN111782443B (zh) 数据处理的方法、装置及电子设备
CN110989991A (zh) 检测应用程序中源代码克隆开源软件的方法及系统
CN111739046A (zh) 用于模型更新和检测图像的方法、装置、设备和介质
JPH01237737A (ja) フラグ識別支援方式
CN111240967A (zh) 一种代码生成方法及装置
CN103632099B (zh) 未导出的Native API函数获取方法及装置
JP6880962B2 (ja) プログラム分析装置、プログラム分析方法および分析プログラム
JP2020042795A (ja) スマート・コントラクトのための不確定性要因検出装置、方法及び記憶媒体
CN106095674A (zh) 一种网站自动化测试方法和装置
CN106126670B (zh) 运营数据排序处理方法及装置
US11481546B2 (en) Screen discrimination apparatus, screen discrimination method and program
CN116339716B (zh) 一种流程图的分析方法
CN118426834A (zh) 深度学习模型的编译方法、装置、设备、介质和程序产品
CN115481670B (zh) 一种模型训练方法、装置、设备及可读存储介质
CN105677559B (zh) 一种检测方法及装置
CN117493478A (zh) 地图数据检查方法、装置、设备及存储介质