(57)【要約】      （修正有）【課題】実行アドレスのデータに基づき、簡易な構成でプログラムのＣ１カバレッジを測定できるＣ１カバレッジ測定装置を提供する。【解決手段】オブジェクトプログラム６２を記憶するハードディスク６０ａと、実行アドレスリストを取得する実行アドレスリスト取得部５２と、オブジェクトプログラム６２の中から１以上の分岐命令と１以上の分岐命令の各々の複数の分岐先とを抽出し、１以上の分岐命令の各々に対応する分岐命令アドレスと複数の分岐先の各々に対応する分岐先アドレスとを求めるとともに、分岐命令と分岐先とを対にした分岐命令アドレスと分岐先アドレスとを記録したオブジェクト構文解析データを生成するオブジェクト構文解析部５４と、実行アドレスリストとオブジェクト構文解析データとに基づきオブジェクトＣ１カバレッジデータを生成して、オブジェクトプログラムのＣ１カバレッジを算定するオブジェクトＣ１算定部５６とを備える。【選択図】図１
2008310407.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記オブジェクトプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定装置であって、
前記オブジェクトプログラムと同一のオブジェクトプログラムを記憶する記憶手段と、
前記実行アドレスリストを取得する取得手段と、
前記記憶手段により記憶されたオブジェクトプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令アドレスと前記複数の分岐先の各々に対応する分岐先アドレスとを求めるとともに、分岐命令と分岐先とを対にした前記分岐命令アドレスと前記分岐先アドレスとを記録したオブジェクト構文解析データを生成するオブジェクト構文解析手段と、
前記取得手段により取得された実行アドレスリストと前記オブジェクト構文解析手段により生成されたオブジェクト構文解析データとに基づき前記分岐命令アドレスと前記分岐先アドレスとの対が前記実行アドレスリストに存在するか否かを判定し、前記分岐命令アドレスと前記分岐先アドレスとの対の各々について各々が分岐命令と分岐先として実行されたか否かを示す実行状態を記録したオブジェクトＣ１カバレッジデータを生成するとともに、前記オブジェクトＣ１カバレッジデータに基づき、前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分母とし、少なくとも１回実行された前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分子として前記オブジェクトプログラムのＣ１カバレッジを算定するオブジェクトＣ１算定手段と、
を備えることを特徴とするＣ１カバレッジ測定装置。
【請求項２】
前記記憶手段により記憶されたオブジェクトプログラムと前記オブジェクトＣ１算定手段により生成されたオブジェクトＣ１カバレッジデータとに基づき、前記オブジェクトプログラムと、前記オブジェクトプログラムに対応する分岐先アドレスと、前記分岐先アドレスに対応する前記分岐命令アドレスとの対の数と、前記分岐先アドレスに対応する実行状態とを並べたオブジェクトプログラムリストを生成する表示データ生成手段と、
前記表示データ生成手段により生成されたオブジェクトプログラムリストを表示する表示手段とを備えることを特徴とする請求項１記載のＣ１カバレッジ測定装置。
【請求項３】
ソースプログラムをコンパイルして得られるオブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記ソースプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定装置であって、
前記ソースプログラムと同一のソースプログラム、前記オブジェクトプログラムと同一のオブジェクトプログラム、及び前記ソースプログラムをコンパイルする際に得られる前記ソースプログラムと前記オブジェクトプログラムとの対応情報を記憶する記憶手段と、
前記実行アドレスリストを取得する取得手段と、
前記記憶手段により記憶されたソースプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令行番号と前記複数の分岐先の各々に対応する分岐先行番号とを求めるとともに、前記記憶手段により記憶されたオブジェクトプログラム及び対応情報に基づき、分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号とそれぞれに対応するオブジェクトプログラムのアドレスを記録したソース構文解析データを生成するソース構文解析手段と、
前記取得手段により取得された実行アドレスリストと前記ソース構文解析手段により生成されたソース構文解析データとに基づき分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号にそれぞれ対応するオブジェクトプログラムのアドレスが前記実行アドレスリストに存在するか否かを判定し、前記分岐命令行番号と前記分岐先行番号の対の各々について分岐命令と分岐先として実行されたか否かを示す実行状態を記録したソースＣ１カバレッジデータを生成するとともに、前記ソースＣ１カバレッジデータに基づき、前記分岐命令行番号と前記分岐先行番号の対の総数を分母とし、少なくとも１回実行された前記分岐命令行番号と前記分岐先行番号の対の総数を分子として前記ソースプログラムのＣ１カバレッジを算定するソースＣ１算定手段と、
を備えることを特徴とするＣ１カバレッジ測定装置。
【請求項４】
前記記憶手段により記憶されたソースプログラムと前記ソースＣ１算定手段により生成されたソースＣ１カバレッジデータとに基づき、前記ソースプログラムと、前記ソースプログラムに対応する分岐先行番号と、前記分岐先行番号に対応する前記分岐命令行番号との対の数と、前記分岐先行番号に対応する実行状態とを並べたソースプログラムリストを生成する表示データ生成手段と、
前記表示データ生成手段により生成されたソースプログラムリストを表示する表示手段とを備えることを特徴とする請求項３記載のＣ１カバレッジ測定装置。
【請求項５】
前記記憶手段は、第１ソースプログラム、前記第１ソースプログラムに基づきソース構文解析手段により生成された第１ソース構文解析データ、及び前記実行アドレスリストと前記第１ソース構文解析データとに基づき前記ソースＣ１算定手段により生成された第１ソースＣ１カバレッジデータを記憶し、
さらに、前記記憶手段に新たに第２ソースプログラムが記憶された場合に、前記第１ソースプログラムと前記第２ソースプログラムとが実質的に同一であるか否かを判定し、所定の条件に基づき前記第１ソースＣ１カバレッジデータの消去を制御する判定手段を備えることを特徴とする請求項３又は請求項４記載のＣ１カバレッジ測定装置。
【請求項６】
外部信号を入力する外部入力手段を備え、
前記判定手段は、前記第１ソースプログラムと前記第２ソースプログラムとが実質的に同一でない場合に同一でない旨を前記表示手段に出力し、前記外部入力手段により入力された外部信号に基づき前記第１ソースＣ１カバレッジデータの消去を制御することを特徴とする請求項５記載のＣ１カバレッジ測定装置。
【請求項７】
前記判定手段は、前記第１ソースプログラムを階層構造で構成する複数の関数の少なくとも１つが変更され且つ変更された関数の前記第１ソースＣ１カバレッジデータが消去された場合に、さらに前記第１ソースＣ１カバレッジデータのうち前記変更された関数を呼び出す上位関数の呼び出し命令行が分岐先として対となる分岐命令とともに実行されたか否かを示す実行状態を消去することを特徴とする請求項６記載のＣ１カバレッジ測定装置。
【請求項８】
オブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記オブジェクトプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定方法であって、
前記オブジェクトプログラムと同一のオブジェクトプログラムを記憶する記憶ステップと、
前記実行アドレスリストを取得する取得ステップと、
前記記憶ステップにより記憶されたオブジェクトプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令アドレスと前記複数の分岐先の各々に対応する分岐先アドレスとを求めるとともに、分岐命令と分岐先とを対にした前記分岐命令アドレスと前記分岐先アドレスとを記録したオブジェクト構文解析データを生成するオブジェクト構文解析ステップと、
前記取得ステップにより取得された実行アドレスリストと前記オブジェクト構文解析ステップにより生成されたオブジェクト構文解析データとに基づき前記分岐命令アドレスと前記分岐先アドレスとの対が前記実行アドレスリストに存在するか否かを判定し、前記分岐命令アドレスと前記分岐先アドレスとの対の各々について各々が分岐命令と分岐先として実行されたか否かを示す実行状態を記録したオブジェクトＣ１カバレッジデータを生成するとともに、前記オブジェクトＣ１カバレッジデータに基づき、前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分母とし、少なくとも１回実行された前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分子として前記オブジェクトプログラムのＣ１カバレッジを算定するオブジェクトＣ１算定ステップと、
を備えることを特徴とするＣ１カバレッジ測定方法。
【請求項９】
ソースプログラムをコンパイルして得られるオブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記ソースプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定方法であって、
前記ソースプログラムと同一のソースプログラム、前記オブジェクトプログラムと同一のオブジェクトプログラム、及び前記ソースプログラムをコンパイルする際に得られる前記ソースプログラムと前記オブジェクトプログラムとの対応情報を記憶する記憶ステップと、
前記実行アドレスリストを取得する取得ステップと、
前記記憶ステップにより記憶されたソースプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令行番号と前記複数の分岐先の各々に対応する分岐先行番号とを求めるとともに、前記記憶ステップにより記憶されたオブジェクトプログラム及び対応情報に基づき、分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号とそれぞれに対応するオブジェクトプログラムのアドレスを記録したソース構文解析データを生成するソース構文解析ステップと、
前記取得ステップにより取得された実行アドレスリストと前記ソース構文解析ステップにより生成されたソース構文解析データとに基づき分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号にそれぞれ対応するオブジェクトプログラムのアドレスが前記実行アドレスリストに存在するか否かを判定し、前記分岐命令行番号と前記分岐先行番号の対の各々について分岐命令と分岐先として実行されたか否かを示す実行状態を記録したソースＣ１カバレッジデータを生成するとともに、前記ソースＣ１カバレッジデータに基づき、前記分岐命令行番号と前記分岐先行番号の対の総数を分母とし、少なくとも１回実行された前記分岐命令行番号と前記分岐先行番号の対の総数を分子として前記ソースプログラムのＣ１カバレッジを算定するソースＣ１算定ステップと、
を備えることを特徴とするＣ１カバレッジ測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムの開発におけるテストの十分性を評価するＣ１カバレッジ測定装置及びＣ１カバレッジ測定方法に関する。
【背景技術】
【０００２】
従来から、テストによる実行が対象プログラムをどれだけ網羅したかを示す割合であるテストカバレッジは、信頼性を示す指標の一つとして開発の場面等で利用されている。テストカバレッジの中でも、Ｃ１カバレッジ（分岐網羅率）は、分岐命令の分岐方向数の総数のうち、テストで少なくとも１回実行された分岐方向数の割合を示す。
【０００３】
例えば特許文献１には、プログラムの信頼性を上げるためのマイクロプロセッサ用デバッグ装置が記載されている。図２１は、特許文献１に記載されたマイクロプロセッサ用デバッグ装置の要部構成図を示す。このマイクロプロセッサ用デバッグ装置は主に、ターゲットＣＰＵ１、カバレッジメモリ２、デバッグ装置のＣＰＵ８、ゲートメモリ１３、ＪＫフリップフロップ１５、ラッチ１６で構成されている。
【０００４】
ターゲットＣＰＵ１は、デバッグする対象のマイクロプロセッサである。カバレッジメモリ２は、データが１ビット幅のメモリである。ＣＰＵ８は、３ステート・バッファ４と３ステートバッファ６とを選択的に制御する。ゲートメモリ１３は、データがｎ＋２ビット幅のメモリであり、その出力はＪＫフリップフロップ１５に接続される。またラッチ１６は、カバレッジメモリ２のアドレスを与える。
【０００５】
次に、このマイクロプロセッサ用デバッグ装置の動作を説明する。ゲートメモリ１３は、プログラム中の条件分岐命令と、各条件分岐命令に対応した成立時と不成立時のアドレス及び対応する所定の信号を記憶する。また、カバレッジメモリ２も、条件分岐命令の成立時アドレス及び不成立アドレスを記憶する。
【０００６】
ターゲットＣＰＵ１がプログラムの実行を開始し、条件分岐命令を実行したとする。このときゲートメモリ１３の出力とＯＰＣに基づき、ＪＫフリップフロップ１５の出力Ｑは１となり、ラッチ１６の出力は０となる。
【０００７】
次に条件が成立又は不成立したとすると、カバレッジメモリ２の当該ビットをクリアし、ゲートメモリ１３の出力とＯＰＣに基づき、ＪＫフリップフロップ１５の出力Ｑは０となる。なお、ＪＫフリップフロップ１５の出力Ｑが１でない場合は、カバレッジメモリ２の内容が１から０へとは変化しない。
【０００８】
以上のようにしてターゲットプログラムのテストが終了した後、カバレッジメモリ２の内容を調べ、メモリに１が残っている場所が未実行の分岐先であることがわかる。したがって、このマイクロプロセッサ用デバッグ装置によれば、比較的簡単な構成でリアルタイムによる正確なカバレッジを測定することができる。
【特許文献１】特公平５−３１１７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述したマイクロプロセッサ用デバッグ装置は、ゲートメモリやカバレッジメモリといった特殊なメモリが必要となる。また、ソースプログラムが変更された場合に、条件分岐命令や成立時と不成立時の分岐先アドレスを新たにゲートメモリやカバレッジメモリに設定する必要があり、柔軟かつ迅速に対応することが困難となる。さらに、それらのメモリへの書き込み等を制御するＣＰＵが必要となり、構成が複雑になるとともに、コストの増大といった問題も招来する。
【００１０】
本発明は上述した従来技術の問題点を解決するもので、コンピュータの実行アドレスのデータに基づき、簡易な構成で様々なコンピュータプログラムのＣ１カバレッジを測定できるＣ１カバレッジ測定装置及びＣ１カバレッジ測定方法を提供することを課題とする。
【課題を解決するための手段】
【００１１】
本発明に係るＣ１カバレッジ測定装置は、上記課題を解決するために、第１の発明は、オブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記オブジェクトプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定装置であって、前記オブジェクトプログラムと同一のオブジェクトプログラムを記憶する記憶手段と、前記実行アドレスリストを取得する取得手段と、前記記憶手段により記憶されたオブジェクトプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令アドレスと前記複数の分岐先の各々に対応する分岐先アドレスとを求めるとともに、分岐命令と分岐先とを対にした前記分岐命令アドレスと前記分岐先アドレスとを記録したオブジェクト構文解析データを生成するオブジェクト構文解析手段と、前記取得手段により取得された実行アドレスリストと前記オブジェクト構文解析手段により生成されたオブジェクト構文解析データとに基づき前記分岐命令アドレスと前記分岐先アドレスとの対が前記実行アドレスリストに存在するか否かを判定し、前記分岐命令アドレスと前記分岐先アドレスとの対の各々について各々が分岐命令と分岐先として実行されたか否かを示す実行状態を記録したオブジェクトＣ１カバレッジデータを生成するとともに、前記オブジェクトＣ１カバレッジデータに基づき、前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分母とし、少なくとも１回実行された前記分岐命令アドレスと前記分岐先アドレスとの対の総数を分子として前記オブジェクトプログラムのＣ１カバレッジを算定するオブジェクトＣ１算定手段とを備えることを特徴とする。
【００１２】
第２の発明は、ソースプログラムをコンパイルして得られるオブジェクトプログラムが外部のコンピュータにより実行された際に生成された実行アドレスリストに基づき前記ソースプログラムのＣ１カバレッジを測定するＣ１カバレッジ測定装置であって、前記ソースプログラムと同一のソースプログラム、前記オブジェクトプログラムと同一のオブジェクトプログラム、及び前記ソースプログラムをコンパイルする際に得られる前記ソースプログラムと前記オブジェクトプログラムとの対応情報を記憶する記憶手段と、前記実行アドレスリストを取得する取得手段と、前記記憶手段により記憶されたソースプログラムの中から１以上の分岐命令と前記１以上の分岐命令の各々の複数の分岐先とを抽出し、前記１以上の分岐命令の各々に対応する分岐命令行番号と前記複数の分岐先の各々に対応する分岐先行番号とを求めるとともに、前記記憶手段により記憶されたオブジェクトプログラム及び対応情報に基づき、分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号とそれぞれに対応するオブジェクトプログラムのアドレスを記録したソース構文解析データを生成するソース構文解析手段と、前記取得手段により取得された実行アドレスリストと前記ソース構文解析手段により生成されたソース構文解析データとに基づき分岐命令と分岐先とを対にした前記分岐命令行番号と前記分岐先行番号にそれぞれ対応するオブジェクトプログラムのアドレスが前記実行アドレスリストに存在するか否かを判定し、前記分岐命令行番号と前記分岐先行番号の対の各々について分岐命令と分岐先として実行されたか否かを示す実行状態を記録したソースＣ１カバレッジデータを生成するとともに、前記ソースＣ１カバレッジデータに基づき、前記分岐命令行番号と前記分岐先行番号の対の総数を分母とし、少なくとも１回実行された前記分岐命令行番号と前記分岐先行番号の対の総数を分子として前記ソースプログラムのＣ１カバレッジを算定するソースＣ１算定手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明の第１の発明によれば、オブジェクトプログラムが外部のコンピュータにより実行される際にトレースされた実行アドレスのデータに基づき、簡易な構成でオブジェクトプログラムのＣ１カバレッジを測定できる。
【００１４】
本発明の第２の発明によれば、ソースプログラムをコンパイルして得られたオブジェクトプログラムが外部のコンピュータにより実行される際にトレースされた実行アドレスのデータに基づき、簡易な構成でソースプログラムのＣ１カバレッジを測定できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明のＣ１カバレッジ測定装置の実施の形態を、図面に基づいて詳細に説明する。
【実施例１】
【００１６】
以下、本発明の実施例について図面を参照しながら説明する。図１は、本発明の実施例１のＣ１カバレッジ測定装置の構成を示すブロック図である。また図２は、本発明の実施例１のＣ１カバレッジ測定装置が測定すべきオブジェクトプログラムを実行するＣＰＵを有するコンピュータ２０の詳細な構成を示すブロック図である。
【００１７】
まず、本実施の形態の構成を説明する。本実施例のＣ１カバレッジ測定装置は、パソコン４０ａ内に設けられたＣＰＵ５０ａとハードディスク６０ａとにより構成され、外部のコンピュータ２０の有する実行アドレストレース部２２から取得した実行アドレスリストに基づきオブジェクトプログラムのＣ１カバレッジを測定する。
【００１８】
ここで、実行アドレストレース部２２は、オブジェクトプログラムが外部のコンピュータ２０により実行された際に実行アドレスをトレースして実行アドレスリストを生成する。この実行アドレスリストの生成については後述する。
【００１９】
ハードディスク６０ａは、本発明の記憶手段に対応し、外部のコンピュータ２０が実行するオブジェクトプログラムと同一のオブジェクトプログラム６２を記憶する。
【００２０】
ＣＰＵ５０ａは、図１に示すように、実行アドレスリスト取得部５２、オブジェクト構文解析部５４、オブジェクトＣ１算定部５６、及び表示データ生成部５８ａで構成されている。
【００２１】
実行アドレスリスト取得部５２は、本発明の取得手段に対応し、実行アドレストレース部２２により生成された実行アドレスリストを取得する。さらに実行アドレスリスト取得部５２は、取得した実行アドレスリストをオブジェクトＣ１算定部５６に対して出力する。
【００２２】
オブジェクト構文解析部５４は、本発明のオブジェクト構文解析手段に対応し、ハードディスク６０ａにより記憶されたオブジェクトプログラム６２の中から１以上の分岐命令と１以上の分岐命令の各々の複数の分岐先とを抽出し、１以上の分岐命令の各々に対応する分岐命令アドレスと複数の分岐先の各々に対応する分岐先アドレスを求めるとともに、分岐命令と分岐先とを対にした分岐命令アドレスと分岐先アドレスとを記録したオブジェクト構文解析データを生成する。
【００２３】
オブジェクトＣ１算定部５６は、本発明のオブジェクトＣ１算定手段に対応し、実行アドレスリスト取得部５２により取得された実行アドレスリストとオブジェクト構文解析部５４により生成されたオブジェクト構文解析データとに基づき分岐命令アドレスと分岐先アドレスとの対が実行アドレスリストに存在するか否かを判定し、分岐命令アドレスと分岐先アドレスとの対の各々について各々が分岐命令と分岐先として実行されたか否かを示す実行状態を記録したオブジェクトＣ１カバレッジデータを生成するとともに、オブジェクトＣ１カバレッジデータに基づき、分岐命令アドレスと分岐先アドレスとの対の総数を分母とし、少なくとも１回実行された分岐命令アドレスと分岐先アドレスとの対の総数を分子としてオブジェクトプログラムのＣ１カバレッジを算定する。
【００２４】
表示データ生成部５８ａは、本発明の表示データ生成手段に対応し、ハードディスク６０ａにより記憶されたオブジェクトプログラム６２とオブジェクトＣ１算定部５６により生成されたオブジェクトＣ１カバレッジデータとに基づき、オブジェクトプログラム６２と、オブジェクトプログラム６２に対応する分岐先アドレスと、分岐先アドレスに対応する分岐命令アドレスとの対の数と、分岐先アドレスに対応する実行状態とを並べたオブジェクトプログラムリストを生成する。
【００２５】
ディスプレー７０は、本発明の表示手段に対応し、表示データ生成部５８ａにより生成されたオブジェクトプログラムリストを表示する。
【００２６】
次に図２を用いて、外部のコンピュータ２０の詳細な構成を説明する。コンピュータ２０は、実行アドレストレース部２２、ＣＰＵ２４、メモリ２５、メモリ２７、通信ＩＦ（インターフェース）２８、及び入出力ＩＦ（インターフェース）２９で構成されている。
【００２７】
実行アドレストレース部２２については、上述した通りであり、Ｃ１カバレッジ測定にのみ用いられるものではなく、プログラムの一般的なデバッグ作業等にも用いられる。
【００２８】
メモリ２５は、実行すべきオブジェクトプログラム２６を記憶している。このオブジェクトプログラム２６は、上述したオブジェクトプログラム６２と同一のプログラムである。操作人は、例えば通信ＩＦ２８や入出力ＩＦ２９を用いてメモリ２５にオブジェクトプログラム２６を記憶させ、又はオブジェクトプログラム２６を取り出すことができる。なお、コンピュータ２０は、メモリ２５のみならず、他の用途に用いるメモリ２７のように、複数のメモリを有することができる。
【００２９】
ＣＰＵ２４は、メモリ２５からオブジェクトプログラム２６を取り出して実行する。その際、実行アドレストレース部２２は、実行アドレスをトレースして実行アドレスリストを生成する。
【００３０】
生成された実行アドレスリストは、アダプタ３０及び通信インターフェース４２を介して実行アドレスリスト取得部５２に送られる。ここでアダプタ３０は、例えばＩＣＥ（インサーキットエミュレータ）である。また、通信インターフェース４２は、例えばパソコン４０ａに内蔵されたＵＳＢ通信インターフェースである。
【００３１】
次に、上述のように構成された本実施の形態の作用を説明する。図３は、本実施例の形態のＣ１カバレッジ測定装置がＣ１カバレッジを測定する対象となるオブジェクトプログラムの１例を示すフローチャートである。このオブジェクトプログラムは、１００番地と１０１番地に分岐命令が設けられている。１００番地の分岐命令は、１０１番地と１０３番地とを分岐先に設定し、条件により分岐先が決定される。また１０１番地の分岐命令は、１０２番地と１０３番地とを分岐先に設定し、条件により分岐先を決定する。なお、１０３番地は、いずれの分岐先が選択された場合でも実行される。
【００３２】
図３に示すように、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０２番地を分岐先として選択した場合を（ａ）、１００番地の分岐命令で１０３番地を分岐先として選択した場合を（ｂ）、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０３番地を分岐先として選択した場合を（ｃ）として説明する。
【００３３】
図４は、本実施例の形態のＣ１カバレッジ測定装置がＣ１カバレッジを測定する対象となるオブジェクトプログラム６２を示す。上述した図３は、このオブジェクトプログラムをフローチャート化したものである。１００番地のオブジェクト命令文は、分岐命令であり、１０１番地又は１０３番地のいずれかを選択して分岐する。１０１番地のオブジェクト命令文も分岐命令であり、１０２番地又は１０３番地のいずれかを選択して分岐する。図４において、１０２番地及び１０３番地のオブジェクト命令文は空白となっているが、実際には何らかの命令文であり、そのアドレスにおいて実行される。このオブジェクトプログラム６２は、ハードディスク６０ａに記憶されている。
【００３４】
図５は、実行アドレスリスト取得部５２により取得された実行アドレスリストの例である。図５（ａ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０２番地を分岐先として選択した場合を示す。また図５（ｂ）は、１００番地の分岐命令で１０３番地を分岐先として選択した場合を示す。また図５（ｃ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０３番地を分岐先として選択した場合を示す。すなわち実行アドレスリストは、実際に実行されたアドレスを実行された順番に並べたものである。実行アドレスリスト取得部５２は、取得した実行アドレスリストをオブジェクトＣ１算定部５６に出力する。
【００３５】
図６は、オブジェクト構文解析部５４により生成されたオブジェクト構文解析データである。オブジェクト構文解析部５４は、上述したように、ハードディスク６０ａにより記憶されたオブジェクトプログラム６２の中から分岐命令と分岐先を抽出し、対応するアドレスを求めるとともに、分岐命令と分岐先とを対にする。ここでは、オブジェクト構文解析部５４は、図４に示したオブジェクトプログラム６２の中から分岐命令アドレスである１００番地と分岐先アドレスである１０１番地及び１０３番地とを対にするとともに、分岐命令アドレスである１０１番地と分岐先アドレスである１０２番地及び１０３番地とを対にして記録したオブジェクト構文解析データを生成する。もちろん、オブジェクトプログラム中に他に分岐命令文があれば、それらに対応するアドレスも対にして記録する。オブジェクト構文解析部５４は、生成したオブジェクト構文解析データをオブジェクトＣ１算定部５６に出力する。
【００３６】
図７は、オブジェクトＣ１算定部５６により生成されたオブジェクトＣ１カバレッジデータである。図７（ａ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０２番地を分岐先として選択した場合を示す。この場合、１０３番地は、１０２番地を実行した後に実行されてはいるが、１００番地又は１０１番地の分岐先として実行されたわけではないので、実行回数に含まれない。また図７（ｂ）は、１００番地の分岐命令で１０３番地を分岐先として選択した場合を示す。また図７（ｃ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０３番地を分岐先として選択した場合を示す。
【００３７】
なお、オブジェクトＣ１カバレッジデータは、実行回数ではなく実行有無を実行状態として記録してもよい。しかしながら、実行回数を記録することにより、全体の実行回数に対するＣ１カバレッジや、通りやすい分岐先を解析することができる。以下にオブジェクトＣ１算定部５６がオブジェクトＣ１カバレッジデータを生成するための動作を示す。
【００３８】
図８は、本実施例の形態のＣ１カバレッジ測定装置のオブジェクトＣ１算定部５６の動作を示すフローチャート図である。ここでは、図３に示すオブジェクトプログラムについて、（ａ）の１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０２番地を分岐先として選択した場合について説明する。したがって、オブジェクトＣ１算定部５６は、図５（ａ）に示す実行アドレスリストを入力されたものとする。
【００３９】
まず、オブジェクトＣ１算定部５６は、実行アドレスリストの最初のアドレスを得る（ステップＳ１０１）。図５（ａ）より、最初のアドレスは、１００番地である。
【００４０】
次に、オブジェクト構文解析データを用いて、アドレスの種別を得る（ステップＳ１０３）。図６に示すオブジェクト構文解析データより、１００番地は、分岐命令となる分岐命令アドレスであることがわかる。
【００４１】
次にオブジェクトＣ１算定部５６は、１００番地の種別が分岐命令であるため（ステップＳ１０５）、１００番地を「直前の分岐命令」として記憶する（ステップＳ１０７）。なお、ステップＳ１０５において、種別が分岐命令でも分岐先でもない場合には、次のステップＳ１２１に進む。
【００４２】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ１２１）。図５（ａ）より、次のアドレスは、１０１番地である。その後、再びステップＳ１０３に戻る。
【００４３】
ステップＳ１０３において、オブジェクト構文解析データを用いて１０１番地の種別を得る。図６に示すオブジェクト構文解析データより、１０１番地は、分岐命令アドレスであるとともに、分岐先アドレスであることがわかる。
【００４４】
次にオブジェクトＣ１算定部５６は、１０１番地の種別が分岐命令であるとともに分岐先であるため（ステップＳ１０５）、「直前の分岐命令」として記憶している１００番地が１０１番地と対となる分岐命令か否かを判断する（ステップＳ１１５）。図６に示すオブジェクト構文解析データより、「直前の分岐命令」として記憶している１００番地は、分岐先としての１０１番地と対になる分岐命令である。したがって、分岐先である１０１番地の実行回数を１回足す（ステップＳ１１７）。その後、「直前の分岐命令」の情報を消し（ステップＳ１１８）、１０１番地を新たな「直前の分岐命令」として記憶する（ステップＳ１１９）。したがって、「１００番地が直前の分岐命令である」とする情報は消去される。
【００４５】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ１２１）。図５（ａ）より、次のアドレスは、１０２番地である。その後、再びステップＳ１０３に戻る。
【００４６】
ステップＳ１０３において、オブジェクト構文解析データを用いて１０２番地の種別を得る。図６に示すオブジェクト構文解析データより、１０２番地は、分岐先となる分岐先アドレスであることがわかる。
【００４７】
次にオブジェクトＣ１算定部５６は、１０２番地の種別が分岐先であるため（ステップＳ１０５）、「直前の分岐命令」として記憶している１０１番地が１０２番地と対となる分岐命令か否かを判断する（ステップＳ１０９）。図６に示すオブジェクト構文解析データより、「直前の分岐命令」として記憶している１０１番地は、１０２番地と対になる分岐命令である。したがって、分岐先である１０２番地の実行回数を１回足す（ステップＳ１１１）。その後、「直前の分岐命令」の情報を消す（ステップＳ１１３）。したがって、「１０１番地が直前の分岐命令である」とする情報は消去される。
【００４８】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ１２１）。図５（ａ）より、次のアドレスは、１０３番地である。その後、再びステップＳ１０３に戻る。
【００４９】
ステップＳ１０３において、オブジェクト構文解析データを用いて１０３番地の種別を得る。図６に示すオブジェクト構文解析データより、１０３番地は、分岐先となる分岐先アドレスであることがわかる。
【００５０】
次にオブジェクトＣ１算定部５６は、１０３番地の種別が分岐先であるため（ステップＳ１０５）、「直前の分岐命令」が１０３番地と対となる分岐命令か否かを判断する（ステップＳ１０９）。ところが、ステップＳ１１３において「直前の分岐命令」の情報は消去されているので、「直前の分岐命令」は存在しない。したがって、「直前の分岐命令」と１０３番地とは対にならず、ステップＳ１２１に進む。
【００５１】
次に、ステップＳ１２１で実行アドレスリストの次のアドレスを得るが、実行アドレスリストは１０３番地で終了しているので、オブジェクトＣ１算定部５６は、オブジェクトＣ１カバレッジデータの生成を終了する。
【００５２】
なお、図３の例にはないが、ステップＳ１１５において、「直前の分岐命令」が対となる分岐命令でない場合には、ステップＳ１１９へ進む。
【００５３】
オブジェクトＣ１算定部５６は、以上のような動作を経て図７（ａ）に示すオブジェクトＣ１カバレッジデータを生成する。すなわち、オブジェクトＣ１算定部５６は、実行アドレスリスト取得部５２により取得された実行アドレスリストとオブジェクト構文解析５４により生成されたオブジェクト構文解析データとに基づき、ステップＳ１０１からステップＳ１２１の手順により、分岐命令アドレスと分岐先アドレスとの対が実行アドレスリストに存在するか否かを判定するとともに、分岐命令アドレスと分岐先アドレスとの対の各々について各々が分岐命令と分岐先として実行されたか否かを示す実行状態を記録したオブジェクトＣ１カバレッジデータを生成する。
【００５４】
さらにオブジェクトＣ１算定部５６は、オブジェクトＣ１カバレッジデータに基づき、分岐命令アドレスと分岐先アドレスとの対の総数を分母とし、少なくとも１回実行された分岐命令アドレスと分岐先アドレスとの対の総数を分子としてオブジェクトプログラムのＣ１カバレッジを算定する。図７（ａ）に示すように、分岐命令アドレスと分岐先アドレスとの対の総数は、１００番地と１０１番地、１００番地と１０３番地、１０１番地と１０２番地、１０１番地と１０３番地の４つであるため、分母は４となる。また、少なくとも１回実行された分岐命令アドレスと分岐先アドレスとの対の総数は、１００番地と１０１番地、１０１番地と１０２番地の２つの対であるので、分子は２となる。したがって、Ｃ１カバレッジは、２／４＝５０％となる。仮に、テストを２回、3回と繰り返し、１００番地と１０１番地の対や１０１番地と１０２番地の対の実行回数が２、３と増加したとしても、１００番地と１０３番地の対や１０１番地と１０３番地の対の実行回数が０である限り、分子は２のままであるため、Ｃ１カバレッジは５０％である。その後、１００番地と１０３番地の対及び１０１番地と１０３番地の対のいずれか一方が1回でも実行された場合には、少なくとも１回実行された分岐命令アドレスと分岐先アドレスとの対の総数は３になるので、Ｃ１カバレッジは７５％となる。１００番地と１０３番地の対及び１０１番地と１０３番地の対の両方が実行された場合には、Ｃ１カバレッジは１００％となる。
【００５５】
オブジェクトＣ１算定部５６は、生成したオブジェクトＣ１カバレッジデータを表示データ生成部５８ａに出力する。表示データ生成部５８ａは、ハードディスク６０ａにより記憶されたオブジェクトプログラム６２とオブジェクトＣ１算定部５６により生成されたオブジェクトＣ１カバレッジデータとに基づき、オブジェクトプログラム６２と、オブジェクトプログラム６２に対応する分岐先アドレスと、分岐先アドレスに対応する分岐命令アドレスとの対の数と、分岐先アドレスに対応する実行状態とを並べたオブジェクトプログラムリストを生成する。
【００５６】
図９は、表示データ生成部５８ａにより生成されたオブジェクトプログラムリストを示す。図９（ａ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０２番地を分岐先として選択した場合を示す。分岐先アドレスである１０３番地に対応する分岐命令アドレスとの対の数は、１００番地を分岐命令とする場合と１０１番地を分岐命令とする場合があるので、２つとなる。「うち実行した数」の欄には、分岐先アドレスに対応する実行状態として、分岐命令アドレスとの対のうち、実行された対の数が記載される。
【００５７】
また図９（ｂ）は、１００番地の分岐命令で１０３番地を分岐先として選択した場合を示す。また図９（ｃ）は、１００番地の分岐命令で１０１番地を分岐先として選択し、且つ１０１番地の分岐命令で１０３番地を分岐先として選択した場合を示す。
【００５８】
したがって、図９に示すように、オブジェクトプログラムリストの「分岐命令アドレスとの対の数」の欄の合計を分母とし、「うち実行した数」の欄の合計を分子とすることにより、Ｃ１カバレッジを求めることができる。
【００５９】
表示データ生成部５８ａは、生成したオブジェクトプログラムリストをディスプレー７０に出力する。ディスプレー７０は、オブジェクトプログラムリストを表示する。
【００６０】
上述のとおり、本発明の実施例１の形態に係るＣ１カバレッジ測定装置によれば、オブジェクトプログラムが外部のコンピュータ２０により実行される際にトレースされた実行アドレスのデータに基づき、簡易な構成でオブジェクトプログラムのＣ１カバレッジを測定できる。
【００６１】
対象となるコンピュータ２０が実行アドレストレース部２２を有していれば、従来技術で説明したようなゲートメモリやカバレッジメモリといった特殊なメモリを必要とせず、実行アドレスリストを通信するアダプタ３０又はその機能を有するＩＣＥと、一般的なパソコンの構成でＣ１カバレッジを測定できる。
【００６２】
また、オブジェクト構文解析部５４を備えるので、ハードディスク６０ａに記憶されたオブジェクトプログラム６２が変更された場合でも、即座に対応することができる。
【００６３】
さらに、表示データ生成部５８ａを備えるので、オブジェクトプログラムと並べて、各分岐先アドレスに対する分岐命令との対の数や、分岐命令アドレスとの対のうち実行された対の数を表示することができ、異なる分岐命令の分岐先が同一である場合にも厳密にＣ１カバレッジを求めることができる。また、Ｃ１カバレッジを求めるための分母と分子の数を一目で確認することができる。
【実施例２】
【００６４】
図１０は、本発明の実施例２のＣ１カバレッジ測定装置の構成を示すブロック図である。まず、本実施の形態の構成を説明する。本実施例のＣ１カバレッジ測定装置は、パソコン４０ｂ内に設けられたＣＰＵ５０ｂとハードディスク６０ｂとにより構成され、外部のコンピュータ２０の有する実行アドレストレース部２２から取得した実行アドレスリストに基づきソースプログラムのＣ１カバレッジを測定する。
【００６５】
ここで、実行アドレストレース部２２は、ソースプログラムをコンパイルして得られるオブジェクトプログラムが外部のコンピュータ２０により実行された際に実行アドレスをトレースして実行アドレスリストを生成する。
【００６６】
ハードディスク６０ｂは、本発明の記憶手段に対応し、外部のコンピュータ２０が実行するオブジェクトプログラムと同一のオブジェクトプログラム６２、オブジェクトプログラム６２の基となるソースプログラム６４、及びソース／オブジェクト対応情報６６を記憶する。ここで、ソース／オブジェクト対応情報６６は、ソースプログラム６４をコンパイルしてオブジェクトプログラム６２が得られたときに作成されるものであり、ソースプログラム６４とオブジェクトプログラム６２との対応情報を示すものである。
【００６７】
ＣＰＵ５０ｂは、図１０に示すように、実行アドレスリスト取得部５２、ソース構文解析部５５、ソースＣ１算定部５７、及び表示データ生成部５８ｂで構成されている。
【００６８】
実行アドレスリスト取得部５２は、実施例１と同様であり、実行アドレストレース部２２により生成された実行アドレスリストを取得し、ソースＣ１算定部５７に対して出力する。
【００６９】
ソース構文解析部５５は、本発明のソース構文解析手段に対応し、ハードディスク６０ｂにより記憶されたソースプログラム６４の中から１以上の分岐命令と１以上の分岐命令の各々の複数の分岐先とを抽出し、１以上の分岐命令の各々に対応する分岐命令行番号と複数の分岐先の各々に対応する分岐先行番号を求めるとともに、ハードディスク６０ｂにより記憶されたオブジェクトプログラム６２及びソース／オブジェクト対応情報６６に基づき、分岐命令と分岐先とを対にした分岐命令行番号と分岐先行番号とそれぞれに対応するオブジェクトプログラム６２のアドレスとを記録したソース構文解析データを生成する。
【００７０】
ソースＣ１算定部５７は、本発明のソースＣ１算定手段に対応し、実行アドレスリスト取得部５２により取得された実行アドレスリストとソース構文解析部５５により生成されたソース構文解析データとに基づき、分岐命令と分岐先とを対にした分岐命令行番号と分岐先行番号にそれぞれ対応するオブジェクトプログラム６２のアドレスが実行アドレスリストに存在するか否かを判定し、分岐命令行番号と分岐先行番号の対の各々について、分岐命令と分岐先として実行されたか否かを示す実行状態を記録したソースＣ１カバレッジデータを生成する。
【００７１】
またソースＣ１算定部５７は、ソースＣ１カバレッジデータに基づき、分岐命令行番号と分岐先行番号の対の総数を分母とし、少なくとも１回実行された分岐命令行番号と分岐先行番号の対の総数を分子としてソースプログラムのＣ１カバレッジを算定する。
【００７２】
表示データ生成部５８ｂは、本発明の表示データ生成手段に対応し、ハードディスク６０ｂにより記憶されたソースプログラム６４とソースＣ１算定部５７により生成されたソースＣ１カバレッジデータとに基づき、ソースプログラム６４と、ソースプログラム６４に対応する分岐先行番号と、分岐先行番号に対応する分岐命令行番号との対の数と、分岐先行番号に対応する実行状態とを並べたソースプログラムリストを生成する。
【００７３】
ディスプレー７０は、本発明の表示手段に対応し、表示データ生成部５８ｂにより生成されたソースプログラムリストを表示する。
【００７４】
外部のコンピュータ２０の構成は、実施例１と同様であり、重複した説明を省略する。
【００７５】
次に、上述のように構成された本実施の形態の作用を説明する。図１１は、本実施例の形態のＣ１カバレッジ測定装置がＣ１カバレッジを測定する対象となるソースプログラムの１例を示すフローチャート図である。このソースプログラムは、行番号１０行と１１行に分岐命令が設けられている。１０行の分岐命令は、１１行と１３行とを分岐先に設定し、条件により分岐先が決定される。また１１行の分岐命令は、１２行と１３行とを分岐先に設定し、条件により分岐先が決定される。なお、１３行は、いずれの分岐先が選択された場合でも実行される。
【００７６】
図１１に示すように、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１２行を分岐先として選択した場合を（ａ）、１０行の分岐命令で１３行を分岐先として選択した場合を（ｂ）、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１３行を分岐先として選択した場合を（ｃ）として説明する。
【００７７】
図１２は、本実施例の形態のＣ１カバレッジ測定装置がＣ１カバレッジを測定する対象となるソースプログラム６４を示す。上述した図１１は、このソースプログラム６４をフローチャート化したものである。１０行のソース命令文は、分岐命令であり、１１行又は１３行のいずれかを選択して分岐する。１１行のソース命令文も分岐命令であり、１２行又は１３行のいずれかを選択して分岐する。図１２において、１２行及び１３行のソース命令文は空白となっているが、実際には何らかの命令文であり、その行番号に対応したオブジェクトプログラムにおいて実行される。このソースプログラム６４は、ハードディスク６０ｂに記憶されている。
【００７８】
図１３は、図１２において説明したソースプログラム６４をコンパイルして得られたオブジェクトプログラム６２を示す。図１３において、２０３番地、２１２番地、２２１番地及び２３５番地のオブジェクト命令文は空白となっているが、実際には何らかの命令文であり、そのアドレスにおいて実行される。このオブジェクトプログラム６２は、ハードディスク６０ｂに記憶されている。
【００７９】
図１４は、ソースプログラム６４とオブジェクトプログラム６２との対応情報であるソース／オブジェクト対応情報６６を示す。このソース／オブジェクト対応情報６６は、ソースプログラム６４をコンパイルした際に作成され、ソースプログラム６４の行番号１０行、１１行、１２行、１３行に対応する命令文がオブジェクトプログラム６２の２０３番地、２１２番地、２２１番地、２３５番地をそれぞれ先頭アドレスとする１以上の番地に収納されていることを意味する。したがって、例えばソースプログラム６４の行番号１０行に対応する命令文がオブジェクトプログラム６２の２０３番地、２０４番地、２０５番地に収納されている。このソース／オブジェクト対応情報６６も、ハードディスク６０ｂに記憶されている。
【００８０】
図１５は、実行アドレスリスト取得部５２により取得された実行アドレスリストの例である。図１５（ａ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１２行を分岐先として選択した場合を示す。また図５（ｂ）は、１０行の分岐命令で１３行を分岐先として選択した場合を示す。また図１５（ｃ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１３行を分岐先として選択した場合を示す。
【００８１】
２０３番地、２１２番地、２２１番地、２３５番地は、それぞれソースプログラム６４の１０行、１１行、１２行、１３行に対応する命令文を収納した先頭アドレスである。したがって、実際の実行アドレスリストには、２０３番地と２１２番地と２２１番地と２３５番地との間に別の番地も記録される。実行アドレスリスト取得部５２は、取得した実行アドレスリストをソースＣ１算定部５７に出力する。
【００８２】
図１６は、ソース構文解析部５５により生成されたソース構文解析データである。ソース構文解析部５５は、上述したように、ハードディスク６０ｂにより記憶されたソースプログラム６４の中から分岐命令と分岐先とを抽出し、対応する分岐命令行番号と分岐先行番号を求めるとともに、分岐命令と分岐先とを対にする。ここではソース構文解析部５５は、図１２に示したソースプログラム６４の中から分岐命令行番号である１０行と分岐先行番号である１１行と１３行とを対にするとともに、分岐命令行番号である１１行と分岐先行番号である１２行と１３行とを対にする。
【００８３】
さらにソース構文解析部５５は、ハードディスク６０ｂにより記憶されたオブジェクトプログラム６２及びソース／オブジェクト対応情報６６に基づき、分岐命令と分岐先とを対にした分岐命令行番号と分岐先行番号とそれぞれに対応するオブジェクトプログラム６２のアドレスとを記録したソース構文解析データを生成する。ここでは、ソース構文解析部５５は、分岐命令行番号である１０行と分岐先行番号である１１行と１３行とを対にして、対応するオブジェクトプログラム６２における先頭アドレスである２０３番地、２１２番地、２３５番地を記録するとともに、分岐命令行番号である１１行と分岐先行番号である１２行と１３行とを対にして、対応するオブジェクトプログラム６２における先頭アドレスである２１２番地、２２１番地、２３５番地を記録したソース構文解析データを生成する。ソース構文解析部５５は、生成したソース構文解析データをソースＣ１算定部５７に出力する。
【００８４】
図１７は、ソースＣ１算定部５７により生成されたソースＣ１カバレッジデータである。図１７（ａ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１２行を分岐先として選択した場合を示す。この場合、１３行は、１２行を実行した後に実行されてはいるが、１０行又は１１行の分岐先として実行されたわけではないので、実行回数に含まれない。また図１７（ｂ）は、１０行の分岐命令で１３行を分岐先として選択した場合を示す。また図１７（ｃ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１３行を分岐先として選択した場合を示す。
【００８５】
さらに、ソースＣ１カバレッジデータには、ソースプログラム６４の行番号に対応するオブジェクトプログラム６２の先頭アドレスも記録されている。なお、ソースＣ１カバレッジデータは、実行回数ではなく実行有無を実行状態として記録してもよい。しかしながら、実行回数を記録することにより、全体の実行回数に対するＣ１カバレッジや、通りやすい分岐先を解析することができる。
【００８６】
以下にソースＣ１算定部５７がソースＣ１カバレッジデータを生成するための動作を示す。図１８は、本実施例の形態のＣ１カバレッジ測定装置のソースＣ１算定部５７の動作を示すフローチャートである。ここでは、ソースプログラム６４について、（ａ）の１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１２行を分岐先として選択した場合について説明する。したがって、ソースＣ１算定部５７は、図１５（ａ）に示す実行アドレスリストを入力されたものとする。まず、ソースＣ１算定部５７は、実行アドレスリストの最初のアドレスを得る（ステップＳ２０１）。図１５（ａ）より、最初のアドレスは、２０３番地である。
【００８７】
次に、ソース構文解析データを用いて、アドレスから対応するソースプログラム６４の行番号の種別を得る（ステップＳ２０３）。図１６に示すソース構文解析データより、２０３番地は、ソースプログラム６４の行番号１０行が対応し、分岐命令となる分岐命令行番号であることがわかる。
【００８８】
次にソースＣ１算定部５７は、１０行の種別が分岐命令であるため（ステップＳ２０５）、１０行を「直前の分岐命令」として記憶する（ステップＳ２０７）。なお、ステップＳ２０５において、種別が分岐命令でも分岐先でもない場合には、次のステップＳ２２１に進む。
【００８９】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ２２１）。２０３番地は先頭アドレスを示し、図１５（ａ）では省略されているが、次のアドレスは例えば２０４番地、２０５番地が続く。これらの番地は、対応するソース行が分岐命令でも分岐先でもないため、ステップＳ２０３、ステップＳ２０５、ステップＳ２２１を繰り返す。その後、ソースプログラム６４の行番号１１行に対応する命令文の先頭アドレスである２１２番地を得て、再びステップＳ２０３に戻る。
【００９０】
ステップＳ２０３において、ソース構文解析データを用いて２１２番地に対応するソースプログラムの行番号の種別を得る。図１６に示すソース構文解析データより、２１２番地は、ソースプログラムの行番号１１行が対応し、分岐命令行番号であるとともに、分岐先行番号であることがわかる。
【００９１】
次にソースＣ１算定部５７は、１１行の種別が分岐命令であるとともに分岐先であるため（ステップＳ２０５）、「直前の分岐命令」として記憶している１０行が１１行と対となる分岐命令か否かを判断する（ステップＳ２１５）。図１６に示すソース構文解析データより、「直前の分岐命令」として記憶している１０行は、分岐先としての１１行と対になる分岐命令である。したがって、分岐先である１１行の実行回数を１回足す（ステップＳ２１７）。その後、「直前の分岐命令」の情報を消し（ステップＳ２１８）、１１行を新たな「直前の分岐命令」として記憶する（ステップＳ２１９）。したがって、「１０行が直前の分岐命令である」とする情報は消去される。
【００９２】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ２２１）。ここでも、先ほどと同様に、対応するソース行が分岐命令でも分岐先でもないアドレスを複数得るため、ステップＳ２０３、ステップＳ２０５、ステップＳ２２１を繰り返す。その後、ソースプログラム６４の行番号１２行に対応する命令文の先頭アドレスである２２１番地を得て、再びステップＳ２０３に戻る。
【００９３】
ステップＳ２０３において、ソース構文解析データを用いて２２１番地に対応するソースプログラムの行番号の種別を得る。図１６に示すソース構文解析データより、２２１番地は、ソースプログラムの行番号１２行が対応し、分岐先となる分岐先行番号であることがわかる。
【００９４】
次にソースＣ１算定部５７は、１２行の種別が分岐先であるため（ステップＳ２０５）、「直前の分岐命令」として記憶している１１行が１２行と対になる分岐命令か否かを判断する（ステップＳ２０９）。図１６に示すソース構文解析データより、「直前の分岐命令」として記憶している１１行は、１２行と対になる分岐命令である。したがって、分岐先である１２行の実行回数を１回足す（ステップＳ２１１）。その後、「直前の分岐命令」の情報を消す（ステップＳ２１３）。したがって、「１１行が直前の分岐命令である」とする情報は消去される。
【００９５】
次に、実行アドレスリストの次のアドレスを得る（ステップＳ２２１）。ここでも、先ほどと同様に、分岐命令でも分岐先でもないアドレスを複数得るため、ステップＳ２０３、ステップＳ２０５、ステップＳ２２１を繰り返す。その後、ソースプログラム６４の行番号１３行に対応する命令文の先頭アドレスである２３５番地を得て、再びステップＳ２０３に戻る。
【００９６】
ステップＳ２０３において、ソース構文解析データを用いて２３５番地に対応するソースプログラムの行番号の種別を得る。図１６に示すソース構文解析データより、２３５番地は、ソースプログラムの行番号１３行が対応し、分岐先となる分岐先行番号であることがわかる。
【００９７】
次にソースＣ１算定部５７は、１３行の種別が分岐先であるため（ステップＳ２０５）、「直前の分岐命令」が１３行と対になる分岐命令か否かを判断する（ステップＳ２０９）。ところが、ステップＳ２１３において「直前の分岐命令」の情報は消去されているので、「直前の分岐命令」は存在しない。したがって、「直前の分岐命令」と１３行とは対にならず、ステップＳ２２１に進む。
【００９８】
次に、ステップＳ２２１で実行アドレスリストの次のアドレスを得るが、実行アドレスリストは２３５番地で終了しているので、ソースＣ１算定部５７は、ソースＣ１カバレッジデータの生成を終了する。
【００９９】
なお、図１１の例にはないが、ステップＳ２１５において、「直前の分岐命令」が対となる分岐命令でない場合には、ステップＳ２１９へ進む。
【０１００】
ソースＣ１算定部５７は、以上のような動作を経て図１７（ａ）に示すソースＣ１カバレッジデータを生成する。すなわち、ソースＣ１算定部５７は、実行アドレスリスト取得部５２により取得された実行アドレスリストとソース構文解析部５５により生成されたソース構文解析データとに基づき、ステップＳ２０１からステップＳ２２１の手順により、分岐命令と分岐先とを対にした分岐命令行番号と分岐先行番号にそれぞれ対応するオブジェクトプログラム６２のアドレスが実行アドレスリストに存在するか否かを判定し、分岐命令行番号と分岐先行番号の対の各々について、分岐命令と分岐先として実行されたか否かを示す実行状態を記録したソースＣ１カバレッジデータを生成する。
【０１０１】
さらに、ソースＣ１算定部５７は、ソースＣ１カバレッジデータに基づき、分岐命令行番号と分岐先行番号の対の総数を分母とし、少なくとも１回実行された分岐命令行番号と分岐先行番号の対の総数を分子としてソースプログラムのＣ１カバレッジを算定する。図１７（ａ）に示すように、分岐命令行番号と分岐先行番号の対の総数は、１０行と１１行、１０行と１３行、１１行と１２行、１１行と１３行の４つであるため、分母は４となる。また、少なくとも１回実行された分岐命令行番号と分岐先行番号の対の総数は、１０行と１１行、１１行と１２行の２つであるので、分子は２となる。したがって、Ｃ１カバレッジは、２／４＝５０％となる。仮に、テストを２回、3回と繰り返し、１０行と１１行の対や１１行と１２行の対の実行回数が２、３と増加したとしても、１０行と１３行の対や１１行と１３行の対の実行回数が０である限り、分子は２のままであるため、Ｃ１カバレッジは５０％である。その後、１０行と１３行の対及び１１行と１３行の対のいずれか一方が1回でも実行された場合には、少なくとも１回実行された分岐命令行番号と分岐先行番号との対の総数は３になるので、Ｃ１カバレッジは７５％となる。１０行と１３行の対及び１１行と１３行の対の両方が実行された場合には、Ｃ１カバレッジは１００％となる。
【０１０２】
ソースＣ１算定部５７は、生成したソースＣ１カバレッジデータを表示データ生成部５８ｂに出力する。表示データ生成部５８ｂは、ハードディスク６０ｂにより記憶されたソースプログラム６４とソースＣ１算定部５７により生成されたソースＣ１カバレッジデータとに基づき、ソースプログラム６４と、ソースプログラム６４に対応する分岐先行番号と、分岐先行番号に対応する分岐命令行番号との対の数と、分岐先行番号に対応する実行状態とを並べたソースプログラムリストを生成する。
【０１０３】
図１９は、表示データ生成部５８ｂにより生成されたソースプログラムリストを示す。図１９（ａ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１２行を分岐先として選択した場合を示す。分岐先アドレスである１３行に対応する分岐命令行番号との対の数は、１０行を分岐命令とする場合と１１行を分岐命令とする場合があるので、２つとなる。「うち実行した数」の欄には、分岐先行番号に対応する実行状態として、分岐命令行番号との対のうち、実行された対の数が記載される。
【０１０４】
また図１９（ｂ）は、１０行の分岐命令で１３行を分岐先として選択した場合を示す。また図１９（ｃ）は、１０行の分岐命令で１１行を分岐先として選択し、且つ１１行の分岐命令で１３行を分岐先として選択した場合を示す。
【０１０５】
したがって、図１９に示すように、ソースプログラムリストの「ソース分岐命令との対の数」の欄の合計を分母とし、「うち実行した数」の欄の合計を分子とすることにより、Ｃ１カバレッジを求めることができる。
【０１０６】
表示データ生成部５８ｂは、生成したソースプログラムリストをディスプレー７０に出力する。ディスプレー７０は、ソースプログラムリストを表示する。
【０１０７】
また、他の表示例として、関数毎及びアドレス範囲毎に、ソースプログラムとオブジェクトプログラムのＣ０、Ｃ１カバレッジを表示することもできる。なお、通常、ソースプログラムの１行に対して、オブジェクトプログラムは複数のアドレスを使用するため、それぞれのＣ１カバレッジは異なる値となる。
【０１０８】
上述のとおり、本発明の実施例２の形態に係るＣ１カバレッジ測定装置によれば、外部のコンピュータ２０によりオブジェクトプログラムが実行される際にトレースされた実行アドレスのデータに基づき、簡易な構成でそのオブジェクトプログラムの基となるソースプログラムのＣ１カバレッジを測定できる。
【０１０９】
また、ソース構文解析部５５を備えるので、ハードディスク６０ｂに記憶された実際に開発を行うソースプログラム６４が変更された場合でも、即座に対応することができる。
【０１１０】
さらに、表示データ生成部５８ｂを備えるので、ソースプログラムと並べて、各分岐先行番号に対する分岐命令行番号との対の数や、分岐命令行番号との対のうち実行された対の数を表示することができ、異なる分岐命令の分岐先が同一である場合にも厳密にＣ１カバレッジを求めることができる。また、Ｃ１カバレッジを求めるための分母と分子の数を一目で確認することができる。
【実施例３】
【０１１１】
図２０は、本発明の実施例３のＣ１カバレッジ測定装置の構成を示すブロック図である。実施例２と異なる点は、ＣＰＵ５０ｃが判定部５９を有する点と、ハードディスク６０ｃが第１ソースプログラム６３ａ、第１ソースプログラム６３ａに基づきソース構文解析部５５により生成された第１ソース構文解析データ６３ｂ、及び実行アドレスリストと第１ソース構文解析データ６３ｂとに基づきソースＣ１算定部５７により生成された第１ソースＣ１カバレッジデータ６３ｃを記憶する点と、キーボード７２を備える点である。
【０１１２】
ソースＣ１算定部５７は、ハードディスク６０ｃに記憶された第１ソースプログラム６３ａ、第１ソース構文解析データ６３ｂ、第１ソースＣ１カバレッジデータ６３ｃ、及び新たな実行アドレスリストに基づき第１ソースＣ１カバレッジデータ６３ｃを更新する。
【０１１３】
判定部５９は、本発明の判定手段に対応し、ハードディスク６０ｃに新たに第２ソースプログラム６５が記憶された場合に、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一であるか否かを判定し、所定の条件に基づき第１ソースＣ１カバレッジデータ６３ｃの消去を制御する。また、判定部５９は、判定結果をディスプレー７０に出力する。なお、図２０には、第１ソースプログラム６３ａと第２ソースプログラム６５とが併存するように記載されているが、第２ソースプログラム６５は、第１ソースプログラム６３ａに上書きする形でハードディスク６０ｃに記憶されてもよい。この場合、判定部５９は、第１ソースプログラム６３ａに基づき生成されハードディスク６０ｃ又は判定部５９に保存された第１情報と、第２ソースプログラム６５に基づく第２情報とを比較して、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一であるか否かを判定する。
【０１１４】
ここで、実質的同一とは、それぞれのソースプログラムが互いに異なる表記を用いていた場合でも、同一の動作を行う場合を指す。例えば、第１ソースプログラム６３ａと第２ソースプログラム６５との文字列が、コメント、タブ、空白、改行を除いた場合に同一の文字列となるような場合を指す。また、それぞれのソースプログラムをコンパイルして得られたオブジェクトプログラムのアドレスが異なるような場合でも、単に互いのオブジェクトプログラムがアドレス上シフトした位置に存在すること等も考えられる。したがって、関数呼び出しで用いられるブランチ命令の飛び先番地がずれているような場合でも、ソースプログラムが同一の動作を行う場合には、実質的に同一であると判定する。
【０１１５】
また、所定の条件とは、あらかじめ判定部５９に設定され、例えば第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一でない場合に第１ソースＣ１カバレッジデータ６３ｃの全部又は一部を消去するような条件を指す。
【０１１６】
キーボード７２は、本発明の外部入力手段に対応し、外部信号を入力する。
【０１１７】
判定部５９は、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一でない場合に同一でない旨をディスプレー７０に出力し、キーボード７２により入力された外部信号に基づき第１ソースＣ１カバレッジデータ６３ｃの消去を制御する。したがって、第１ソースＣ１カバレッジデータ６３ｃの消去の制御は、判定部５９が行ってもよいし、操作人がキーボード７２を介して行ってもよい。
【０１１８】
また判定部５９は、第１ソースプログラム６３ａを階層構造で構成する複数の関数の少なくとも１つが変更され且つ変更された関数に対する第１ソースＣ１カバレッジデータ６３ｃが消去された場合に、さらに第１ソースＣ１カバレッジデータ６３ｃのうち変更された関数を呼び出す上位関数の呼び出し命令行が分岐先として対となる分岐命令とともに実行されたか否かを示す実行状態を消去する。
【０１１９】
その他の構成は、実施例２と同様であり、重複した説明を省略する。
【０１２０】
次に、上述のように構成された本実施の形態の作用を説明する。まず、操作人は、実施例２において説明したように、ハードディスク６０ｃにより記憶された第１ソースプログラム６３ａのＣ１カバレッジを測定することができる。その際、ハードディスク６０ｃは、第１ソースプログラム６３ａに基づきソース構文解析部５５により生成された第１ソース構文解析データ６３ｂと、第１ソース構文解析データ６３ｂに基づきソースＣ１算定部５７により生成された第１ソースＣ１カバレッジデータ６３ｃを記憶する。
【０１２１】
操作人は、その後テストを中断し、パソコン４０ｃの電源を切った場合等でも、パソコン４０ｃの電源を入れて、ハードディスク６０ｃに記憶された第１ソースプログラム６３ａ、第１ソース構文解析データ６３ｂ、及び第１ソースＣ１カバレッジデータ６３ｃに基づき再びテストを継続できる。
【０１２２】
ソースＣ１算定部５７は、ハードディスク６０ｃに記憶された第１ソースプログラム６３ａ、第１ソース構文解析データ６３ｂ、及び第１ソースＣ１カバレッジデータ６３ｃに基づき、新たな実行アドレスリストが入力されると第１ソースＣ１カバレッジデータ６３ｃを更新する。例えば、図１１に示すようなソースプログラムに対して、（ａ）のように１０行の分岐命令が１１行を分岐先として選択し、且つ１１行の分岐命令が１２行を分岐先として選択した場合、図１７（ａ）に示すようなソースＣ１カバレッジデータが生成され、ハードディスク６０ｃに記憶される。この場合のＣ１カバレッジは５０％である。ここで、操作人がテストを中断しても、このソースＣ１カバレッジデータはハードディスク６０ｃに保存されたままであり、操作人は、その後継続してテストを再開できる。したがって、次に行ったテストにおいて、図１１に示すようなソースプログラムに対して、（ｂ）のように１０行の分岐命令が１３行を分岐先として選択した場合、少なくとも１回実行された分岐命令行番号と分岐先行番号の対は、１０行と１１行、１０行と１３行、１１行と１２行の３つとなるので、Ｃ１カバレッジは７５％となる。
【０１２３】
操作人は、テストを継続する際、ソースプログラムを更新することが考えられる。ここでは、第１ソースプログラム６３ａに対して、操作人が新たな第２ソースプログラム６５を入力したものとする。
【０１２４】
判定部５９は、ハードディスク６０ｃに新たに第２ソースプログラム６５が記憶された場合に、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一であるか否かを判定し、所定の条件に基づき第１ソースＣ１カバレッジデータ６３ｃの消去を制御する。例えば判定部５９は、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一でない場合に、第１ソースＣ１カバレッジデータ６３ｃを消去する。また判定部５９は、必ずしも第１ソースＣ１カバレッジデータ６３ｃの全体を消去するわけではなく、第１ソースＣ１カバレッジデータ６３ｃ全体の中から特定の消去すべき部分を消去するとしてもよい。例えば判定部５９は、第１ソースプログラム６３ａと第２ソースプログラム６５とを比較し、変更された関数に関してのみ第１ソースＣ１カバレッジデータ６３ｃとして記憶された実行回数、分岐先と分岐命令アドレスとの対の数のうち実行した数等のデータを消去することができる。
【０１２５】
なお、ソースＣ１算定部５７が、ソースＣ１カバレッジデータを生成する際に、ハードディスク６０ｃに新たに第２ソースプログラム６５が記憶されたことを察知して判定指令信号を判定部５９に出力してもよい。また、ソースＣ１算定部５７ではなくソース構文解析部５５が、ハードディスク６０ｃに新たに第２ソースプログラム６５が記憶されたことを察知してソースＣ１算定部５７に伝えるとする構成でもよい。
【０１２６】
また、判定部５９は、判定結果をディスプレー７０に出力する。
【０１２７】
判定部５９により、第１ソースプログラム６３ａと第２ソースプログラム６５とが実質的に同一でない旨がディスプレー７０に出力された場合、操作人は、キーボード７２を用いて、第１ソースＣ１カバレッジデータ６３ｃを消去するか否かを選択できる。その際操作人は、必ずしも第１ソースＣ１カバレッジデータ６３ｃの全体を消去するわけではなく、第１ソースＣ１カバレッジデータ６３ｃ全体の中から消去したい部分を自由に選択できる。例えば操作人は、第１ソースプログラム６３ａと第２ソースプログラム６５とを比較し、変更された関数に関してのみ第１ソースＣ１カバレッジデータ６３ｃとして記憶された実行回数のデータを消去することができる。
【０１２８】
なお、判定部５９が判定結果をソースＣ１算定部５７に出力し、ソースＣ１算定部５７が自動的にソースプログラムの変更された箇所に該当するソースＣ１カバレッジデータを消去するという構成でもよい。
【０１２９】
さらに、第１ソースプログラム６３ａが複数の関数の階層構造で構成されている場合を考える。第１ソースプログラム６３ａが第２ソースプログラム６５に変更された際に、その複数の関数の少なくとも１つが変更され且つ変更された関数に対する第１ソースＣ１カバレッジデータ６３ｃが消去された場合に、判定部５９は、さらに第１ソースＣ１カバレッジデータ６３ｃのうち変更された関数を呼び出す上位関数の呼び出し命令行が分岐先として対となる分岐命令とともに実行されたか否かを示す実行状態を消去する。
【０１３０】
その他の動作は、実施例２と同様であり、重複した説明を省略する。
【０１３１】
上述のとおり、本発明の実施例３の形態に係るＣ１カバレッジ測定装置によれば、実施例２の効果に加え、ハードディスク６０ｃにより記憶された第１ソースプログラム６３ａ、第１ソース構文解析データ６３ｂ、及び第１ソースＣ１カバレッジデータ６３ｃに基づき、中断したテストを継続して再開することができる。
【０１３２】
また、その際、第１ソースプログラム６３ａの内容が第２ソースプログラム６５に変更された場合であっても、判定部５９が両ソースプログラムが実質的に同一か否かを判定してディスプレー７０に出力するので、判定部５９又は操作人は、判定結果に基づき第１ソースＣ１カバレッジデータ６３ｃを継続して使用するか否か決定することができる。また、継続して使用しない場合には、判定部５９又は操作人は、第１ソースＣ１カバレッジデータ６３ｃのうち不要な部分を消去することができる。
【０１３３】
さらに、第１ソースプログラム６３ａが複数の関数の階層構造で構成されている場合には、複数の関数の少なくとも１つが変更され且つ変更された関数に対する第１ソースＣ１カバレッジデータ６３ｃが消去された際に、第１ソースＣ１カバレッジデータ６３ｃのうち変更された関数を呼び出す上位関数の呼び出し命令行に対するカバレッジデータ（実行回数）を自動的に消去するので、より正確なソースＣ１カバレッジデータが自動的に管理される。
【産業上の利用可能性】
【０１３４】
本発明に係るＣ１カバレッジ測定装置は、コンピュータプログラムの開発におけるテストの十分性を評価するＣ１カバレッジ測定装置に利用可能である。
【図面の簡単な説明】
【０１３５】
【図１】本発明の実施例１の形態のＣ１カバレッジ測定装置の構成を示すブロック図である。
【図２】本発明の実施例１の形態のＣ１カバレッジ測定装置に接続されるコンピュータの詳細な構成を示すブロック図である。
【図３】本発明の実施例１の形態のＣ１カバレッジ測定装置により測定されるオブジェクトプログラムの１例を示すフローチャート図である。
【図４】本発明の実施例１の形態のＣ１カバレッジ測定装置により測定されるオブジェクトプログラムを示す図である。
【図５】本発明の実施例１の形態のＣ１カバレッジ測定装置の実行アドレスリスト取得部により取得された実行アドレスリストの１例を示す図である。
【図６】本発明の実施例１の形態のＣ１カバレッジ測定装置のオブジェクト構文解析部により生成されたオブジェクト構文解析データを示す図である。
【図７】本発明の実施例１の形態のＣ１カバレッジ測定装置のオブジェクトＣ１算定部により生成されたオブジェクトＣ１カバレッジデータを示す図である。
【図８】本発明の実施例１の形態のＣ１カバレッジ測定装置のオブジェクトＣ１算定部の動作を示すフローチャート図である。
【図９】本発明の実施例１の形態のＣ１カバレッジ測定装置の表示データ生成部により生成されたオブジェクトプログラムリストを示す図である。
【図１０】本発明の実施例２の形態のＣ１カバレッジ測定装置の構成を示すブロック図である。
【図１１】本発明の実施例２の形態のＣ１カバレッジ測定装置により測定されるソースプログラムの１例を示すフローチャート図である。
【図１２】本発明の実施例２の形態のＣ１カバレッジ測定装置により測定されるソースプログラムを示す図である。
【図１３】本発明の実施例２の形態のＣ１カバレッジ測定装置により測定されるソースプログラムをコンパイルして得られたオブジェクトプログラムを示す図である。
【図１４】本発明の実施例２の形態のＣ１カバレッジ測定装置により測定されるソースプログラムとオブジェクトプログラムとの対応情報であるソース／オブジェクト対応情報を示す図である。
【図１５】本発明の実施例２の形態のＣ１カバレッジ測定装置の実行アドレスリスト取得部により取得された実行アドレスリストの１例を示す図である。
【図１６】本発明の実施例２の形態のＣ１カバレッジ測定装置のソース構文解析部により生成されたソース構文解析データを示す図である。
【図１７】本発明の実施例２の形態のＣ１カバレッジ測定装置のソースＣ１算定部により生成されたソースＣ１カバレッジデータを示す図である。
【図１８】本発明の実施例２の形態のＣ１カバレッジ測定装置のソースＣ１算定部の動作を示すフローチャート図である。
【図１９】本発明の実施例２の形態のＣ１カバレッジ測定装置の表示データ生成部により生成されたソースプログラムリストを示す図である。
【図２０】本発明の実施例３の形態のＣ１カバレッジ測定装置の構成を示すブロック図である。
【図２１】従来のマイクロプロセッサ用デバッグ装置の１例を示す要部構成図である。
【符号の説明】
【０１３６】
１      ターゲットＣＰＵ
２      カバレッジメモリ
３、５、７  アドレスバス
４、６、９、１０、１１、１２  ３ステートバッファ
１４、１７  ゲート
１５    フリップフロップ
１６    ラッチ
２０    コンピュータ
２２    実行アドレストレース部
２４    ＣＰＵ
２５    メモリ
２６    オブジェクトプログラム
２７    メモリ
２８    通信インターフェース
２９    入出力インターフェース
３０    アダプタ
４０ａ、４０ｂ、４０ｃ  パソコン
４２    通信インターフェース
５０ａ、５０ｂ、５０ｃ  ＣＰＵ
５２    実行アドレスリスト取得部
５４    オブジェクト構文解析部
５５    ソース構文解析部
５６    オブジェクトＣ１算定部
５７    ソースＣ１算定部
５８ａ、５８ｂ  表示データ生成部
５９    判定部
６０ａ、６０ｂ、６０ｃ  ハードディスク
６２    オブジェクトプログラム
６３ａ  第１ソースプログラム
６３ｂ  第１ソース構文解析データ
６３ｃ  第１ソースＣ１カバレッジデータ
６４    ソースプログラム
６５    第２ソースプログラム
６６    ソース／オブジェクト対応情報
７０    ディスプレー
７２    キーボード
【図１】
2008310407.tif 000003
【図２】
2008310407.tif 000004
【図３】
2008310407.tif 000005
【図４】
2008310407.tif 000006
【図５】
2008310407.tif 000007
【図６】
2008310407.tif 000008
【図７】
2008310407.tif 000009
【図８】
2008310407.tif 000010
【図９】
2008310407.tif 000011
【図１０】
2008310407.tif 000012
【図１１】
2008310407.tif 000013
【図１２】
2008310407.tif 000014
【図１３】
2008310407.tif 000015
【図１４】
2008310407.tif 000016
【図１５】
2008310407.tif 000017
【図１６】
2008310407.tif 000018
【図１７】
2008310407.tif 000019
【図１８】
2008310407.tif 000020
【図１９】
2008310407.tif 000021
【図２０】
2008310407.tif 000022
【図２１】
2008310407.tif 000023