JP2010097251A - エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム - Google Patents
エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム Download PDFInfo
- Publication number
- JP2010097251A JP2010097251A JP2008265162A JP2008265162A JP2010097251A JP 2010097251 A JP2010097251 A JP 2010097251A JP 2008265162 A JP2008265162 A JP 2008265162A JP 2008265162 A JP2008265162 A JP 2008265162A JP 2010097251 A JP2010097251 A JP 2010097251A
- Authority
- JP
- Japan
- Prior art keywords
- error trace
- expression
- conditional
- simplification
- error
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
【課題】エラートレースに含まれる表現を簡略化し、ユーザにとって分かりやすいエラートレースの出力を行う。
【解決手段】ソースコード入力部は、入力ソースコードを読み込み、フラット化部に受け渡す。フラット化部は、入力されたソースコードをフラット化して、ソースコード検証部に受け渡す。ソースコード検証部は、フラット化されたソースコードにソースコード検証手法を適用し、得られたエラートレースをエラートレース記憶部に格納する。エラートレース簡略化部は、エラートレース記憶部に格納されたエラートレースに含まれる全てのステップについて、条件演算子による演算を含む場合には、条件演算子による演算を含まない形に簡略化し、簡略化エラートレース記憶部に格納する。結果出力部は、簡略化エラートレース記憶部に格納されたエラートレースを、簡略化エラートレースとして出力する。
【選択図】図1
【解決手段】ソースコード入力部は、入力ソースコードを読み込み、フラット化部に受け渡す。フラット化部は、入力されたソースコードをフラット化して、ソースコード検証部に受け渡す。ソースコード検証部は、フラット化されたソースコードにソースコード検証手法を適用し、得られたエラートレースをエラートレース記憶部に格納する。エラートレース簡略化部は、エラートレース記憶部に格納されたエラートレースに含まれる全てのステップについて、条件演算子による演算を含む場合には、条件演算子による演算を含まない形に簡略化し、簡略化エラートレース記憶部に格納する。結果出力部は、簡略化エラートレース記憶部に格納されたエラートレースを、簡略化エラートレースとして出力する。
【選択図】図1
Description
本発明は、エラートレース簡略化システムに関し、特にソースコード検証におけるエラートレース簡略化システムに関する。
従来、コンピュータプログラムのソースコードを検証し、エラートレース、すなわちエラーが発生するパスをユーザに提示できるソースコード検証手法が存在する。
エラートレースは、エラーが発生するまでに実行される各ステップ(プログラムステップ)において、そのステップが対応するソースコード上の行番号、当該ステップで実行された代入の式、当該ステップで評価されて成立した条件の式、及び当該ステップにおける変数の値を含む。
このようなエラートレースをユーザが参照すると、エラーが発生する原因を調査することができる。
これは、エラートレースを提示しないソースコード検証手法と比較した場合、大きな利点であると言える。エラートレースを提示しないソースコード検証手法として、例えばSplint(非特許文献1参照)等が存在する。
なお、エラートレースを提示するソースコード検証手法は、一般に厳密な計算を要求するために、次のような特徴を持つ。例えば、エラートレースを提示するソースコード検証手法では、ソースコード内のメモリ領域に対するアクセスを行う箇所において、静的にアドレスが決まる表現(静的アクセス)は扱えるが、動的にアドレスが決まる表現(動的アクセス)は扱えない。
一般的なソースコードは、配列の添字が変数である場合や、変数を用いてポインタ演算をする場合等、動的アクセスを多く含む。前述したようなソースコード検証手法では動的アクセスを利用できないため、それらのソースコードをそのままでは扱うことができない。
このような場合、動的アクセスを静的アクセスに書き換える方式を利用できる。このための手段として、条件分岐を用いる技術が知られている(非特許文献2参照)。
これを応用し、動的アクセスを、条件演算子(conditional operator)による条件分岐を用いて、静的アクセスに書き換え、その後にソースコード検証手法を適用する技術が知られている(非特許文献3参照)。このような書き換えのことをフラット化と呼ぶ。
以上により、動的アクセスを含むソースコードに、ソースコード検証を適用することはできる。
しかしながら、従来のソースコード検証手法においては、ユーザがエラートレースを参照する労力が大きいという問題があった。
なぜなら、ソースコード検証手法の出力であるエラートレースは、フラット化後のソースコードに基づくためである。フラット化後のソースコードは条件演算子による演算を多数含むので、結果として、エラートレースも条件演算子による演算を多数含む複雑なものとなる。条件演算子による演算を用いた複雑な式を解釈するのは、ユーザにとって労力を要する作業であると言える。
関連する技術として、特開2000−215037号公報(特許文献1)にソ―スコ―ド表示装置、ソ―スコ―ド表示方法およびデバック処理装置が開示されている。この関連技術では、プログラムをステップ実行中に分岐処理があると、分岐処理条件を解析してその条件で実行しない行と実行する行とを調べ、ソースコードの表示で実行しない行の色を目立たなくしている。
また、特開2001−142716号公報(特許文献2)にループ内条件分岐削除最適化方式が開示されている。この関連技術では、条件分岐コードから無条件分岐コードへの変更に起因して不要となったコード(当該無条件分岐コードおよび当該変更に起因して決して実行されなくなったコード)を削除している。
本発明の目的は、コンピュータプログラムのソースコードに対して、ソースコード検証手法を適用した場合に、得られるエラートレースを参照する作業を省力化するエラートレース簡略化システムを提供することである。
本発明のエラートレース簡略化システムは、入力されたソースコードをフラット化するフラット化部と、フラット化されたソースコードを検証し、エラートレースを作成するソースコード検証部と、作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、条件演算子による演算を含まない形式に簡略化するエラートレース簡略化部とを具備する。
本発明のエラートレース簡略化方法は、入力されたソースコードをフラット化することと、フラット化されたソースコードを検証し、エラートレースを作成することと、作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、条件演算子による演算を含まない形式に簡略化することとを含む。
本発明のプログラムは、入力されたソースコードをフラット化することと、フラット化されたソースコードを検証し、エラートレースを作成することと、作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、条件演算子による演算を含まない形式に簡略化することとをコンピュータに実行させるためのプログラムである。
フラット化を用いたソースコード検証処理において、エラートレースに含まれる表現を簡略化し、ユーザにとって分かりやすいエラートレースの出力を可能とする。
以下に、本発明の実施形態について添付図面を参照して説明する。
図1を参照すると、本発明のエラートレース簡略化システムは、入力ソースコード1と、処理装置2と、記憶装置3と、簡略化エラートレース4を含む。
本発明のエラートレース簡略化システムの例として、PC(パソコン)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータを想定している。なお、本システムは、端末やサーバに限らず、中継機器や周辺機器でも良い。また、本システムは、コンピュータに搭載される拡張ボードやソフトウェアでも良い。更に、本システムは、コンピュータに搭載された仮想マシン(Virtual Machine(VM))環境でも良い。但し、実際には、これらの例に限定されない。
入力ソースコード1は、ソースコード検証の対象となるソースコードである。図2に、入力ソースコード1の内容を例示する。
処理装置2は、プログラム制御により動作する。処理装置2の例として、CPU(Central Processing Unit)やマイクロプロセッサ(microprocessor)等の処理装置、又は同様の機能を有する半導体集積回路(Integrated Circuit(IC))等が考えられる。なお、処理装置2は、本発明のエラートレース簡略化方法をコンピュータに実行させるためのプログラムでも良い。但し、実際には、これらの例に限定されない。
記憶装置3は、情報を記憶する。記憶装置3の例として、メモリ等の半導体記憶装置、ハードディスク等の外部記憶装置(ストレージ)、又は、記憶媒体(メディア)等が考えられる。また、記憶装置3は、外付けの記憶装置やネットワーク上のストレージサーバでも良い。但し、実際には、これらの例に限定されない。
簡略化エラートレース4は、本発明のエラートレース簡略化システムにおける処理結果である。
処理装置2は、ソースコード入力部21と、フラット化部22と、ソースコード検証部23と、エラートレース簡略化部24と、結果出力部25を備える。
ソースコード入力部21は、入力ソースコード1を読み込み、フラット化部22に受け渡す。
フラット化部22は、入力ソースコード1をフラット化して、ソースコード検証部23に受け渡す。ここでは、フラット化部22は、図2に示すような入力ソースコード1をフラット化して、図3に示すようなフラット化されたソースコード(フラット化コード)を作成し、フラット化されたソースコード(フラット化コード)をソースコード検証部23に受け渡す。
ソースコード検証部23は、フラット化されたソースコード(フラット化コード)にソースコード検証を適用し、得られたエラートレースを記憶装置3のエラートレース記憶部31に格納する。すなわち、ソースコード検証部23は、フラット化されたソースコード(フラット化コード)を基に、ソースコード検証手法に従って、エラートレースを作成する。
エラートレース簡略化部24は、記憶装置3のエラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、条件演算子による演算を含む場合には簡略化しながら、記憶装置3の簡略化エラートレース記憶部32に格納する。条件演算子による演算は、「条件式 ? 真の式 : 偽の式」で表される。すなわち、条件演算子による演算は、条件式、真の式、偽の式の3要素を含む。エラートレース簡略化部24は、条件式が真であるか偽であるかを当該ステップにおける変数の値を根拠にして判定し、判定の結果と条件演算子によって選択された真の式、又は偽の式のみを残すことにより、式の構成要素を減らす。
なお、エラートレース簡略化部24は、処理装置2の外部に独立して設けられた装置とすることも可能である。例えば、エラートレース簡略化部24は、複数の記憶装置3にアクセス可能なサーバでも良い。また、エラートレース簡略化部24は、記憶装置3を有する端末やサーバ等に含まれていても良い。
結果出力部25は、記憶装置3の簡略化エラートレース記憶部32に格納されたエラートレースを、簡略化エラートレース4として出力する。
記憶装置3は、エラートレース記憶部31と、簡略化エラートレース記憶部32を備える。
エラートレース記憶部31は、エラーが発生するまでに実行される各ステップの情報を保持する。具体的には、エラートレース記憶部31に保持される情報は、図4A、図4B、及び図4Cに示すように、そのステップが対応するソースコード上の行番号、当該ステップで実行された代入式、当該ステップで評価され成立した条件式、及び当該ステップにおける変数の値を含む。なお、ステップ数の数え方には様々な基準があるが、多くの場合、プログラムのソースコードの行数である「LOC」(Lines Of Code)を基にした値となる。LOCをそのままステップ数として用いることもあるが、LOCからプログラムとしては意味を成さない空行やコメントの行の数を除いて換算する場合もある。
簡略化エラートレース記憶部32は、基本的には、エラートレース記憶部31の内容と同様の内容(エラーが発生するまでに実行される各ステップの情報)を保持する。但し、簡略化エラートレース記憶部32は、条件演算子による演算を含むステップについては、簡略化された後に保持する。すなわち、簡略化エラートレース記憶部32は、条件演算子による演算を含まないステップが転記されたエラートレースを格納する。例えば、簡略化エラートレース記憶部32は、エラートレース記憶部31に格納されたエラートレースに、条件演算子による演算を含むステップが含まれていない場合、エラートレース記憶部31に格納されたエラートレースをそのまま格納する。反対に、簡略化エラートレース記憶部32は、エラートレース記憶部31に格納されたエラートレースに、条件演算子による演算を含むステップが含まれていた場合、該エラートレースをエラートレース簡略化部24に提供し、エラートレース簡略化部24で簡略化された後に格納する。
なお、図5と図6は、図4A、図4B、及び図4Cに示すエラートレースに含まれるステップの、簡略化前と簡略化後のステップの状態を示す。ここでは、説明を簡単にするため、簡略化後に式が変化するステップ、すなわち条件演算子による演算を含むステップのみについて示している。図5は、エラートレース記憶部31に格納されている簡略化前のエラートレースに含まれるステップを示す。図6は、簡略化エラートレース記憶部32に格納された簡略化後のエラートレースに含まれるステップを示す。但し、実際には、条件演算子による演算を含むステップ以外のステップも示されている。
次に、図7を参照して、本発明のエラートレース簡略化システムの動作について詳細に説明する。
(1)処理手順A1
ソースコード入力部21は、入力ソースコード1を読み込み、フラット化部22に受け渡す。フラット化部22に受け渡される入力ソースコード1の例については、図2に示す通りである。ここでは、ソースコード入力部21は、入力装置や通信用インタフェース等を介して、入力ソースコード1を取得する。なお、ソースコード入力部21は、外部のコンピュータから入力ソースコード1を受け取っても良い。或いは、ソースコード入力部21は、外部の記憶装置や記憶媒体(メディア)から入力ソースコード1を読み出しても良い。
ソースコード入力部21は、入力ソースコード1を読み込み、フラット化部22に受け渡す。フラット化部22に受け渡される入力ソースコード1の例については、図2に示す通りである。ここでは、ソースコード入力部21は、入力装置や通信用インタフェース等を介して、入力ソースコード1を取得する。なお、ソースコード入力部21は、外部のコンピュータから入力ソースコード1を受け取っても良い。或いは、ソースコード入力部21は、外部の記憶装置や記憶媒体(メディア)から入力ソースコード1を読み出しても良い。
(2)処理手順A2
次に、フラット化部22は、入力ソースコード1をフラット化し、ソースコード検証部23に受け渡す。例えば、フラット化部22は、ソースコード入力部21から、図2に示す入力ソースコード1を受け取ると、フラット化し、結果として図3に示す形のフラット化されたソースコード(フラット化コード)を作成し、ソースコード検証部23に受け渡す。
次に、フラット化部22は、入力ソースコード1をフラット化し、ソースコード検証部23に受け渡す。例えば、フラット化部22は、ソースコード入力部21から、図2に示す入力ソースコード1を受け取ると、フラット化し、結果として図3に示す形のフラット化されたソースコード(フラット化コード)を作成し、ソースコード検証部23に受け渡す。
(3)処理手順A3
次に、ソースコード検証部23は、フラット化されたソースコード(フラット化コード)を検証する。
次に、ソースコード検証部23は、フラット化されたソースコード(フラット化コード)を検証する。
(4)処理手順A4
ソースコード検証部23は、フラット化されたソースコード(フラット化コード)の検証において、エラートレースが得られたかどうか判断する。ソースコード検証部23は、フラット化されたソースコード(フラット化コード)の検証の結果、エラートレースが得られた場合には、エラートレース記憶部31に格納する。例えば、ソースコード検証部23は、図3に示すフラット化されたソースコード(フラット化コード)を検証した場合には、図4A、図4B、及び図4Cに示すエラートレースが得られるので、この内容(図4A、図4B、及び図4Cに示すエラートレース)をエラートレース記憶部31に格納する。なお、フラット化されたソースコード(フラット化コード)の検証においては、エラーが検出されない場合にはエラートレースは得られない。ソースコード検証部23は、エラートレースが得られなかった場合には、処理を終了する。
ソースコード検証部23は、フラット化されたソースコード(フラット化コード)の検証において、エラートレースが得られたかどうか判断する。ソースコード検証部23は、フラット化されたソースコード(フラット化コード)の検証の結果、エラートレースが得られた場合には、エラートレース記憶部31に格納する。例えば、ソースコード検証部23は、図3に示すフラット化されたソースコード(フラット化コード)を検証した場合には、図4A、図4B、及び図4Cに示すエラートレースが得られるので、この内容(図4A、図4B、及び図4Cに示すエラートレース)をエラートレース記憶部31に格納する。なお、フラット化されたソースコード(フラット化コード)の検証においては、エラーが検出されない場合にはエラートレースは得られない。ソースコード検証部23は、エラートレースが得られなかった場合には、処理を終了する。
(5)処理手順A5
次に、エラートレース簡略化部24は、得られたエラートレースを簡略化する。例えば、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースを読み出し、読み出されたエラートレースを簡略化し、簡略化エラートレース記憶部32に格納する。なお、エラートレース簡略化部24は、ソースコード検証部23から直接、得られたエラートレースを受け取るようにしても良い。エラートレース簡略化の詳細については後述する。
次に、エラートレース簡略化部24は、得られたエラートレースを簡略化する。例えば、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースを読み出し、読み出されたエラートレースを簡略化し、簡略化エラートレース記憶部32に格納する。なお、エラートレース簡略化部24は、ソースコード検証部23から直接、得られたエラートレースを受け取るようにしても良い。エラートレース簡略化の詳細については後述する。
(6)処理手順A6
次に、結果出力部25は、簡略化エラートレース記憶部32に格納されたエラートレースを簡略化エラートレース4として出力する。なお、結果出力部25は、エラートレース簡略化部24から直接、簡略化されたエラートレースを受け取り、簡略化エラートレース4として出力するようにしても良い。
次に、結果出力部25は、簡略化エラートレース記憶部32に格納されたエラートレースを簡略化エラートレース4として出力する。なお、結果出力部25は、エラートレース簡略化部24から直接、簡略化されたエラートレースを受け取り、簡略化エラートレース4として出力するようにしても良い。
得られた簡略化エラートレース4は、図7の処理手順A5(エラートレース簡略化)の処理により条件演算子による演算を含まないものとなっているため、本システムのユーザは、条件演算子による演算を解釈することなく、少ない労力でエラートレースを参照できる。
次に、図8を参照して、エラートレース簡略化(図7の処理手順A5)について詳細に説明する。
(1)処理手順B1
エラートレース簡略化部24は、エラートレースの簡略化の処理において、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、図8の処理手順B2から処理手順B6までの処理を繰り返し、簡略化エラートレース記憶部32に転記する。図4A、図4B、及び図4Cに示すエラートレースの例では、ステップ番号1から55まで、1ステップずつ繰り返すことになる。ここでは、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに、未処理のステップがあるか確認する。このとき、エラートレース簡略化部24は、ソースコード検証部23から直接、エラートレースを取得し、取得されたエラートレースに、未処理のステップがあるか確認するようにしても良い。エラートレース簡略化部24は、エラートレース簡略化部24は、エラートレースに未処理のステップが含まれている場合、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、1ステップずつ読み出す。すなわち、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースの例では、1ステップずつ、ステップ番号1から55に対応するステップの式を読み出す。
エラートレース簡略化部24は、エラートレースの簡略化の処理において、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、図8の処理手順B2から処理手順B6までの処理を繰り返し、簡略化エラートレース記憶部32に転記する。図4A、図4B、及び図4Cに示すエラートレースの例では、ステップ番号1から55まで、1ステップずつ繰り返すことになる。ここでは、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに、未処理のステップがあるか確認する。このとき、エラートレース簡略化部24は、ソースコード検証部23から直接、エラートレースを取得し、取得されたエラートレースに、未処理のステップがあるか確認するようにしても良い。エラートレース簡略化部24は、エラートレース簡略化部24は、エラートレースに未処理のステップが含まれている場合、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、1ステップずつ読み出す。すなわち、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースの例では、1ステップずつ、ステップ番号1から55に対応するステップの式を読み出す。
(2)処理手順B2
エラートレース簡略化部24は、当該ステップ(読み出されたステップ)の式に、条件演算子による演算が含まれるか否かを判定する。すなわち、エラートレース簡略化部24は、当該ステップの式に、「条件式 ? 真の式 : 偽の式」で表される表現が含まれるか否かを判定する。
エラートレース簡略化部24は、当該ステップ(読み出されたステップ)の式に、条件演算子による演算が含まれるか否かを判定する。すなわち、エラートレース簡略化部24は、当該ステップの式に、「条件式 ? 真の式 : 偽の式」で表される表現が含まれるか否かを判定する。
(3)処理手順B3
エラートレース簡略化部24は、当該ステップの式に、条件演算子による演算が含まれる場合、条件演算子による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。例えば、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースがエラートレース記憶部31に格納されているとして、ステップ番号45のステップを処理する場合、条件演算子による演算を含むため、この分岐はイエスとなり、条件演算子による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。
エラートレース簡略化部24は、当該ステップの式に、条件演算子による演算が含まれる場合、条件演算子による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。例えば、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースがエラートレース記憶部31に格納されているとして、ステップ番号45のステップを処理する場合、条件演算子による演算を含むため、この分岐はイエスとなり、条件演算子による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。
(4)処理手順B4
エラートレース簡略化部24は、判断の結果が偽であれば、結果に従い、偽の式に相当する式をもって条件演算子による演算全体を置換する。これにより、当該ステップの式について、条件演算子による演算が含まれなくなる。
エラートレース簡略化部24は、判断の結果が偽であれば、結果に従い、偽の式に相当する式をもって条件演算子による演算全体を置換する。これにより、当該ステップの式について、条件演算子による演算が含まれなくなる。
(5)処理手順B5
エラートレース簡略化部24は、判断の結果が真であれば、結果に従い、真の式に相当する式でもって条件演算子による演算全体を置換する。これにより、当該ステップの式について、条件演算子による演算が含まれなくなる。
エラートレース簡略化部24は、判断の結果が真であれば、結果に従い、真の式に相当する式でもって条件演算子による演算全体を置換する。これにより、当該ステップの式について、条件演算子による演算が含まれなくなる。
(6)処理手順B6
エラートレース簡略化部24は、当該ステップについて、条件演算子による演算全体を置換した後の情報を、簡略化エラートレース記憶部32に格納するためのエラートレース(簡略化エラートレース4)に転記する。なお、エラートレース簡略化部24は、当該ステップの式に、条件演算子による演算が含まれない場合、当該ステップの情報をそのまま簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。例えば、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースがエラートレース記憶部31に格納されているとして、ステップ番号1のステップを処理する場合、条件演算子による演算を含まないため、当該ステップの情報をそのまま簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。すなわち、エラートレース簡略化部24は、ステップの式に条件演算子による演算を含まないステップの情報を、簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。
エラートレース簡略化部24は、当該ステップについて、条件演算子による演算全体を置換した後の情報を、簡略化エラートレース記憶部32に格納するためのエラートレース(簡略化エラートレース4)に転記する。なお、エラートレース簡略化部24は、当該ステップの式に、条件演算子による演算が含まれない場合、当該ステップの情報をそのまま簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。例えば、エラートレース簡略化部24は、図4A、図4B、及び図4Cに示すエラートレースがエラートレース記憶部31に格納されているとして、ステップ番号1のステップを処理する場合、条件演算子による演算を含まないため、当該ステップの情報をそのまま簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。すなわち、エラートレース簡略化部24は、ステップの式に条件演算子による演算を含まないステップの情報を、簡略化エラートレース記憶部32に格納するためのエラートレースに転記する。
(7)処理手順B7
エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、未処理のステップが無くなった場合、簡略化エラートレース記憶部32に格納するためのエラートレースを、簡略化エラートレース記憶部32に格納して、処理を終了する。なお、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップの式に、条件演算子による演算が含まれない場合、エラートレース記憶部31に格納されたエラートレースを、そのまま簡略化エラートレース記憶部32に格納するためのエラートレースとして、簡略化エラートレース記憶部32に格納して、処理を終了する。このとき、エラートレース簡略化部24は、簡略化エラートレース記憶部32に格納するためのエラートレースを、簡略化エラートレース記憶部32に格納せず、直接、結果出力部25に出力するようにしても良い。ここで、エラートレース記憶部31に格納されたエラートレースは、ソースコード検証部23から取得されたエラートレースと読み替えても良い。
エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップについて、未処理のステップが無くなった場合、簡略化エラートレース記憶部32に格納するためのエラートレースを、簡略化エラートレース記憶部32に格納して、処理を終了する。なお、エラートレース簡略化部24は、エラートレース記憶部31に格納されたエラートレースに含まれる全てのステップの式に、条件演算子による演算が含まれない場合、エラートレース記憶部31に格納されたエラートレースを、そのまま簡略化エラートレース記憶部32に格納するためのエラートレースとして、簡略化エラートレース記憶部32に格納して、処理を終了する。このとき、エラートレース簡略化部24は、簡略化エラートレース記憶部32に格納するためのエラートレースを、簡略化エラートレース記憶部32に格納せず、直接、結果出力部25に出力するようにしても良い。ここで、エラートレース記憶部31に格納されたエラートレースは、ソースコード検証部23から取得されたエラートレースと読み替えても良い。
これにより、簡略化エラートレース記憶部32に格納されたエラートレースに転記されたステップの式は、条件式の真偽の判断がすでに完了した、簡略化された形になる。
ここで、図9を参照して、図4Cのステップ番号45を例に、処理手順B2,B3,B4,B5の詳細について説明する。
図9の式4501は、図4Cのステップ番号45における式を転記したものである。式4501は、条件演算子による演算45011を示す。条件演算子による演算45011は、条件式45012と、真の式45013と、偽の式45014を含む。図9の式4501を見ると、条件演算子による演算45011が含まれているため、エラートレース簡略化部24は、処理手順B3を実行する。すなわち、エラートレース簡略化部24は、条件演算子45011による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。図4Cのステップ番号45の変数iの値を見ると「1」(「i == 1」)となっているため、エラートレース簡略化部24は、条件式45012の「i == 0」を偽であると判断する。従って、条件演算子による演算45011は、偽の式45014により置き換えられ、図9の式4502の形となる。
図9の式4502は、条件演算子による演算45021を示す。条件演算子による演算45021は、条件式45022と、真の式45023と、偽の式45024を含む。図9の式4502を見ると、条件演算子による演算45021が含まれているため、エラートレース簡略化部24は、再度、処理手順B3を実行する。すなわち、エラートレース簡略化部24は、条件演算子45021による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。図4Cのステップ番号45の変数iの値を見ると「1」(「i == 1」)となっているため、エラートレース簡略化部24は、条件式45022の「i == 1」は真であると判断する。従って、条件演算子による演算45021は、真の式45023により置き換えられ、図9の4503の形となる。
図9の式4503は、条件演算子による演算45031を示す。条件演算子による演算45031は、条件式45032と、真の式45033と、偽の式45034を含む。図9の式4503を見ても、条件演算子による演算45031が含まれているため、エラートレース簡略化部24は、再度、処理手順B3を実行する。すなわち、エラートレース簡略化部24は、条件演算子45031による演算の条件式部分を、当該ステップにおける変数の値により評価し、その真偽を判断する。図4Cのステップ番号45の変数jの値を見ると「0」(「j == 0」)となっているため、エラートレース簡略化部24は、条件式45032の「j == 0」は真であると判断する。従って、条件演算子による演算45031は、真の式45033により置き換えられ、図9の4504の形となる。
図9の式4504を見ると、条件演算子による演算は含まれていないため、エラートレース簡略化部24は、このステップに関する処理を終了する。
以上のように、本発明では、コンピュータプログラムのソースコードに対して、ソースコード検証手法を適用した場合に、得られるエラートレースを参照する作業を省力化する。具体的には、エラートレースに含まれる条件演算子による演算を、エラートレースが示す変数の値を根拠にして解釈し、条件演算子が含まれない簡略化されたエラートレースをユーザに提示することにより、ユーザがエラートレースに含まれる条件演算子による演算を解釈する労力を軽減する。
本発明のエラートレース簡略化システムは、フラット化を用いたソースコード検証手法において、エラートレースに含まれる表現を簡略化することにより、ユーザにとって分かりやすいエラートレースを出力する。
まず、本発明のエラートレース簡略化システムは、入力ソースコードを読み込み、入力されたソースコードをフラット化して、フラット化されたソースコード(フラット化コード)にソースコード検証手法を適用し、得られたエラートレースをエラートレース記憶部に格納する。
次に、本発明のエラートレース簡略化システムは、エラートレース記憶部に格納されたエラートレースに含まれる全てのステップについて、条件演算子による演算を含む場合には、条件演算子による演算を含まない形式に簡略化し、簡略化エラートレース記憶部に格納する。すなわち、条件演算子は、条件式、真の式、偽の式の要素を含む。kのとき、本発明のエラートレース簡略化システムは、条件式が真であるか偽であるかを当該ステップにおける変数の値を根拠にして判定し、条件演算子によって選択された真の式、又は偽の式のみを残す。
最後に、本発明のエラートレース簡略化システムは、簡略化エラートレース記憶部に格納されたエラートレースを、簡略化エラートレースとして出力する。
これにより、ユーザは条件演算子による演算を解釈することなく、簡略化されたエラートレースを参照できるので、エラートレースを参照する労力を減らすことができる。
以上、本発明の実施形態を詳述してきたが、実際には上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
1…入力ソースコード
2…処理装置
21…ソースコード入力部
22…フラット化部
23…ソースコード検証部
24…エラートレース簡略化部
25…結果出力部
3…記憶装置
31…エラートレース記憶部
32…簡略化エラートレース記憶部
4…簡略化エラートレース
2…処理装置
21…ソースコード入力部
22…フラット化部
23…ソースコード検証部
24…エラートレース簡略化部
25…結果出力部
3…記憶装置
31…エラートレース記憶部
32…簡略化エラートレース記憶部
4…簡略化エラートレース
Claims (12)
- 入力されたソースコードをフラット化するフラット化部と、
前記フラット化されたソースコードを検証し、エラートレースを作成するソースコード検証部と、
前記作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、前記条件演算子による演算を含まない形式に簡略化するエラートレース簡略化部と
を具備する
エラートレース簡略化システム。 - 請求項1に記載のエラートレース簡略化システムであって、
前記条件演算子による演算は、
前記ステップにおける変数の値に基づいて、真であるか偽であるかを判定するための条件式と、
前記条件式が真の場合に選択される真の式と、
前記条件式が偽の場合に選択される偽の式と
を含む
エラートレース簡略化システム。 - 請求項2に記載のエラートレース簡略化システムであって、
前記エラートレース簡略化部は、前記ステップにおける変数の値に基づいて、前記条件演算子による演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記条件演算子による演算を、前記条件演算子による演算における真の式と偽の式とのいずれかに置き換える
エラートレース簡略化システム。 - 請求項3に記載のエラートレース簡略化システムであって、
前記エラートレース簡略化部は、前記置き換えられた後の演算が前記条件演算子による演算である場合、前記置き換えられた後の演算に対し、前記ステップにおける変数の値に基づいて、前記置き換えられた後の演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記置き換えられた後の演算を、前記置き換えられた後の演算における真の式と偽の式とのいずれかに置き換える
エラートレース簡略化システム。 - 入力されたソースコードをフラット化することと、
前記フラット化されたソースコードを検証し、エラートレースを作成することと、
前記作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、前記条件演算子による演算を含まない形式に簡略化することと
を含む
エラートレース簡略化方法。 - 請求項5に記載のエラートレース簡略化方法であって、
前記条件演算子による演算は、
前記ステップにおける変数の値に基づいて、真であるか偽であるかを判定するための条件式と、
前記条件式が真の場合に選択される真の式と、
前記条件式が偽の場合に選択される偽の式と
を含む
エラートレース簡略化方法。 - 請求項6に記載のエラートレース簡略化方法であって、
前記ステップにおける変数の値に基づいて、前記条件演算子による演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記条件演算子による演算を、前記条件演算子による演算における真の式と偽の式とのいずれかに置き換えること
を更に含む
エラートレース簡略化方法。 - 請求項7に記載のエラートレース簡略化方法であって、
前記置き換えられた後の演算が前記条件演算子による演算である場合、前記置き換えられた後の演算に対し、前記ステップにおける変数の値に基づいて、前記置き換えられた後の演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記置き換えられた後の演算を、前記置き換えられた後の演算における真の式と偽の式とのいずれかに置き換えること
を更に含む
エラートレース簡略化方法。 - 入力されたソースコードをフラット化することと、
前記フラット化されたソースコードを検証し、エラートレースを作成することと、
前記作成されたエラートレースに含まれるステップに対し、条件演算子による演算を含む場合には、前記条件演算子による演算を含まない形式に簡略化することと
をコンピュータに実行させるための
プログラム。 - 請求項9に記載のプログラムであって、
前記条件演算子による演算は、
前記ステップにおける変数の値に基づいて、真であるか偽であるかを判定するための条件式と、
前記条件式が真の場合に選択される真の式と、
前記条件式が偽の場合に選択される偽の式と
を含む
プログラム。 - 請求項10に記載のプログラムであって、
前記ステップにおける変数の値に基づいて、前記条件演算子による演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記条件演算子による演算を、前記条件演算子による演算における真の式と偽の式とのいずれかに置き換えること
を更にコンピュータに実行させるための
プログラム。 - 請求項11に記載のプログラムであって、
前記置き換えられた後の演算が前記条件演算子による演算である場合、前記置き換えられた後の演算に対し、前記ステップにおける変数の値に基づいて、前記置き換えられた後の演算における条件式が真であるか偽であるかを判定し、判定結果に応じて、前記置き換えられた後の演算を、前記置き換えられた後の演算における真の式と偽の式とのいずれかに置き換えること
を更にコンピュータに実行させるための
プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008265162A JP5170555B2 (ja) | 2008-10-14 | 2008-10-14 | エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008265162A JP5170555B2 (ja) | 2008-10-14 | 2008-10-14 | エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010097251A true JP2010097251A (ja) | 2010-04-30 |
JP5170555B2 JP5170555B2 (ja) | 2013-03-27 |
Family
ID=42258913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008265162A Expired - Fee Related JP5170555B2 (ja) | 2008-10-14 | 2008-10-14 | エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5170555B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015088191A (ja) * | 2013-10-31 | 2015-05-07 | タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited | 静的解析警告のユーザインタフェース使用可能レビューを促進するシステム及び方法 |
JP2020155025A (ja) * | 2019-03-22 | 2020-09-24 | 三菱電機インフォメーションネットワーク株式会社 | サービス量可視化システムおよびサービス量可視化プログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163592B2 (en) | 2020-01-10 | 2021-11-02 | International Business Machines Corporation | Generation of benchmarks of applications based on performance traces |
US11138094B2 (en) | 2020-01-10 | 2021-10-05 | International Business Machines Corporation | Creation of minimal working examples and environments for troubleshooting code issues |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10333943A (ja) * | 1997-05-27 | 1998-12-18 | Mitsubishi Electric Corp | 計算機システムのトレース・ログ処理方法とその処理装置 |
-
2008
- 2008-10-14 JP JP2008265162A patent/JP5170555B2/ja not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10333943A (ja) * | 1997-05-27 | 1998-12-18 | Mitsubishi Electric Corp | 計算機システムのトレース・ログ処理方法とその処理装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015088191A (ja) * | 2013-10-31 | 2015-05-07 | タタ コンサルタンシー サービシズ リミテッドTATA Consultancy Services Limited | 静的解析警告のユーザインタフェース使用可能レビューを促進するシステム及び方法 |
JP2020155025A (ja) * | 2019-03-22 | 2020-09-24 | 三菱電機インフォメーションネットワーク株式会社 | サービス量可視化システムおよびサービス量可視化プログラム |
JP7256662B2 (ja) | 2019-03-22 | 2023-04-12 | 三菱電機インフォメーションネットワーク株式会社 | サービス量可視化システムおよびサービス量可視化プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP5170555B2 (ja) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4148527B2 (ja) | 機能テスト・スクリプト生成装置 | |
JP5679989B2 (ja) | デバッグパイプライン | |
US9424008B2 (en) | API descriptions | |
US8863101B2 (en) | Compiler generator | |
US8701084B1 (en) | Preview of auto-fix changes to software code | |
JP5303795B2 (ja) | アプリケーションの解析方法、解析システム及び解析プログラム | |
JP5170555B2 (ja) | エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム | |
KR101826828B1 (ko) | 로그 데이터 관리 시스템 및 방법 | |
JP4915362B2 (ja) | 静的検証ツールのアノテーション自動挿入方法 | |
JP2008165342A (ja) | ソースコード生成方法及び装置並びにプログラム | |
US20130111431A1 (en) | Validation of a system model including an activity diagram | |
JP2009098872A (ja) | ソースプログラム解析装置、ソースプログラム解析方法及びコンピュータプログラム | |
JP5093508B2 (ja) | ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム | |
JP5755861B2 (ja) | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム | |
US8332204B2 (en) | Instruction check program, instruction check apparatus, and I/O simulator | |
JP2005174045A (ja) | ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体 | |
JP2012048660A (ja) | 静的解析処理システム、方法、およびプログラム | |
JP2014106770A (ja) | 型チェック装置、型チェック方法および型チェックプログラム | |
JP5365846B2 (ja) | プログラム検証装置、プログラム検証方法、及び検証機能実行用プログラム | |
JP5017396B2 (ja) | 情報処理装置およびプログラムの検証方法 | |
JP4946588B2 (ja) | 検証支援プログラム、該プログラムを記録した記録媒体、検証支援装置、および検証支援方法 | |
JP2007041777A (ja) | 言語処理方法 | |
JP2006277560A (ja) | ソフトウェア開発支援装置、設計文書生成プログラム及び設計文書生成方法 | |
JP2007219893A (ja) | ファームウェア評価システムおよびファームウェア評価方法 | |
JP2005301415A (ja) | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110803 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121121 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20121219 |
|
LAPS | Cancellation because of no payment of annual fees |