JPH08101771A - ソースプログラムの汎用チェックシステム - Google Patents

ソースプログラムの汎用チェックシステム

Info

Publication number
JPH08101771A
JPH08101771A JP6235815A JP23581594A JPH08101771A JP H08101771 A JPH08101771 A JP H08101771A JP 6235815 A JP6235815 A JP 6235815A JP 23581594 A JP23581594 A JP 23581594A JP H08101771 A JPH08101771 A JP H08101771A
Authority
JP
Japan
Prior art keywords
file
rule
pointer
key
source program
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
JP6235815A
Other languages
English (en)
Inventor
Akihiro Nakamura
昭洋 中村
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.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co 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 Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP6235815A priority Critical patent/JPH08101771A/ja
Publication of JPH08101771A publication Critical patent/JPH08101771A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 システムで必要な制約をルール化し、そのル
ールに従って自動的にソースプログラムを効率良くチェ
ック可能にする。 【構成】 ソースプログラムを使用するシステムで必要
な制約条件をルール化して格納したルールファイルと、
このルールファイルから入力された制約条件を解析して
ルールテーブルに展開する手段と、前記ルールテーブル
に展開された制約条件に基づいてチェック対象のソース
プログラムをチェックし、制約条件を満足しない部分に
ついてエラーメッセージを出力する手段を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソースプログラムの汎
用チェックシステムに関するものである。
【0002】
【従来の技術】従来からソースプログラムのチェック
は、該当する言語のコンパイラやチェッカーにより行わ
れており、専ら特定のルールでしかチェックができない
ものであった。
【0003】また、特開昭63−263545号には、
外部からルールを設定してプログラムチェックを行うと
いう考えが開示されているが、具体性がなく、実現が可
能な考えが示されていない。
【0004】
【発明が解決しようとする課題】ところで、ソースプロ
グラムは、作成するシステムごとに、さまざま制約があ
り、動作確認テストによって、この制約を確認する方法
や、ソースプログラムを人間が目で確認する机上確認の
方法がとられてきた。机上確認では漏れが生じることが
多く、結局、動作確認テストに頼ることになり、動作確
認テストに多大な時間を要してきた。
【0005】このため、ソースプログラムのチェックを
強化する必要があるが、新たにチェッカーを開発するた
めには、チェッカーを作成する技術が必要であった。
【0006】本発明の目的は、ソースプログラムを効率
良くチェックすることができる汎用性に優れたソースプ
ログラムの汎用チェックシステムを提供することにあ
る。
【0007】
【課題を解決するための手段】前記目的を達成するため
に、本発明は、ソースプログラムを使用するシステムで
必要な制約条件をルール化して格納したルールファイル
と、このルールファイルから入力された制約条件を解析
してルールテーブルに展開する手段と、前記ルールテー
ブルに展開された制約条件に基づいてチェック対象のソ
ースプログラムをチェックし、制約条件を満足しない部
分についてエラーメッセージを出力する手段を備えたこ
とを特徴としている。
【0008】
【作用】本発明によれば、ルールファイルから入力され
た制約条件を解析してルールテーブルに展開し、その展
開された制約条件に基づいてチェック対象のソースプロ
グラムをチェックし、制約条件を満足しない部分につい
てエラーメッセージを出力する。
【0009】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。
【0010】図1は、本発明の一実施例を示す機能ブロ
ック図である。
【0011】この実施例は、例えばPL/I言語を用い
るシステムを想定したものである。
【0012】図1において、11はチェック対象のソー
スプログラムが格納されたファイル、12はチェックす
るルールが格納されたルールファイル、13は汎用チェ
ック処理部で、ルールファイル解析部131と、ソース
チェック部132と、エラーメッセージ出力部133
と、ルールテーブル134から構成されている。
【0013】エラーメッセージ出力されるエラーメッセ
ージはプリンター14またはディスプレイ15から出力
される。
【0014】図2は、実施例の汎用チェックシステムの
基本的な考え方を示した図である。
【0015】(1)ソースプログラムを先頭から1文字ず
つずらしながら、サーチする。
【0016】(2)開始キーがあったらチェックを開始す
る。
【0017】(3)必須キーがあったらテーブルのキー回
数21に「1」を加算。
【0018】(4)禁止キーがあったらエラーメッセージ
を出力する。
【0019】(5)終了キーがあったら、テーブルのキー
回数21を調べ、指定回数と不一致のとき、エラーメッ
セージを出力し、チェックを終了する。
【0020】図3(a),(b)は、「WHILE文は
否定形で指定せよ」というルールでの開始キー、終了キ
ー、必須キー、禁止キーをソースに対応して示した図で
ある。
【0021】図4は、ルールファイルの指定方法を示す
図であり、開始キーはK=`の後に記述し、必須キーは
Y=`の後、禁止キーはN=`、終了キーはE=`の後
に記述する。また、エラーメッセージは、M=`の後に
記述する。
【0022】図中のY=`^= `*1の「*1」は回
数を示す。1回の場合は省略可能であるが、本例では回
数指定の明確化のため、「*1」を指定している。図3
の(a),(b)のルールは、図4に示すルールに統一
できる。
【0023】図5は、ルールファイル12に基づいて作
成するルールテーブル134の構成図であり、終了キー
が3つ、判定用のキーが5つ指定できるようにしてあ
る。勿論、この個数を修正することは、容易である。
【0024】図6は、図4に示したルールをルールテー
ブル134に展開した状態を示す図である。
【0025】以下に、本実施例のソースチェック部13
2を詳細に説明する。
【0026】図7は、ソースチェック部132の処理フ
ローチャートであり、まず、ソースチェック部132内
の図示しない行カウンタを「0」にした後(ステップ1
01)、ソースプログラムが格納されたファイル11か
ら、ソースチェックすべきソースプログラムを行数をカ
ウントしながら1行分読み込む(ステップ102)。
【0027】ソースチェック部132内の図示しない入
力ポインタに、入力エリアの先頭番地を代入する(ステ
ップ103)。図8,図9,図10に示すルールチェッ
クを実行する(ステップ104)。
【0028】まず、入力ポインタに「1」を加算し、ル
ールチェックするエリアを1バイトずらす(ステップ1
05)。入力ポインタの示すデータが改行コードかどう
か調べ、改行コードならステップ102にジャンプし
て、次の1行分を読み込む。
【0029】改行コード以外ならステップ104にジャ
ンプして、ルールチェックを行う(ステップ106)。
【0030】ソースファイル11が終了したらソースチ
ェック部を終了する(ステップ107)。
【0031】図8〜図10は、ルールチェックの処理フ
ローチャートである。
【0032】まず、ソースチェック部132内の図示し
ないルールポインタにルールテーブルの先頭番地を代入
する(ステップ201)。ルールポインタの示す処理中
フラグがONかどうか調べる(ステップ202)。
【0033】処理中フラグがオフのとき、入力ポインタ
の示すデータと、ルールポインタの示す開始キーが一致
するかどうか調べ(ステップ203)、一致する場合、
ルールポインタの示す処理中フラグにONを設定し、ル
ールポインタの示す開始キー行番号に行カウンタを代入
する(ステップ204,205)。
【0034】処理中フラグがNOのときは全て、引続き
ステップ220を行う。
【0035】ルールポインタの示す処理中フラグがON
のとき、チェックを終了するキーかどうかを調べる(ス
テップ206,211,212)。
【0036】終了キーの場合、ルールポインタの示す必
須キー指定回数と必須キーカウンタとを比較し、一致し
ない場合、エラーメッセージを出力する(ステップ20
8)。
【0037】終了キーの場合、引続き、ルールポインタ
の示す処理中フラグにOFFを代入し、必須キーカウン
タに「0」を代入し(ステップ209,210)、ステ
ップ220を行う。
【0038】終了キーでない場合、繰り返しをカウント
する「I」に「0」を代入する。(ステップ213)。
さらに「I」に「I+1」を代入する(ステップ21
4)。
【0039】引続き、入力ポインタの示すデータと、ル
ールポインタの示す判定のI番目のキーが一致するかど
うか調べる(ステップ215)。一致した場合、ルール
ポインタの示す判定のI番目の種別がY(必須キー)か
どうか調べる(ステップ216)。
【0040】種別が必須キーなら、ルールポインタの示
す必須キーカウンタに「1」を加算する(ステップ21
7)。種別が禁止キーなら、エラーメッセージを出力す
る(ステップ218)。引続き、「I」が5より小さい
かどうか調べ、小さいとき、ステップ214に戻る。
【0041】「I」が「5」より小さくないとき、ルー
ルポインタにルールテーブル134の次のエントリの先
頭番地を代入する(ステップ220)。
【0042】引続き、ルールテーブル134の終了かど
うか調べ、終了ならルールチェック部を終了させる。ル
ールテーブル134があるなら、ステップ202に戻る
(ステップ221)。
【0043】以上で説明した処理によって、図1のソー
スプログラムをルールファイル12で指定したルールに
従ってチェックすることができる。
【0044】なお、本実施例は特定の言語に限定される
ものではない。
【0045】なお、ルールを指定したルールファイル1
2からルールテーブル134を作成するルールファイル
解析部131と、エラーメッセージ出力部133は、従
来からあるロジックで作成できるので、詳細な処理フロ
ーは省略する。
【0046】図11は、本発明の他の実施例を示す機能
ブロック図である。
【0047】図7において、71はチェックするソース
プログラムが格納されたファイル、72はチェックする
ルールが格納されたファイル、73は汎用チェック処理
部で、ルールファイル解析部731と、ソースチェック
部732と、エラーメッセージ出力部733と、ルール
テーブル734から構成されている。
【0048】エラーメッセージはプリンター74または
ディスプレイ75から出力される。
【0049】図12は、ルール設定方法での文字列の切
り出しを示した図である。
【0050】(1)ソースプログラムを先頭から1文字ず
つずらしながら、サーチする。
【0051】(2)AFTERキーがあったら、AFTERキーの分
だけ後方にスキップした後、スペースをスキップし、そ
の後の文字列をワークエリアに退避する。
【0052】このワークエリアを、指定されたファイル
に追加書き込みする。
【0053】(3)BEFOREキーがあったら、前方のスペー
スをスキップした後、その前の文字列をワークエリアに
退避する。
【0054】このワークエリアを、指定されたファイル
に追加書き込みする。
【0055】(1)から(3)までを全ソースプログラムにお
いて行ったあと、キーとなるファイルと対応するファイ
ルの内容を比較することで、チェックを行う。
【0056】図13は、「BASED(の後に指定され
た文字列が、=の前に指定されているか」というルール
に対応するルール設定方法と、キーファイル、比較ファ
イル、及びソースプログラムの関連を示した図である。
【0057】BASED(の後には、PL/I言語での
ポインタ変数を指定するが、このポインタ変数には、ア
ドレスを代入する必要がある。PL/I言語での代入
は、「代入先 = 代入元; 」という形式で記述する
ので、少なくとも代入先には、ポインタ変数が記述され
ていなければならない。代入先は =の前の文字列であ
る。以下、詳細に解説する。
【0058】 「 A = ` BASED(` F=</tmp/based> 」 上記ルールは、「BASED(」の後の文字列を、/t
mp/basedというファイルに出力せよという設定
である。
【0059】 「 B = ` =` F=</tmp/equ> 」 上記ルールは、「=」の前の文字列を、/tmp/eq
uというファイルに出力せよという設定である。
【0060】 「 K=</tmp/based> O=</tmp/equ> M=`ポインタ変数にアドレスを設定せよ` 」 上記ルールは、/tmp/basedファイルをキーフ
ァイルとして、/tmp/equファイルと比較し、キ
ーファイルの全項目が/tmp/equに存在するかど
うか調べ、存在しないキーファイルの項目に対して、
「ポインタ変数にアドレスを設定せよ」というメッセー
ジを出力せよというルールである。
【0061】ソースプログラムとキーファイル及び比較
ファイルの関連は、図13に示す通りである。
【0062】図14に、ルールファイル72に従って作
成するルールテーブル734を示す。
【0063】AFTERテーブル7341は、A=で指
定するキーワードとレングス、その後の文字列を格納す
るファイル名称とファイルをオープンしたときのファイ
ルポインタからなる。
【0064】BEFOREテーブル7342は、B=で
指定するキーワードとレングス、その前の文字列を格納
するファイル名称とファイルをオープンしたときのファ
イルポインタからなる。
【0065】ファイル間ルールテーブル7343は、K
=<で指定するキーファイル名、エラーメッセージ、必
須項目ファイルか禁止項目ファイルかOR項目ファイル
かを示す種別、及び、OR項目ファイルをチェックする
際に使用する、ORカウンタからなる。
【0066】ファイル間ルールテーブル7343のキー
ファイルと比較ファイル(必須項目ファイル、禁止項目
ファイル、OR項目ファイル)の間には、以下のルール
7344を持っている。
【0067】(1)キーファイルの全項目の中に、必須項
目ファイルの全項目が存在する必要がある。
【0068】(2)キーファイルの全項目の中に、禁止項
目ファイルの項目が1つも存在してはならない。
【0069】(3)キーファイルの全項目が、OR項目フ
ァイルのいづれかに存在する必要がある。
【0070】図15に、図9に示すルールをルールテー
ブル734に展開したときの状態を示す。
【0071】以下に、本実施例のソースチェック部73
2を詳細に説明する。
【0072】図16および図17は、ソースチェック部
732のフローチャートであり、まず、ソースチェック
部732内の図示しない行カウンタを「0」にした後
(ステップ301)、ソースプログラムが格納されたフ
ァイル71から、ソースチェックすべきソースプログラ
ムを行数をカウントしながら1行分読み込む(ステップ
302)。
【0073】次に、ソースチェック部732内の図示し
ない入力ポインタに、入力エリアの先頭番地を代入する
(ステップ303)。図18および図19に示すファイ
ル書込み処理を実行する(ステップ304)。
【0074】次に、入力ポインタに「1」を加算し、ル
ールチェックするエリアを1バイトずらす(ステップ3
05)。次に、入力ポインタの示すデータが改行コード
かどうか調べ、改行コードならステップ302にジャン
プして、次の1行分を読み込む。改行コード以外なら、
ステップ304にジャンプして、ファイル書込み処理を
行う(ステップ306)。
【0075】以上の処理を、ソースプログラムの最終デ
ータまで繰り返す。
【0076】ソースプログラムの最終データまで処理を
実行した後、ステップ307にジャンプする。「Y」と
いう指定があったかどうかを調べるため、ソースチェッ
ク部732内の図示しないYフラグに「0」を代入する
(ステップ307)。
【0077】図14に示す全てのルールテーブルで処理
を行うため、ソースチェック部732内の図示しないテ
ーブルポインタにファイル間ルールテーブルの先頭番地
を代入する(ステップ308)。引続き、図20および
図21で示すファイル関連チェックを実行する(ステッ
プ309)。
【0078】次のファイル間ルールテーブルで処理を行
うため、テーブルポインタに1エントリ分の番地を加算
する(ステップ310)。ファイル間ルールテーブルの
終りでなければ、ステップ309にジャンプし、ファイ
ル関連チェックを行う(ステップ311)。ファイル間
ルールテーブルの終りなら、以下の処理で、Yファイル
(必須ファイル)のチェックを行う。
【0079】ステップ309のファイル関連チェック
で、Yファイルの指定がある場合、Yフラグに「1」を
代入しているので、Yフラグが「1」かどうか判定すれ
ば、Yファイルの指定があるかどうかわかる。Yフラグ
が「1」かどうか判定し、「1」でなければ処理を終了
する。「1」ならば、図14に示す全てのルールテーブ
ルで処理を行うため、テーブルポインタにファイル間ル
ールテーブルの先頭番地を代入する(ステップ31
3)。
【0080】引続き、図22で示すYファイル関連チェ
ックを実行する(ステップ314)。
【0081】次のファイル間ルールテーブルで処理を行
うため、テーブルポインタに1エントリ分の番地を加算
する(ステップ315)。
【0082】ファイル間ルールテーブルの終りでなけれ
ば、ステップ314にジャンプし、Yファイル関連チェ
ックを行う(ステップ316)。ファイル間ルールテー
ブルの終りなら、処理を終了する。
【0083】図18および図19のファイル書込み処理
部7321の動作フローを以下詳細に説明する。
【0084】まず、図14に示す全てのルールテーブル
で処理を行うため、ソースチェック部732内の図示し
ないテーブルポインタにルールテーブルの先頭番地を代
入する(ステップ401)。
【0085】次に入力ポインタを基準として、参照する
エリアを順次ずらすために、WKポインタに入力ポイン
タを代入する。テーブルポインタの示すAFTERテー
ブルのキーと入力ポインタの示すデータが等しいかどう
か判定し、等しくなければ、ステップ412を実行す
る。等しければ、以下の処理を行う(ステップ40
3)。
【0086】次に、AFTERキーの部分を読み飛ばす
ため、WKポインタにAFTERキーレングスを加算す
る(ステップ404)。WKポインタに「1」を加算
し、1バイト分参照するエリアをずらす(ステップ40
5)。
【0087】WKポインタの示すデータが空白かどうか
判定し、空白ならばステップ405へジャンプする。空
白以外ならステップ407を実行する(ステップ40
6)。この処理で、空白部分を読み飛ばすことができ
る。
【0088】次に、WK格納エリアをクリアする(ステ
ップ407)。WK格納エリアにWKポインタが示すデ
ータを追加する(ステップ408)。WKポインタに
「1」を加算し、参照するエリアを1バイトずらす(ス
テップ409)。
【0089】WKポインタの示すデータが空白かどうか
判定し、空白以外ならステップ408へジャンプする。
空白ならステップ411を実行する(ステップ41
0)。この処理で、WK格納エリアに、AFTERキー
の後の文字列を格納することができる。
【0090】次に、AFTERテーブルのファイルポイ
ンタにWK格納エリアと行カウンタと改行コードを追加
書込みする(ステップ411)。
【0091】次に、入力ポインタを基準として、参照す
るエリアを順次ずらすために、WKポインタに入力ポイ
ンタを代入する(ステップ412)。テーブルポインタ
の示すBEFOREテーブルのキーと入力ポインタの示
すデータが等しいかどうか判定し、等しくなければ、ス
テップ422を実行する。等しければ、以下の処理を行
う(ステップ413)。
【0092】WKポインタから「1」を減算し、1バイ
ト分参照するエリアを前にずらす(ステップ414)。
WKポインタの示すデータが空白かどうか判定し、空白
ならばステップ414へジャンプする。空白以外ならス
テップ416を実行する(ステップ415)。この処理
で、空白部分を読み飛ばすことができる。
【0093】WK格納エリアをクリアする(ステップ4
16)。WK格納エリアにWKポインタが示すデータを
追加する(ステップ417)。WKポインタから「1」
を減算し、参照するエリアを1バイトずらす(ステップ
418)。
【0094】WKポインタの示すデータが空白かどうか
判定し、空白以外ならステップ417へジャンプする。
空白ならステップ420を実行する(ステップ41
9)。この処理で、WK格納エリアに、BEFOREキ
ーの前の文字列を格納することができる。
【0095】WK格納エリアには、文字列が逆転して格
納されているので、WK格納エリアを逆転する(ステッ
プ420)。例えばDCBAという文字列で格納されて
いれば、ABCDとすることを「逆転する」という。
【0096】BEFOREテーブルのファイルポインタ
にWK格納エリアと行カウンタと改行コードを追加書込
みする(ステップ421)。
【0097】次のルールテーブルで処理を行うため、テ
ーブルポインタにルールテーブルの次の先頭番地を代入
する(ステップ422)。ルールテーブルの終りかどう
か判定し、終りでなければ、ステップ402にジャンプ
する。ルールテーブルの終りなら、ファイル書込み処理
を終了する(ステップ423)。
【0098】以上の処理で、図13に例示したルール中
の、A=及びB=で指定した文字列を、F=で示したフ
ァイルに書き込むことができる。これらの書き込みファ
イルどうしの関連を、図13に例示したK=で指定し、
エラーの場合M=で示したメッセージを出力する。
【0099】また、A=およびB=で書き出したファイ
ル以外を用いて、K=にルールを設定することも可能で
ある。例えば、すでに用意した/tmp/aaaという
ファイルか、または、/tmp/equのいづれかに、
キーファイルである/tmp/basedの項目が存在
するかどうかを判定する場合は、以下のように指定を行
えばよい。
【0100】 K=</tmp/based> O=</tmp/equ> O=</tmp/aaa> M=`エラーメッセーシ゛XXXXXXXXXXXXXX` この方法によれば、以下のようなルールもチェックする
ことができる。
【0101】ルール 「 %INCLUDEの後の文字列は、ソースプログラ
ムのあるライブラリに存在しなければならない。」 このルールをチェックするには、ソースプログラムのあ
るライブラリのメンバ名を、たとえば、/tmp/me
mberというファイルに、あらかじめ用意しておき、
以下のような指定をすればよいことになる。
【0102】 「 A=`%INCLUDE` F=</tmp/include> K=</tmp/include> O=</tmp/member> M=`メンハ゛名がライフ゛ラリに存在しない`」 K=で指定したルールに基づいて、どのようにファイル
をチェックするかを以下に示す。
【0103】図20および図21のファイル関連チェッ
ク処理部を詳細に説明する。
【0104】まず、図14に示すルールテーブル734
内で、ファイル間ルールテーブル7343のキーファイ
ルを1行分入力する(ステップ502)。ファイル間ル
ールテーブルのORカウンタに「0」を代入する。この
ORカウンタはOR項目ファイルを検索し、キーファイ
ル項目と一致したときに「1」加算して、OR項目ファ
イルにキーファイル項目が存在するかどうかを判定する
ためのカウンタである(ステップ503)。
【0105】次に、ORフラグに「0」を代入する(ス
テップ504)。ORフラグは、ファイル間ルールテー
ブルの種別にO(ORファイル)があるかどうかを判定
するためのフラグである。
【0106】次に、種別ポインタにファイル間ルールテ
ーブルの「1」の種別の先頭番地を代入する。種別ポイ
ンタで処理を行うのは、5つある種別情報を繰り返し処
理するためである。
【0107】種別ポインタの示す種別がN(禁止項目フ
ァイル)かどうか判定し、Nでなければ、ステップ51
2を実行する。Nならば、ステップ507を実行する
(ステップ506)。
【0108】種別ポインタの示すファイル名称でデータ
を1行分入力する(ステップ507)。キーファイルの
入力データと、種別ポインタの示すファイルの入力デー
タを比較し、一致したらステップ509を実行する。
【0109】一致したということは、キーファイルの入
力データが禁止項目であったということなので、ルール
ポインタの示すエラーメッセージとキーファイルの文字
列、行カウンタを画面またはプリンタに出力する(ステ
ップ509)。
【0110】キーファイルの入力データと、種別ポイン
タの示すファイルの入力データを比較し、一致しなかっ
たらステップ510を実行する(ステップ508)。種
別ポインタの示すファイルを1行分入力する(ステップ
510)。
【0111】種別ポインタの示すファイルの終りかどう
か判定し、終りでなければステップ508を実行し、フ
ァイルの終りなら、ステップ512にジャンプする。こ
の処理により、禁止項目ファイル内にキーファイルの項
目が存在すれば、エラーメッセージを出力することがで
きる。
【0112】種別ポインタの示す種別が「O」(ORフ
ァイル)かどうか判定し、「O」でなければステップ5
19を実行し、「O」ならば、ステップ513を実行す
る(ステップ512)。ORフラグに「1」を代入する
(ステップ513)。種別ポインタの示すファイルを1
行分入力する(ステップ514)。
【0113】キーファイルのデータと種別ポインタの示
すデータが一致するかどうか判定し、一致したらステッ
プ516にジャンプし、一致しなければ、ステップ51
7を実行する(ステップ515)。ステップ516で
は、ファイル間ルールテーブルのORカウンタに「1」
を加算し、キーファイルのデータが、ORファイルに存
在したことがわかるようにする。
【0114】種別ポインタの示す種別がYかどうか判定
し、Yならばステップ520でYフラグに「1」を代入
し、必須項目ファイル指定があったかどうか判定できる
ようにする(ステップ520)。Yでなければ、ステッ
プ521を実行する(ステップ519)。
【0115】種別ポインタに次エントリの先頭番地を代
入する(ステップ521)。エントリの終りかどうか判
定し、終りでなければステップ506にジャンプし、終
りなら、ステップ523を実行する(ステップ52
2)。この処理で、図14のファイル間ルールテーブル
7343の「1」から「5」までのエントリ分、繰り返
して処理ができる。全エントリ分処理が終了したら、O
Rフラグの判定を行う(ステップ523)。
【0116】ORフラグが「1」ならば、OR項目ファ
イルの指定があったということなので、ファイル間ルー
ルテーブルのORカウンタを判定する(ステップ52
4)。
【0117】ORカウンタが「0」ならば、ORファイ
ルのいづれにも、キーファイルのデータが存在しなかっ
たということなので、ルールポインタの示すエラーメッ
セージと、キーファイルの文字列及び行カウンタを出力
する(ステップ525)。
【0118】ファイル間ルールテーブル7343のキー
ファイルの1行分を入力する(ステップ526)。ファ
イルの終りかどうか判定し(ステップ527)、終りで
なければ、ステップ503を実行し、終りなら、ファイ
ル間チェック処理を終了する。
【0119】以上の処理でキーファイルの全項目につい
てチェックすることができる。
【0120】次に、図22に示すYファイル関連チェッ
ク処理部の動作フローを以下詳細に説明する。
【0121】まず、種別項目の5エントリ分繰り返すた
め、種別ポインタに「1」の種別先頭番地を代入する
(ステップ601)。種別ポインタの示す種別がYかど
うか判定する(ステップ603)。
【0122】種別がYのとき、以下の処理を行う。種別
がY以外なら、ステップ611を実行する。
【0123】種別ポインタの示すファイルを1行分入力
する(ステップ603)。このデータは、Yファイル
(必須ファイル)の項目であるので、キーファイルに必
ず存在しなければならない。そこで、キーファイルの全
データを検索し、存在しなければエラーメッセージを出
力する。
【0124】まず、ファイル間ルールテーブル7343
のキーファイルを1行分入力する(ステップ604)。
種別ポインタの示すデータとキーファイルのデータを比
較する。一致したら、ステップ609にジャンプし、次
の項目を入力する。一致しなければ、キーファイルの次
の1行分を入力する(ステップ606)。
【0125】ファイルの終りかどうか判定し、終りなら
ステップ608を実行し、終りでないなら、ステップ6
05にジャンプする。
【0126】以上の処理で、全キーファイルを検索する
ことができる。
【0127】ステップ608を実行する場合は、キーフ
ァイルのデータが存在しなかったときなので、ルールポ
インタの示すエラーメッセージと種別ポインタの示すフ
ァイルの入力した文字列及び行カウンタを出力する(ス
テップ608)。
【0128】種別ポインタの示すファイルの次の1行を
入力する(ステップ609)。ファイルの終りかどうか
判定し、終りでないならステップ604にジャンプし、
終りならステップ611を実行する。
【0129】以上の処理で、種別ポインタの示すファイ
ルの全項目が、キーファイルの存在するかどうか調べら
れ、存在しなかった場合、エラーメッセージを出力する
ことが可能となる。
【0130】種別は5エントリあるので、種別ポインタ
に次のエントリの先頭番地を代入し(ステップ61
1)、次のエントリの処理を行う。エントリの終りかど
うか判定し、終りでなければ、ステップ602にジャン
プし、終りなら、Yファイル関連チェックを終了する。
【0131】
【発明の効果】以上説明したように、本発明によれば、
チェックするルールを自由に変更できるルールファイル
を作成し、このルールファイルに基づいてソースプログ
ラムをチェックするので、チェッカーを作成する技術が
なくとも、特定のルールでソースプログラムを効率良く
チェックできるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例を示す機能ブロック図であ
る。
【図2】本実施例の基本的な実現方法を図示したもので
ある。
【図3】具体的なルールに従った開始キーと必須キー、
終了キーを示した図である。
【図4】ルールファイルの具体的な指定方法を示した図
である。
【図5】ルールファイルから作成するルールテーブルの
詳細な図である。
【図6】ルールテーブルの使用例を示す図である。
【図7】ソースチェック部の処理フローチャートであ
る。
【図8】ルールチェック処理のフローチャートである。
【図9】図8の続きを示すフローチャートである。
【図10】図9の続きを示すフローチャートである。
【図11】本発明の他の実施例を示す機能ブロック図で
ある。
【図12】図11の実施例のファイル書き込み処理の基
本的な実現方法を図示したものである。
【図13】図11の実施例のルール設定例とプログラム
ソースの関係を示した図である。
【図14】ルールテーブルの内容およびルールファイル
間のルールを示した図である。
【図15】ルールテーブルの使用例を示す図である。
【図16】ソースチェック部のフローチャートである。
【図17】図16の続きを示すフローチャートである。
【図18】ファイル書き込み処理部のフローチャートで
ある。
【図19】図18の続きを示すフローチャートである。
【図20】ファイル関連チェック処理部のフローチャー
トである。
【図21】図20の続きを示すフローチャートである。
【図22】Yファイル関連チェック処理部のフローチャ
ートである。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを使用するシステムで
    必要な制約条件をルール化して格納したルールファイル
    と、このルールファイルから入力された制約条件を解析
    してルールテーブルに展開する手段と、前記ルールテー
    ブルに展開された制約条件に基づいてチェック対象のソ
    ースプログラムをチェックし、制約条件を満足しない部
    分についてエラーメッセージを出力する手段を備えたこ
    とを特徴とするソースプログラムの汎用チェックシステ
    ム。
JP6235815A 1994-09-30 1994-09-30 ソースプログラムの汎用チェックシステム Pending JPH08101771A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6235815A JPH08101771A (ja) 1994-09-30 1994-09-30 ソースプログラムの汎用チェックシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6235815A JPH08101771A (ja) 1994-09-30 1994-09-30 ソースプログラムの汎用チェックシステム

Publications (1)

Publication Number Publication Date
JPH08101771A true JPH08101771A (ja) 1996-04-16

Family

ID=16991674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6235815A Pending JPH08101771A (ja) 1994-09-30 1994-09-30 ソースプログラムの汎用チェックシステム

Country Status (1)

Country Link
JP (1) JPH08101771A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
JP2007265089A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ソフトウェア保守支援プログラム,処理方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
JP2007265089A (ja) * 2006-03-29 2007-10-11 Fujitsu Ltd ソフトウェア保守支援プログラム,処理方法および装置

Similar Documents

Publication Publication Date Title
JP2694122B2 (ja) ソフトウェア・アプリケーションの自動テスト方法
JPH03266039A (ja) フリーフォーマットデータリンク処理方式
JP2006268299A (ja) ソフトウェア開発支援システム
JPH0830620A (ja) 構造検索装置
US5721924A (en) Method and device for obtaining a value of a referred to variable defined in a source program having a specific variable name
CN111381828A (zh) 生成代码文件的语法树的方法、装置及电子设备
JPH08101771A (ja) ソースプログラムの汎用チェックシステム
JPH08194611A (ja) プログラム修正による影響範囲を解析する装置
CN111381827A (zh) 生成代码文件的语法树的方法、装置及电子设备
CN111381814A (zh) 生成代码文件的语法树的方法、装置及电子设备
JP6347023B1 (ja) コード自動記述2ソフトウェアを記録した記録媒体
JPH056291A (ja) テスト資源の作成・管理方法
JP3329476B2 (ja) かな漢字変換装置
JP6318327B1 (ja) コード自動記述ソフトウェアを記録した記録媒体
JP2838972B2 (ja) 自動索引作成装置
JP2006268545A (ja) ファイル結合装置及びファイル結合方法及びプログラム
JP3602231B2 (ja) テストパターン作成装置
JPH05282138A (ja) ドキュメンタの文書生成方法
JP2722684B2 (ja) ファイルシステムの検索装置
JPH11161666A (ja) ドキュメントデータ検索方法および装置、並びにドキュメント編集装置
JP2724235B2 (ja) 変数名称推論装置
JP3018579B2 (ja) 名前検索処理装置
JPH06222913A (ja) プログラム解析装置
JPH07160555A (ja) ファイル変換ツール管理装置およびファイル変換ツール管理方法
JPH0540638A (ja) 語彙解析編集方式