(57)【要約】【課題】ソースプログラム内で、対として登録すべき関数の定義漏れを防ぐこと。【解決手段】定義関数書き出し・読み込み機能１３は、ソースプログラム２１内に定義してある関数と、対になって定義すべき関数を数え、関数確認結果一覧２４に記載する。定義関数一覧２４から判定機能１４は、ソースプログラム内に定義されてある関数と対で登録すべき関数が一致するかを判定し、一致しない場合、関数の名称をデータ表示部４に表示する。【選択図】図１
2007141169.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムと対となる関数の定義情報を入力するデータ入力手段と、
前記ソースプログラムと、前記ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部と、
前記ソースプログラム内で定義されている関数を前記データ保管部から呼び出す手段と、
前記対となる関数の定義情報を前記関数一覧データーベースから読み込む関数読み込み手段と、
前記ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定する対応関数判定手段と、
前記対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するデータ表示手段と
を備えることを特徴とする利用関数チェックシステム。
【請求項２】
前記対応関数判定手段は、前記対で登録すべき関数の個数が一致するか否かを判定することを特徴とする請求項１記載の利用関数チェックシステム。
【請求項３】
ソースプログラムと対となる関数の定義情報を入力するステップと、
前記ソースプログラム内で定義されている関数を前記ソースプログラムと、前記ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部から呼び出すステップと、
前記対となる関数の定義情報を前記関数一覧データーベースから読み込むステップと、
前記ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定するステップと、
前記対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するステップと
を有することを特徴とする利用関数チェック方法。
【請求項４】
前記判定するステップにおいて、前記対で登録すべき関数の個数が一致するか否かを判定することを特徴とする請求項３記載の利用関数チェック方法。
【請求項５】
コンピュータを、ソースプログラムと対となる関数の定義情報を入力するデータ入力手段と、
前記ソースプログラム内で定義されている関数を前記ソースプログラムと、前記ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部から呼び出す手段と、
前記対となる関数の定義情報を前記関数一覧データーベースから読み込む関数読み込み手段と、
前記ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定する対応関数判定手段と、
前記対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するデータ表示手段として機能させることを特徴とするプログラム。
【請求項６】
コンピュータに、前記対で登録すべき関数の個数が一致するか否かを判定させることを特徴とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ上で動作するソフトウェアに元となるソースプログラムにて利用している関数の利用における整合性の確認を行う技術に関する。
【背景技術】
【０００２】
従来の利用関数のチェック方法の一例が、特許文献１に記載されている。図７に示すように、この従来の利用関数のチェック方法は、送信側関数に送信側キー情報、送信側パラメータ情報、キー情報設定ルーチン、キー情報チェックルーチンを持ち、受信側関数に受信側キー情報、キー情報チェックルーチン、キー情報設定ルーチンを持つような構成である。
【０００３】
このような構成を有する従来の利用関数チェック方法は、送信側の関数にて定義されている引数と受信側にて受け取るべき引数を情報として持ち、関数の処理を受け取る側にて引数の種類の妥当性をチェックしていた。
【特許文献１】特許第３１４１８１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来例においては次のような問題点があった。
【０００５】
例えば、ｆｏｐｅｎ（）とｆｃｌｏｓｅ（）の様に、複数の関数が１組で利用しなければならない関数の場合、必要な関数の呼び出しを忘れる場合があった。
【０００６】
その理由は、ソースプログラムの規模が大きくなると、対で利用しなければならない関数の片方の定義を忘れる可能性があるためである。
【０００７】
本発明は、以上説明した事情に鑑みてなされたものであり、その目的は、対で利用しなければならない関数を定義しているか確認できるようにすることにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明は、ソースプログラムと対となる関数の定義情報を入力するデータ入力手段と、
ソースプログラムと、ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部と、
ソースプログラム内で定義されている関数をデータ保管部から呼び出す手段と、
対となる関数の定義情報を関数一覧データーベースから読み込む関数読み込み手段と、
ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定する対応関数判定手段と、
対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するデータ表示手段と
を備える利用関数チェックシステムを提供する。
【０００９】
このような構成を採用し、ソースプログラム内の関数の定義情報をチェックすることにより、本発明の目的を達成することができる。
【００１０】
また、本発明は、ソースプログラムと対となる関数の定義情報を入力するステップと、
ソースプログラム内で定義されている関数をソースプログラムと、ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部から呼び出すステップと、
対となる関数の定義情報を関数一覧データーベースから読み込むステップと、
ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定するステップと、
対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するステップと
を有する利用関数チェック方法を提供する。
【００１１】
また、本発明は、コンピュータを、ソースプログラムと対となる関数の定義情報を入力するデータ入力手段と、
ソースプログラム内で定義されている関数をソースプログラムと、ソースプログラム内で定義されている関数の一覧と、チェックを行う関数一覧である関数一覧データベースを保持するデータ保管部から呼び出す手段と、
対となる関数の定義情報を関数一覧データーベースから読み込む関数読み込み手段と、
ソースプログラム内で定義されている関数を検索し一覧化し、その一覧化した関数内に事前に登録してある対で定義しなければならない関数が定義されているか否かを検索し、ソースプログラム内に対で登録すべき関数が存在した場合には、一覧化したソースプログラム内の関数に対応する関数が存在するか否かを判定する対応関数判定手段と、
対応関数判定手段が対応する関数がソースプログラム内に存在しなかったと判断した場合には、ソースプログラム内に定義すべき関数が存在しないことを表示するデータ表示手段として機能させるプログラムを提供する。
【発明の効果】
【００１２】
本発明によれば、対で利用しなければならない関数を定義しているか確認できるようにすることができる。
【発明を実施するための最良の形態】
【００１３】
次に、発明を実施するための形態について図面を参照して説明する。
【００１４】
図１を参照すると、本発明の第１の実施の形態における利用関数チェックシステムは、プログラム制御により動作する演算部１と、情報を記憶するデータ保管部２と、キーボード等のデータ入力部３と、ディスプレイ装置や印刷装置等のデータ表示部４から構成されている。
【００１５】
データ保管部２は、ソースプログラム２１と、関数データベース２２と、定義関数一覧２３、関数確認結果一覧２４を保持する。
【００１６】
ソースプログラム２１は、Ｃ言語やＦＯＲＴＲＡＮ等の高級水準プログラム言語から構成される。
【００１７】
関数データベース２２は、１つの関数名を見出し語として、見出しと定義した関数と対に定義すべき関数名を保持する。
【００１８】
定義関数一覧２３は、ソースプログラム２１内で定義されている関数の名称から構成される。
【００１９】
関数結果一覧２４は、ソースプログラム２１内に定義された関数の一覧と個数、ソースプログラム２１内に定義された関数と対で定義される関数の名、およびソースプログラム２１内で対で定義される関数の個数から構成される。
【００２０】
演算部１は、ソースプログラム読み込み部１１と、関数検索部１２と、定義関数書き出し・読み込み部１３と、関数判定部１４を保持する。
【００２１】
次に、図１〜図３を参照して、本実施の形態における処理動作のフローを詳細に説明する。
【００２２】
まず、図２を参照すると、ユーザは、入力装置３から高水準プログラム言語の入力を行い（図２のステップＡ１）、データ保管部２へソースプログラム２１として保持する（図２のステップＡ２）。
【００２３】
また、ユーザはソースプログラム２１内に対となって登録してあるべき関数の組み合わせ情報を入力装置３から入力し（図２のステップＡ３）、関数一覧データベース２２（図２のステップＡ４）として保持する。関数一覧データベース２２は、例えば、図４に示すようなテーブルにデータを格納する。すなわち、関数ｆｏｐｅｎ（）にはｆｃｌｏｓｅ（）が対で登録すべき関数であり、また、関数ｍａｌｌｏｃ（）にはｆｒｅｅ（）が対で登録すべき関数である。
【００２４】
次に、ソースプログラム読み込み部１１は、データ入力部３から入力のあったデータ保管部２１に保持されているソースプログラム２１を読み込み（図２のステップＡ５およびステップＡ６）、ソースプログラム２１内に記載されてあるプログラムを１ステップずつに分解し（図２のステップＡ７）、関数検索部１２に渡す。
【００２５】
関数検索部１２は、渡されたプログラムの各ステップで定義されているプログラムのうち、ソースプログラム２１を記載した高級水準プログラムで関数となり得る文法をもとに、関数として抜き出し、検索キーワードとして、データ保管部２に保管されてある関数一覧データベース２２を検索し、検索キーとして登録してある関数と対として定義されてあるべき関数を検索する（図２のステップＡ８）。
【００２６】
検索の結果、ソースプログラム２１内に対として定義すべき関数が、関数一覧データベース２２に定義されている場合には、ソースプログラム読み込み部１１から渡された検索キーワードとなった関数と、対でソースプログラムに定義すべき関数を定義関数書き出し・読み込み部１３に渡す。
【００２７】
定義関数書き出し・読み込み部１３は、ソースプログラム２１に定義されてある関数と、関数検索部１２が検索した対で定義すべき関数の名称をデータ保管部２内部の定義関数一覧２３へ書き込む（図２のステップ９）。定義関数一覧２３は、例えば、図５に示すように、関数ｆｏｐｅｎ（）、ｆｃｌｏｓｅ（）、ｍａｌｌｏｃ（）、ｆｒｅｅ（）が格納される。
【００２８】
ソースプログラム読み込み部１１は、すべてのソースプログラム２１を読み込みが終了した時点で（図２のステップ１０）、定義関数書き出し・読み込み部１３に、ソースプログラム２１をすべて読み込んだ旨を通知する。
【００２９】
定義関数書き出し・読み込み部１４は、データ保管部２から定義関数一覧２３を読み込む（図２のステップＡ１１）。
【００３０】
続いて、図３を参照すると、定義関数一覧２３から読み込んだ１つ目の関数と同じ種類の関数の個数を数え、関数確認結果一覧２４に、１つ目の関数の名称と、その関数の工数を記載する（図３のステップＡ１２およびステップ１３）。
【００３１】
次に、対応関数判定部１４は、定義関数一覧２３に、１つ目の関数と対で定義すべき関数の個数を数え、関数確認結果一覧２４に、ソースプログラム２１内に定義されてある関数と対として定義されるべき関数の名称および関数が定義されてある個数を記載する（図３のステップＡ１４とステップＡ１５）。
【００３２】
定義関数一覧２３に記載のある２個目以降のソースプログラム２１に定義されてある関数も同様に、ソースプログラム２１内に定義されてある関数の個数と、対で定義すべき関数の個数を各々数え、結果を関数確認結果一覧２４に記載する。関数確認結果一覧２４は、例えば、図６に示すようなテーブルにデータを格納する。ここでは、関数ｆｏｐｅｎ（）の個数は「４」であり、対となる関数ｆｃｌｏｓｅ（）の個数も「４」であり、また、関数ｍａｌｌｏｃ（）の個数は「３」であり、対となる関数ｆｒｅｅ（）の個数は「２」である。
【００３３】
対応判定関数部１４は、対応関数一覧２３に記載のあるソースプログラム２１内に定義されてある全ての関数に対して、対で定義されるべき関数の個数を確認が完了した後（図３のステップＡ１６）、ソースプログラム２１内に定義してある関数と対に定義すべき関数の個数が一致していない関数の名称をデータ表示部４に表示する（図２のステップＡ１７〜ステップＡ１９）。ここでは、関数ｍａｌｌｏｃ（）の個数は「３」であり、対となる関数ｆｒｅｅ（）の個数は「２」であるので、これらの関数の名称をデータ表示部４に表示する。
【００３４】
本実施の形態によれば、対で定義すべき関数の定義忘れを防止することができる。その理由は、ソースプログラムを元に関数の一覧を作成し、対となる関数がソースプログラム内に確認する機能の提供がなく、対として定義すべき関数の個数確認を行い、定義すべき関数の確認が可能な機能を提供するためである。
【００３５】
また、プログラマが定義するユーザ関数だけでなく、コンパイラが提供するライブラリにおいても、対となる関数の確認を行うことができる。その理由は、Ｌｉｎｔ等のコンパイラ付属のソースコード検査プログラムでは、関数利用時の引数の個数、および引数の型の確認は行うが、対となる関数の確認は行いが、本発明では、対となる関数の定義を入力するデータ入力部と、入力した関数の対となるデータとなる関数一覧データベースを保持するデータ保管部を有することで、チェックを行いたい関数をユーザが定義することが可能な機能を提供するためである。
【００３６】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、上記のシステムの機能を実現するためのプログラムを各部に読込ませて実行することにより各部の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【００３７】
上述する各実施の形態は、各機能が１つのコンピュータシステムとして実現されているシステム構成について説明したが、機能毎に複数の装置などが追加された構成にも適用可能であることはもちろんである。
【図面の簡単な説明】
【００３８】
【図１】本発明の第１の実施形態における利用関数チェックシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態における動作を示す流れ図である。
【図３】本発明の第１の実施形態における動作を示す流れ図である。
【図４】関数一覧データベース２２の構成の一例を示す図である。
【図５】定義関数一覧２３の構成の一例を示す図である。
【図６】関数結果一覧２４の構成の一例を示す図である。
【図７】従来例のシステム構成の一例を示す図である。
【符号の説明】
【００３９】
１    演算部
２    データ保管部
３    データ入力部
４    データ表示部
１１  ソースプログラム読み込み部
１２  関数検索部
１３  定義関数書き出し・読み込み部
１４  対応関数判定部
２１  ソースプログラム
２２  関数一覧データベース
２３  定義関数一覧
２４  関数確認結果一覧
【図１】
2007141169.tif 000003
【図２】
2007141169.tif 000004
【図３】
2007141169.tif 000005
【図４】
2007141169.tif 000006
【図５】
2007141169.tif 000007
【図６】
2007141169.tif 000008
【図７】
2007141169.tif 000009