JP5678689B2 - コンピュータプログラム、プログラム解析方法及びプログラム解析装置 - Google Patents
コンピュータプログラム、プログラム解析方法及びプログラム解析装置 Download PDFInfo
- Publication number
- JP5678689B2 JP5678689B2 JP2011016842A JP2011016842A JP5678689B2 JP 5678689 B2 JP5678689 B2 JP 5678689B2 JP 2011016842 A JP2011016842 A JP 2011016842A JP 2011016842 A JP2011016842 A JP 2011016842A JP 5678689 B2 JP5678689 B2 JP 5678689B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- call
- line
- cpu
- data
- 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.)
- Expired - Fee Related
Links
Images
Description
なお、本発明は、以下の実施の形態に限定されるものではない。
RAM13は、例えばSRAM(Static RAM)、DRAM(Dynamic RAM)であり、CPU11が実行する処理の過程で必要な作業変数、データ等を一時的に記録する。なお、RAM13は主記憶装置の一例であり、RAM13の代わりにフラッシュメモリ、メモリカード等が用いられてもよい。
なお、ハードディスク14は、プログラム解析装置1の内部に取り付けられるものであっても、プログラム解析装置1の外部に置かれるものであってもよい。また、ハードディスク14は補助記憶装置の一例であり、大容量の情報の記録が可能なフラッシュメモリ、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu-ray Disc、登録商標)等の光ディスク1aで代替してもよい。
図2は、データ処理の流れの一例を示すデータフロー図である。対象プログラム実行部21、関数呼び出し履歴計側部22及び関数呼び出し履歴分析部23は、CPU11がハードディスク14に記録されたプログラム1Pに基づいて動作することにより実行される各機能部である。
関数呼び出し履歴分析部23は、変更データ関数別計測ファイル220Fに記録された関数についても、呼び出し開始行及び呼び出し終了行の行番号に基づいて、関数毎に各種の行間距離を算出する。
CPU11は、基準データSD及び変更データCDを受け付ける(ステップS101)。CPU11は、受け付けた基準データSD及び変更データCDに基づいて、解析対象プログラムを実行する(ステップS102)。CPU11は、基準データSD及び変更データCDの全データに基づいて、解析対象プログラムを実行したか否か判定する(ステップS103)。CPU11は、基準データSD及び変更データCDの全データに基づいて、解析対象プログラムを実行していないと判定した場合(ステップS103:NO)、ステップS102に処理を戻す。CPU11は、基準データSD及び変更データCDの全データに基づいて、解析対象プログラムを実行したと判定した場合(ステップS103:YES)、基準データ実行履歴ファイル21F及び変更データ実行履歴ファイル210Fを作成する(ステップS104)。
本実施の形態では、対象プログラム実行部21が解析対象プログラムを実行する前に、入力データである基準データSDと変更データCDとを用意する必要がある。基準データSD及び変更データCDは、データベースのテーブルデータ、画面からの入力データ、ファイルのデータ等である。基準データSDは、既存の入力データでもよいし、手作業又は入力データ作成ソフト等により新規に作成されてもよい。
なお、基準データSDに対して最初に差分データDDを作成し、その後に基準データSDと差分データDDとから変更データCDを作成してもよい。
また、用意した基準データSD及び変更データCDをプログラム解析装置1のハードディスク14に記録する。
CPU11は、基準データSD及び変更データCDに基づいて実行された解析対象プログラムの実行履歴を夫々基準データ実行履歴ファイル21F及び変更データ実行履歴ファイル210Fとしてハードディスク14に記録する。
以下のステップS202からステップS212までの処理は、基準データ実行履歴ファイル21Fの1行についての処理であり、基準データ実行履歴ファイル21Fの行数だけ繰り返し実行される。
呼び出し回数が複数回である関数の場合、複数の呼び出し開始行番号及び複数の呼び出し終了行番号がRAM13に記録される。かかる場合、呼び出し開始行番号の数と呼び出し終了行番号の数とは同数である。
例えば、基準データ関数別計測ファイル22Fを作成するために、CPU11は1つの関数について、関数名及び呼び出し回数をRAM13に記録した関数の呼び出し履歴から抽出する。
CPU11は、当該関数の呼び出し開始が最初に取得された行番号をRAM13に記録した関数の呼び出し履歴から抽出する。以後、この行番号を初出開始行と呼ぶ。
CPU11は、当該関数の呼び出し終了が最初に取得された行番号をRAM13に記録した関数の呼び出し履歴から抽出する。以後、この行番号を初出終了行と呼ぶ。
CPU11は、当該関数の呼び出し開始が最後に取得された行番号をRAM13に記録した関数の呼び出し履歴から抽出する。以後、この行番号を最終開始行と呼ぶ。
CPU11は、当該関数の呼び出し終了が最後に取得された行番号をRAM13に記録した関数の呼び出し履歴から抽出する。以後、この行番号を最終終了行と呼ぶ。
CPU11は、作成した基準データ関数別計測ファイル22F及び変更データ関数別計測ファイル220Fをハードディスク14に記録する。
CPU11は、関数の呼び出し終了の行を読み込んだ場合、初出終了行及び最終終了行に、読み込んだ行の行番号を記録する。CPU11は、次に再び関数の呼び出し終了の行を読み込んだ場合、初出終了行はそのままにし、最終終了行を新たに読み込んだ行の行番号に更新する。CPU11は、その後さらに関数の呼び出し終了の行を読み込んだ場合、次々と最終終了行だけを更新する。
CPU11は、基準データ関数別計測ファイル22Fをハードディスク14からRAM13にロードする(ステップS301)。CPU11は、基準データ関数別計測ファイル22Fから次の1行を読み込む(ステップS302)。ステップS302において、CPU11は基準データ関数別計測ファイル22Fを開いた直後の場合、先頭の1行を読み込む。CPU11は、関数名及び関数の呼び出し回数を取得する(ステップS303)。
CPU11は、変更データ関数別計測ファイル220Fの全関数についてステップS302からステップS308の処理を実行したと判定した場合(ステップS309:YES)、ステップS310に処理を進める。
なお、関数行間距離は、初出開始行及び初出終了行の差に限らず、最終開始行及び最終終了行の差であってもよい。あるいは、関数行間距離は、関数の呼び出し開始がn回目(ただし、nは自然数)に取得された行番号と、関数の呼び出し終了がn回目に取得された行番号との差であってもよい。すなわち、関数行間距離は、関数の呼び出し開始及び呼び出し終了が夫々同一の呼び出し回数目に取得された行番号同士の差であってもよい。
また、開始行間距離は、初出開始行及び最終開始行の差に限らず、初出終了行及び最終終了行の差であってもよい。
この段階では、RAM13に関数別呼び出し履歴分析ファイル23Fの内容が記録されている。
一方の分析情報にのみ存在する関数は、入力データの変化によって実行されなかった関数が実行されるように変化した関数又は実行された関数が実行されないように変化した関数である。例えば、一方の分析情報にのみ存在する関数は、例外処理、エラー処理等を実行する関数を含む。入力データの値又は量が変化した場合、関数の設計仕様によっては例外処理又はエラー処理の関数が呼び出されることがある。
例えば、関数が解析対象プログラムの中で上位の機能を有し、当該関数から別の関数が呼び出されて処理が実行される場合がある。かかる場合、呼び出し先の別の関数の呼び出し回数が変化したとき、呼び出し元の関数の関数行間距離は変化する。従って、関数行間距離が異なる関数は、解析対象プログラムにおいて上位の機能を有する可能性がある。
なお、ここでのステップ数とは、解析対象プログラムの実行履歴(駆動履歴)の各行から取得される関数のステップ数であり、解析対象プログラムのソースコードにおけるステップ数とは異なる場合が含まれる。
一方、入力データが変化しても自身の呼び出し回数は変わらない関数がある。かかる場合、開始行間距離が異なる関数は、自身から呼び出す別の関数を有し、この別の関数を呼び出す回数を変化させた可能性がある。この場合、開始行間距離が異なる関数は、解析対象プログラムにおいて上位の機能を有する可能性がある。
入力データが変化しても開始行間距離が異なる関数の呼び出し回数が変わらない場合、他の解釈も考え得る。例えば、入力データの変化によって、関数の初出の呼び出し開始行と関数の最終の呼び出し開始行との間に、割り込み処理を実行する関数が呼び出されることが考えられる。あるいは、入力データの変化によって、ステップ数が異なる複数の関数の実行順序が変化した可能性が考えられる。
まず、入力データである基準データSD及び変更データCDについて説明する。基準データSD及び変更データCDとして、データベースのテーブルレコードを扱う。
図9は、基準データSDである商品在庫テーブルのレコード例を示す説明図である。商品在庫テーブルは、商品の在庫を管理するテーブルである。商品在庫テーブルは、商品コード、商品名、登録日時及び在庫数の各列を含む。商品コードは、商品の識別コードを格納し、商品在庫テーブルの主キーである。商品名は、商品の名称を格納する。登録日時は、在庫数が変化したときの日時を格納する。在庫数は、商品の在庫数を格納する。基準データSDの総数は2件である。
本実施例では、基準データSD及び変更データCDの組は1組であるため、差分データDDは1種類である。しかし、基準データSD及び変更データCDの組を複数用意した場合、各組ごとに差分データDDを作成する。
同様に、プログラム解析装置1に変更データCDを入力し、解析対象プログラムの実行履歴を変更データ実行履歴ファイル210Fとしてハードディスク14に出力させる。
図12及び図13は、解析対象プログラムの同一機能を実行した場合の実行履歴を示している。各行の左端の数字は行番号である。なお、基準データ実行履歴ファイル21F及び変更データ実行履歴ファイル210Fは、行番号が記録されていてもよいし、記録されていなくてもよい。
CPU11は、基準データ実行履歴ファイル21Fの1行目を読み込み、toplist1の関数名と、toplist1の呼び出し開始が1行目にあることとを取得する。CPU11は、作業用の配列を参照し、toplist1がこの配列に格納されていないことから、初めて登場した関数としてtoplist1を配列に格納する。CPU11は、>の記号から1行目は呼び出し開始情報であると判定し、toplist1の呼び出し回数を0から1にインクリメントする。1行目はtoplist1の呼び出し開始の最初に相当するので、CPU11は、toplist1の初出開始行に1を記録する。また、現時点で1行目はtoplist1の呼び出し開始の最後に相当するので、CPU11はtoplist1の最終開始行に1を記録する。
CPU11は、基準データ実行履歴ファイル21Fについて実行した処理と同じ処理を変更データ実行履歴ファイル210Fについても実行する。図13に示す変更データ実行履歴ファイル210Fの場合、12行目以降の部分に基準データ実行履歴ファイル21Fとの差がある。CPU11は、基準データ実行履歴ファイル21Fよりもitem1が4回多く登場することを変更データ関数別計測ファイル220Fに記録する。図15の変更データ関数別計測ファイル220Fは、CPU11が変更データ実行履歴ファイル210Fについて計測処理を実行した最終状態を示している。
CPU11は、基準データ関数別計測ファイル22Fの1行目を読み込む。CPU11は、関数名toplist1及び呼び出し回数1を取得する。CPU11は、最終開始行1と初出開始行1との差から開始行間距離0を取得する。CPU11は、初出終了行14と初出開始行1との差から関数行間距離13を取得する。
CPU11は、変更データ関数別計測ファイル220Fの各行からも同様に、夫々関数名、呼び出し回数、開始行間距離及び関数行間距離を取得する。
CPU11は、関数別呼び出し履歴分析ファイル23Fの1行目を読み込む。
CPU11は、基準データSDに基づく関数の分析情報又は変更データCDに基づく関数の分析情報のうち、一方の分析情報にのみ存在する関数があるか否か判定する。toplist1は双方の関数の分析情報に含まれているため、CPU11はtoplist1の有無に差分はないと判定する。
CPU11は、双方の分析情報に記録されたtoplist1の呼び出し回数が同じか否か判定する。呼び出し回数は夫々1、1であり同一なので、CPU11は、toplist1は呼び出し回数が異なる関数ではないと判定する。
CPU11は、双方の分析情報に記録されたtoplist1の開始行間距離が同じか否か判定する。開始行間距離は夫々0、0なので、CPU11は、toplist1は開始行間距離が異なる関数ではないと判定する。
CPU11は、双方の分析情報に記録されたtoplist1の関数行間距離が同じか否か判定する。関数行間距離は、夫々13、21であり異なるので、CPU11は、toplist1は関数行間距離が異なる関数であると判定する。
その結果、CPU11は、item1は一方の分析情報にのみ存在する関数ではないと判定する。CPU11は、item1は呼び出し回数が異なる関数であると判定する。CPU11は、item1は開始行間距離が異なる関数であると判定する。CPU11は、item1は関数行間距離が異なる関数でないと判定する。
CPU11は、init1は一方の分析情報にのみ存在する関数ではないと判定する。CPU11は、init1は呼び出し回数が異なる関数でないと判定する。CPU11は、init1は開始行間距離が異なる関数であると判定する。CPU11は、init1は関数行間距離が異なる関数でないと判定する。
図17の例では、一方の分析情報にのみ存在する関数は存在せず、呼び出し回数が異なる関数はitem1である。開始行間距離が異なる関数は、item1及びinit1、関数行間距離が異なる関数はtoplist1である。
なお、一方の分析情報にのみ存在する関数は、一方の分析情報の呼び出し回数が1回以上、他方の分析情報の呼び出し回数が0回の関数として表示されてもよい。
item1は、呼び出し回数が異なる関数であり、開始行間距離が異なる関数でもある。基準データSDと変更データCDとの違いはデータ数であることから、item1は入力データ数の違いにより呼び出し回数が変化する関数であるといえる。そのため、item1は、商品在庫の情報を商品の種類ごとに処理する関数である可能性がある。
解析対象プログラムの機能毎に実行履歴から抽出された関数の属性は、入力データの変化に対する動作変化に基づいて4種類に分類される。差分リストファイル230Fにおいて、関数は基準データSD及び変更データCDの差分である差分データDDと、対応づけられており、解析対象プログラムにおける各関数の動作の理解を支援することができる。
図18は、基準データSDに基づく関数の分析情報と変更データCDに基づく関数の分析情報との差分を示す説明図である。図18の関数名は、図16の関数名と同じである。図16の呼び出し回数差、開始行間距離差及び関数行間距離差は、夫々図16の基準データSDに基づく関数の分析情報と変更データCDに基づく関数の分析情報との各差に該当する。つまり、図18には、入力データの変化による関数の動作変化が定量的に示されている。
item1は、呼び出し回数に4回、開始行間距離に8行の変化がある。変更データCDの件数が基準データSDの件数より4件多いことを勘案した場合、item1は、商品在庫テーブルのレコードを1件ずつ処理する関数であることが想像される。
init1は、関数行間距離に8行の変化がある。この変化量はitem1の開始行間距離の変化に等しい。従って、init1は、item1を呼び出していることが想像される。
toplist1は、呼び出し回数及び開始行間距離に変化がなく、関数行間距離に8行の変化がある。この変化量はitem1及びinit1の開始行間距離の変化に等しい。従って、toplist1は、item1又はinit1を呼び出していることが想像される。
なお、基準データに対応する関数の分析情報と変更データに対する関数の分析情報との間に差がないことも、リバースエンジニアリングの情報として有益である。従って、図18において、0と記された情報からも、関数の解釈に有益な情報が得られる。例えば、toplist1及びinit1は、入力データのデータ量が変化しても呼び出し回数は変化していない。そのため、toplist1及びinit1は、データ量の変化とは無関係な処理をしていることが想像される。
図19は、解析対象プログラムの実行履歴における関数間の構造の一例を示す説明図である。図19では、関数の呼び出し順序に基づいた入れ子構造が示されている。
図12又は図13の実行履歴において、toplist1の呼び出し開始と呼び出し終了との間に、init1の呼び出し開始と呼び出し終了とがある。また、init1の呼び出し開始と呼び出し終了との間に、item1の呼び出し開始と呼び出し終了とがある。従って、ソースコードにおいてもitem1はinit1の内部で入れ子になり、init1はtoplist1の内部で入れ子になっている可能性がある。
関数の呼び出し回数、開始行間距離及び関数行間距離から関数の動作を決定することが困難な場合であっても、関数の呼び出し順序に基づいた関数間の構造を勘案することにより、関数動作推定の支援が可能となる。
対象プログラムを解析する処理をコンピュータに実行させるコンピュータプログラムにおいて、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段に記録された該第1駆動履歴から、該対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出し、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出し、
前記関数の第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
処理をコンピュータに実行させるコンピュータプログラム。
前記関数の呼び出し情報は該関数の呼び出し開始又は呼び出し終了を示す情報を含み、
前記関数の第1及び第2呼び出し履歴を抽出する処理は、該関数の呼び出し開始又は呼び出し終了に係る第1及び第2呼び出し履歴を夫々抽出し、
前記関数の呼び出し回数又は呼び出し箇所を取得する処理は、該関数の呼び出し開始又は呼び出し終了に係る第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
付記1に記載のコンピュータプログラム。
前記対象プログラムの第1及び第2駆動履歴は行単位の文字列であり、
前記関数の呼び出し箇所を取得する処理は、該関数の呼び出し開始又は呼び出し終了に対応する行番号を取得する
付記2に記載のコンピュータプログラム。
前記関数の呼び出し開始又は呼び出し終了に対応する行番号に基づいて、該関数の処理に関するステップ数に応じた行の数量を算出する
付記3に記載のコンピュータプログラム。
前記ステップ数に応じた行の数量を算出する処理は、前記対象プログラムの第1及び第2駆動履歴各々における関数の同一呼び出し回数目の呼び出し開始及び呼び出し終了に夫々対応する行番号に基づいて、前記ステップ数に応じた行の数量を算出する
付記4に記載のコンピュータプログラム。
前記ステップ数に応じた行の数量を算出する処理は、前記対象プログラムの第1及び第2駆動履歴各々における関数の呼び出し開始に対応する最初の行番号及び呼び出し開始に対応する最後の行番号、又は該関数の呼び出し終了に対応する最初の行番号及び呼び出し終了に対応する最後の行番号に基づいて、前記ステップ数に応じた行の数量を算出する
付記4に記載のコンピュータプログラム。
前記関数の呼び出し回数又はステップ数に応じた行の数量に基づいて、前記第1及び第2入力データに夫々対応する該関数の呼び出し回数又はステップ数に応じた行の数量の間の同異又は変化量を求める
付記4から付記6までのいずれか一つに記載のコンピュータプログラム。
前記第1入力データは値を有し、
前記第2入力データは前記第1入力データの値又はデータ量を変更したデータである
付記1から付記7までのいずれか一つに記載のコンピュータプログラム。
前記対象プログラムは機械語により記述されている
付記1から付記8までのいずれか一つに記載のコンピュータプログラム。
対象プログラムを解析するプログラム解析方法において、
コンピュータが、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段に記録された該第1駆動履歴から、該対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出し、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出し、
前記関数の第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
プログラム解析方法。
対象プログラムを解析するプログラム解析装置において、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段と、
該記録手段に記録された第1駆動履歴から、前記対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出する第1抽出部と、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出する第2抽出部と、
前記第1及び第2抽出部が夫々抽出した関数の前記第1及び第2呼び出し履歴に基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する取得部と
を備えるプログラム解析装置。
11 CPU
13 RAM
14 ハードディスク
22 関数呼び出し履歴計測部
23 関数呼び出し履歴分析部
SD 基準データ
CD 変更データ
DD 差分データ
21F 基準データ実行履歴ファイル
210F 変更データ実行履歴ファイル
22F 基準データ関数別計測ファイル
220F 変更データ関数別計測ファイル
23F 関数別呼び出し履歴分析ファイル
230F 差分リストファイル
1P プログラム
1a 光ディスク
Claims (8)
- 対象プログラムを解析する処理をコンピュータに実行させるコンピュータプログラムにおいて、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段に記録された該第1駆動履歴から、該対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出し、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出し、
前記関数の第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
処理をコンピュータに実行させるコンピュータプログラム。 - 前記関数の呼び出し情報は該関数の呼び出し開始又は呼び出し終了を示す情報を含み、
前記関数の第1及び第2呼び出し履歴を抽出する処理は、該関数の呼び出し開始又は呼び出し終了に係る第1及び第2呼び出し履歴を夫々抽出し、
前記関数の呼び出し回数又は呼び出し箇所を取得する処理は、該関数の呼び出し開始又は呼び出し終了に係る第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
請求項1に記載のコンピュータプログラム。 - 前記対象プログラムの第1及び第2駆動履歴は行単位の文字列であり、
前記関数の呼び出し箇所を取得する処理は、該関数の呼び出し開始又は呼び出し終了に対応する行番号を取得する
請求項2に記載のコンピュータプログラム。 - 前記関数の呼び出し開始又は呼び出し終了に対応する行番号に基づいて、該関数の処理に関するステップ数に応じた行の数量を算出する
請求項3に記載のコンピュータプログラム。 - 前記ステップ数に応じた行の数量を算出する処理は、前記対象プログラムの第1及び第2駆動履歴各々における関数の同一呼び出し回数目の呼び出し開始及び呼び出し終了に夫々対応する行番号に基づいて、前記ステップ数に応じた行の数量を算出する
請求項4に記載のコンピュータプログラム。 - 前記ステップ数に応じた行の数量を算出する処理は、前記対象プログラムの第1及び第2駆動履歴各々における関数の呼び出し開始に対応する最初の行番号及び呼び出し開始に対応する最後の行番号、又は該関数の呼び出し終了に対応する最初の行番号及び呼び出し終了に対応する最後の行番号に基づいて、前記ステップ数に応じた行の数量を算出する
請求項4に記載のコンピュータプログラム。 - 対象プログラムを解析するプログラム解析方法において、
コンピュータが、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段に記録された該第1駆動履歴から、該対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出し、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出し、
前記関数の第1及び第2呼び出し履歴に夫々基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する
プログラム解析方法。 - 対象プログラムを解析するプログラム解析装置において、
第1入力データ及び該第1入力データと異なる第2入力データに夫々基づく前記対象プログラムの第1駆動履歴及び第2駆動履歴を記録する記録手段と、
該記録手段に記録された第1駆動履歴から、前記対象プログラムに含まれる関数の呼び出し情報に基づいて、該関数の第1呼び出し履歴を抽出する第1抽出部と、
前記記録手段に記録された第2駆動履歴から、前記関数の呼び出し情報に基づいて、該関数の第2呼び出し履歴を抽出する第2抽出部と、
前記第1及び第2抽出部が夫々抽出した関数の前記第1及び第2呼び出し履歴に基づいて、前記第1及び第2駆動履歴各々における該関数の呼び出し回数又は呼び出し箇所を取得する取得部と
を備えるプログラム解析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011016842A JP5678689B2 (ja) | 2011-01-28 | 2011-01-28 | コンピュータプログラム、プログラム解析方法及びプログラム解析装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011016842A JP5678689B2 (ja) | 2011-01-28 | 2011-01-28 | コンピュータプログラム、プログラム解析方法及びプログラム解析装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012155680A JP2012155680A (ja) | 2012-08-16 |
JP5678689B2 true JP5678689B2 (ja) | 2015-03-04 |
Family
ID=46837310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011016842A Expired - Fee Related JP5678689B2 (ja) | 2011-01-28 | 2011-01-28 | コンピュータプログラム、プログラム解析方法及びプログラム解析装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5678689B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6553461B2 (ja) * | 2015-09-17 | 2019-07-31 | 株式会社日立製作所 | 既存システム処理仕様抽出装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7496900B2 (en) * | 2004-02-12 | 2009-02-24 | International Business Machines Corporation | Method for automatic detection of build regressions |
JP2009211424A (ja) * | 2008-03-04 | 2009-09-17 | Mitsubishi Electric Corp | 最適化箇所判定装置及び最適化箇所判定システム及びコンピュータプログラム及び最適化箇所判定方法 |
JP2010049489A (ja) * | 2008-08-21 | 2010-03-04 | Toshiba Corp | デバッグ支援装置およびデバッグ支援プログラム |
JP2010102663A (ja) * | 2008-10-27 | 2010-05-06 | Nec Corp | プログラム解析装置およびプログラム解析方法並びにプログラム解析用プログラム |
-
2011
- 2011-01-28 JP JP2011016842A patent/JP5678689B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012155680A (ja) | 2012-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9690788B2 (en) | File type recognition analysis method and system | |
JP4911438B2 (ja) | 操作監視装置 | |
JP2007094818A (ja) | 複数データの一括コピー及びペースト方法、装置、およびコンピュータ・プログラム | |
JP2007011604A (ja) | 不具合診断システム及びプログラム | |
JPH08241191A (ja) | Gui自動評価装置 | |
CN113869789A (zh) | 一种风险监控的方法、装置、计算机设备及存储介质 | |
JP5678689B2 (ja) | コンピュータプログラム、プログラム解析方法及びプログラム解析装置 | |
CN114676231A (zh) | 一种目标信息检测方法、设备和介质 | |
TWI581172B (zh) | Input device, form input method, recording medium | |
JPWO2009011057A1 (ja) | アプリケーション解析プログラム、アプリケーション解析方法およびアプリケーション解析装置 | |
JP5670156B2 (ja) | テスト結果照合システム、方法、及びプログラム | |
CN112149402B (zh) | 文档对比方法、装置、电子设备和计算机可读存储介质 | |
JP2016057715A (ja) | 図形式プログラム解析装置 | |
CN110766402B (zh) | 交易顺序依赖漏洞检测方法、系统、电子装置及存储介质 | |
JP2009199172A (ja) | 情報処理システム、プログラム中の類似箇所特定方法、及びプログラム | |
JP5568020B2 (ja) | 含有化学物質管理システム | |
JP2008210229A (ja) | 知的財産情報検索装置、知的財産情報検索方法及び知的財産情報検索プログラム | |
CN111164560A (zh) | 用于动态地定义数据记录格式的技术 | |
JP2012173745A (ja) | データベース解析装置及びデータベース解析プログラム | |
JP6553461B2 (ja) | 既存システム処理仕様抽出装置 | |
JP6973433B2 (ja) | 帳票処理装置、帳票処理方法、及びプログラム | |
JPWO2018154784A1 (ja) | 影響抽出装置、影響抽出プログラム及び影響抽出方法 | |
US20140244685A1 (en) | Method of searching and generating a relevant search string | |
CN106293897A (zh) | 组件自动化调度系统 | |
JP2017004178A (ja) | 積算業務テスト支援システム、方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131007 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140520 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140603 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20141209 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5678689 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |