(57)【要約】【課題】ソースコードの解析をきめ細かく制御できる構成を得る。【解決手段】解析プログラム３００の実行によりソースコード７００が解析される。実行状況抽出部６００は、解析プログラム３００の実行中に、解析プログラム３００の実行状況が示される実行状況データ３１０を抽出する。解析管理部２００は、解析プログラム３００の実行中に、実行状況抽出部６００により抽出された実行状況データ３１０に基づき、解析プログラム３００の実行状況を表示装置５００に表示する。【選択図】図１
2016053838.tif 000002
【特許請求の範囲】
【請求項１】
解析プログラムの実行によりソースコードを解析するソースコード解析装置であって、
前記解析プログラムの実行中に、前記解析プログラムの実行状況が示される実行状況データを抽出する実行状況抽出部と、
前記解析プログラムの実行中に、前記実行状況抽出部により抽出された前記実行状況データに基づき、前記解析プログラムの実行状況を表示装置に表示する解析管理部とを有することを特徴とするソースコード解析装置。
【請求項２】
前記実行状況抽出部は、
前記解析プログラムの実行状況として、現在解析対象となっている前記ソースコード内の位置が示される実行状況データを抽出し、
前記解析管理部は、
前記解析プログラムの実行状況として、現在解析対象となっている前記ソースコード内の位置を前記表示装置に表示することを特徴とする請求項１に記載のソースコード解析装置。
【請求項３】
前記ソースコード解析装置は、
複数のモジュールに区分されるソースコードを解析し、
前記実行状況抽出部は、
前記解析プログラムの実行状況として、現在解析対象となっている前記ソースコード内の位置が示される実行状況データを抽出し、
前記解析管理部は、
前記実行状況抽出部により抽出された前記実行状況データに示される前記ソースコード内の位置に対応するモジュールを特定し、前記解析プログラムの実行状況として、特定したモジュールが現在解析対象となっていることを前記表示装置に表示することを特徴とする請求項１に記載のソースコード解析装置。
【請求項４】
前記ソースコード解析装置は、
前記ソースコードでのデータの処理の推移を解析し、
前記実行状況抽出部は、
前記解析プログラムの実行状況として、現在解析対象となっているデータが示される実行状況データを抽出し、
前記解析管理部は、
前記解析プログラムの実行状況として、現在解析対象となっているデータを前記表示装置に表示することを特徴とする請求項１に記載のソースコード解析装置。
【請求項５】
前記解析管理部は、
前記解析プログラムの実行状況をグラフィカルに前記表示装置に表示することを特徴とする請求項１に記載のソースコード解析装置。
【請求項６】
前記ソースコード解析装置は、更に、
前記ソースコード解析装置のユーザからの要求に従い、前記解析プログラムの実行を制御するプログラム実行制御部を有することを特徴とする請求項１に記載のソースコード解析装置。
【請求項７】
前記プログラム実行制御部は、
前記解析プログラムの実行を停止させ、前記解析プログラムの実行を停止するまでに前記解析プログラムの実行により得られた解析結果を破棄することを特徴とする請求項６に記載のソースコード解析装置。
【請求項８】
前記プログラム実行制御部は、
前記解析プログラムによる前記ソースコードの解析に用いられるパラメータを変更することを特徴とする請求項６に記載のソースコード解析装置。
【請求項９】
前記プログラム実行制御部は、
前記解析プログラムによる前記ソースコードの解析速度を変更することを特徴とする請求項６に記載のソースコード解析装置。
【請求項１０】
前記プログラム実行制御部は、
前記解析プログラムによる前記ソースコードの解析に用いられるパラメータを変更して、前記解析プログラムによる前記ソースコードの解析速度を変更することを特徴とする請求項９に記載のソースコード解析装置。
【請求項１１】
前記プログラム実行制御部は、
前記解析プログラムの実行を一時停止させ、一時停止させた前記解析プログラムの実行を再開させることを特徴とする請求項６に記載のソースコード解析装置。
【請求項１２】
前記プログラム実行制御部は、
現在実行中の解析プログラムの実行を中断させ、既に実行済みの解析プログラムの再実行を開始させ、また、現在実行中の解析プログラムの実行を中断させ、未実行の解析プログラムの実行を開始させることを特徴とする請求項１０に記載のソースコード解析装置。
【請求項１３】
前記プログラム実行制御部は、
前記解析プログラムの実行の制御のための複数のボタンを前記表示装置に表示し、前記ユーザが指定したボタンに対応させた制御を行うことを特徴とする請求項６に記載のソースコード解析装置。
【請求項１４】
ソースコードを解析する解析プログラムをコンピュータが実行中に、前記コンピュータが、前記解析プログラムの実行状況が示される実行状況データを抽出する実行状況抽出ステップと、
前記解析プログラムの実行中に、前記コンピュータが、前記実行状況抽出ステップにより抽出された前記実行状況データに基づき、前記解析プログラムの実行状況を表示装置に表示する解析管理ステップとを有することを特徴とするソースコード解析方法。
【請求項１５】
ソースコードを解析する解析プログラムの実行中に、前記解析プログラムの実行状況が示される実行状況データを抽出する実行状況抽出ステップと、
前記解析プログラムの実行中に、前記実行状況抽出ステップにより抽出された前記実行状況データに基づき、前記解析プログラムの実行状況を表示装置に表示する解析管理ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードの品質や構造を解析する技術に関する。
【背景技術】
【０００２】
ソースコードの静的解析は、作成したり、導入したりして入手したソースコードの品質や構造を、プログラム実行前に解析することができ、ソフトウェア開発の場では、重要な技術である。
元来、解析技術自体が高度な技術であるが故に、その解析結果も複雑で理解が困難な場合が多い。
特許文献１においては、ソースコードの解析装置とユーザの間に「統合管理装置」を置くことで、解析結果をわかりやすく表示し、ユーザが簡単に指示を出せるようにする方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１２９１２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソースコードの解析中にユーザがリアルタイムに解析状況を知ることができれば、ユーザは、解析状況に応じて、一部の解析処理を省略したり、解析処理用のパラメータを変更することができ、解析状況に応じて、ソースコードの解析をきめ細かく制御することができる。
特許文献１では、解析装置の出力の量やわかりにくさを課題としているものの、具体的には複数の異なる解析装置の異なる出力を、わかりやすく加工することで、理解しやすくしている。
つまり、特許文献１では、解析装置にてソースコードの解析が完了した後に、解析結果の変換または解析結果における情報量の削減を行っており、ソースコードの解析状況をリアルタイムにユーザに提示するものではない。
このため、特許文献１では、解析状況に応じて、ソースコードの解析をきめ細かく制御することができない。
【０００５】
本発明は、このような事情に鑑みたものであり、ソースコードの解析をきめ細かく制御できる構成を得ることを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るソースコード解析装置は、
解析プログラムの実行によりソースコードを解析するソースコード解析装置であって、
前記解析プログラムの実行中に、前記解析プログラムの実行状況が示される実行状況データを抽出する実行状況抽出部と、
前記解析プログラムの実行中に、前記実行状況抽出部により抽出された前記実行状況データに基づき、前記解析プログラムの実行状況を表示装置に表示する解析管理部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、解析プログラムの実行中に、解析プログラムの実行状況を表示装置に表示するため、ユーザはソースコードの解析状況をリアルタイムに知ることができ、ソースコードの解析をきめ細かく制御することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるソースコード解析装置の構成例を示す図である。
【図２】実施の形態１におけるソースコード解析装置のメイン処理フローを示すフローチャート図である。
【図３】実施の形態１におけるソースコード解析装置のサブ処理フローを示すフローチャート図である。
【図４】実施の形態２におけるソースコード解析装置のサブ処理フローを示すフローチャート図である。
【図５】実施の形態２における表示装置への出力例を示す図である。
【図６】実施の形態３におけるソースコード解析装置のサブ処理フローを示すフローチャート図である。
【図７】実施の形態３における表示装置への出力例を示す図である。
【図８】実施の形態４におけるソースコード解析装置の構成例を示す図である。
【図９】実施の形態４における実行中制御管理部の処理フローを示すフローチャート図である。
【図１０】実施の形態５における表示装置への出力例を示す図である。
【図１１】実施の形態１〜５におけるソースコード解析装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【０００９】
特許文献１は、解析装置が出力する情報の変換または情報の削減を課題解決のための手段としている。
特許文献１の技術によれば、解析装置の内部にある出力情報以外の情報として、実行状況などの実行時の属性情報を得ることはできない。
そのため、解析装置の内部で実行される複数の解析プログラムの実行時の属性情報によっては、その処理の途中で処理をスキップしたり、より詳しく解析するように指示したりすることができず、解析装置のきめ細かな実行制御を行うことができない。
以下の実施の形態では、ソースコードの品質や構造を評価するための解析装置において、ユーザがその解析結果を判断しながら解析作業を進める際に、その解析情報の量や、ユーザへの示し方、操作の複雑さなどに着目し、評価作業をより効率的に、より精度を高く行うことができる、ソースコード解析装置を説明する。
より具体的には、解析中に、評価解析結果以外の、実行中の解析プログラムの実行状況の情報を抽出し表示する機能を備えたソースコード解析装置を説明する。
【００１０】
以下に、本発明にかかるソースコード解析装置の実施の形態を図面に基づいて詳細に説明するが、以下の実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、ソースコード解析装置１００の構成例を示すブロック図である。
ソースコード解析装置１００は、ソースコードの静的な解析を行う。
【００１２】
図１において、ソースコード７００は、プログラム言語で記述されたプログラムのソースコードである。
【００１３】
複数の解析プログラム３００は、ソースコード７００の解析を行うためアルゴリズムが記述されたプログラムである。
解析プログラム３００は、後述する解析管理部２００により実行される。
解析プログラム３００では、解析プログラム３００の実行中に、解析プログラム３００実行状況が示される実行状況データ３１０が生成される。
実行状況データ３１０は、解析プログラム３００の進行に伴って更新される。
【００１４】
実行状況抽出部６００は、解析プログラム３００の実行中に、解析プログラム３００から実行状況データ３１０を抽出し、実行状況データ３１０を解析管理部２００に転送する。
【００１５】
解析管理部２００は、解析プログラム３００を実行する。
また、解析管理部２００は、解析プログラム３００の実行中に、実行状況抽出部６００から実行状況データ３１０を受け取り、実行状況データ３１０に基づき、解析プログラム３００の実行状況を示す表示情報を生成する。
そして、解析管理部２００は、表示情報を表示装置５００に出力して、解析プログラム３００の実行状況を表示装置５００に表示する。
【００１６】
表示装置５００は、解析管理部２００からの表示情報やその他の情報を表示するディスプレイ装置である。
【００１７】
入力装置４００は、ソースコード解析装置１００のユーザからの入力を受け付ける。
入力装置４００は、例えば、キーボードやマウスである。
【００１８】
図２及び図３を参照してソースコード解析装置１００の動作を説明する。
図２は、ソースコード解析装置１００のメイン処理のフローを示す。
図３は、ソースコード解析装置１００のサブ処理のフローを示す。
本実施の形態では、これらメイン処理とサブ処理が同時に実行される。
【００１９】
まず、図２を参照して、ソースコード解析装置１００のメイン処理の動作を説明する。
【００２０】
Ｓ２１で、解析管理部２００は、解析プログラム３００を１つ選択し実行する。
解析プログラム３００は内部的には、サブルーチンやプラグインのようなプログラム処理が実装されており、この解析プログラム３００がソースコード７００を読み込みながら解析を行う。
解析が終わると、Ｓ２２で、解析プログラム３００が、その解析結果を解析管理部２００に送信する。
解析管理部２００は、解析結果を表示装置５００に出力する。
Ｓ２３で、解析管理部２００は、未実行の解析プログラム３００があるか判定する。
未実行の解析プログラム３００がある場合には、Ｓ２１へ戻り、未実行の解析プログラム３００が無い場合には終了となる。
【００２１】
このようにして、解析管理部２００は、すべての解析プログラム３００が実行されるまで、図２の処理を繰り返す。
【００２２】
次に、図３を参照して、ソースコード解析装置１００のサブ処理の動作を説明する。
このサブ処理は、ソースコード解析装置１００内で、先に示したメイン処理と同時並行して動作している実行状況抽出部６００と、解析管理部２００の動作となる。
【００２３】
Ｓ３１で、実行状況抽出部６００は、現在実行中の解析プログラム３００があるか判定する。
現在実行中の解析プログラム３００があるならば、Ｓ３２で、実行状況抽出部６００は、解析プログラム３００の中に内在する実行状況データ３１０を読み出す。
Ｓ３３で、実行状況抽出部６００は、読み出した実行状況データ３１０を、解析管理部２００に転送し、解析管理部２００に実行状況の出力を依頼する。
Ｓ３４にて、解析管理部２００は、実行状況データ３１０から、実行状況を示す表示情報を生成し、表示情報を表示装置５００に出力する。
なお、表示情報は、実行状況データ３１０そのものでもよいし、実行状況抽出部６００が実行状況データ３１０に追加・削除・変換などの加工を行った結果でもよい。
Ｓ３５で一定時間待ち、再度Ｓ３１からの処理を繰り返す。
例えば、Ｓ３５で１秒待つこととすると、１秒周期での実行状況データ３１０の読み出しが繰り返されることとなる。
【００２４】
このようにして、本実施の形態によれば、ソースコード解析装置１００が、解析プログラム３００を実行して解析を進めている最中に、その解析に関わる内部情報を、表示装置５００を通してユーザに伝達することができる。
【００２５】
実行状況データ３１０には、例えば、解析プログラム３００が現在解析対象としているソースコード７００内の位置（例えば、行番号など）、解析プログラム３００が現在解析対象としている関数、変数、配列等、解析プログラム３００が現在解析対象としている解析項目が含まれる。
また、解析開始からの経過時間、解析完了までの予想時間が含まれていてもよい。
本実施の形態に係るソースコード解析装置１００は、このように、解析プログラム３００が現在解析対象としているソースコード７００内の位置、解析プログラム３００が現在解析対象としている関数、変数、配列等、解析プログラム３００が現在解析対象としている解析項目をユーザに提示することができる。
また、解析開始からの経過時間、解析完了までの予想時間をユーザに提示することができる。
【００２６】
このように、本実施の形態によれば、ソースコード解析装置の解析プログラムの実行状況の情報を抽出して表示することができるため、ユーザは解析状況を把握することができ、すべての解析プログラムの実行を完了する以前の早期の段階で、品質判断に活用できる情報を得ることができる。
【００２７】
実施の形態２．
実施の形態２では、解析管理部２００が表示装置５００に表示する表示情報の例を説明する。
より具体的には、ソースコード７００が複数のモジュールに区分できる場合に、解析プログラム３００が現在解析対象としているモジュールを識別して表示する表示情報を説明する。
【００２８】
以下では、実施の形態１との差異を中心に説明する。
また、以下で説明していない事項は、実施の形態１と同様である。
【００２９】
図４は、本実施の形態のソースコード解析装置１００におけるサブ処理の流れを示したものである。
すなわち、図４は、実施の形態１の図３に対応する。
また、図５は、本実施の形態の表示情報の例を示す。
図５の例では、ソースコード７００は、モジュールＡ、モジュールＢ、モジュールＣ、モジュールＤに区分され、解析プログラム３００はこれらモジュールのうちモジュールＣを現在解析対象としている旨を示している。
【００３０】
次に、図４を参照して、本実施の形態のソースコード解析装置１００のサブ処理の動作を説明する。
【００３１】
Ｓ３１で、実行状況抽出部６００は、現在実行中の解析プログラム３００があるか判定する。
現在実行中の解析プログラム３００があるならば、実行状況抽出部６００は、Ｓ４０にて、現在実行中の解析プログラム３００の内部データとして構築されている制御フロー情報を取得したかどうかを判定する。
制御フロー情報を既に取得している場合は、Ｓ３２に移行する。
制御フロー情報をまだ取得していない場合は、Ｓ４１にて、実行状況抽出部６００は、制御フロー情報を読み出す。
制御フロー情報は、ソースコード７００のモジュール構成が示されるデータである。
ソースコード７００がモジュールＡ、モジュールＢ、モジュールＣ、モジュールＤで構成される場合は、制御フロー情報は、モジュールＡ、モジュールＢ、モジュールＣ、モジュールＤが示される情報（図５から矢印部分が除かれた情報）である。
次に、Ｓ４２にて、実行状況抽出部６００は制御フローを示す図を出力するよう解析管理部２００に依頼する。
Ｓ４３にて、解析管理部２００が制御フローが示される制御フロー図を作成し、表示装置５００に制御フロー図を出力する。
例えば、モジュールＡ、モジュールＢ、モジュールＣ、モジュールＤが示される制御フロー図（図５から矢印部分が除かれた制御フロー図）が表示装置５００に出力される。
なお、図５では、モジュール毎に四角形を割り当てた簡易な制御フロー図を例示しているが、解析対象のソースコード７００の処理をフローチャートのような図式に展開したものでもよい。
【００３２】
Ｓ３２、Ｓ３３、Ｓ３４では、実施の形態１と同様に、実行状況抽出部６００が、解析プログラム３００から実行状況データ３１０を読み出し、解析管理部２００が表示情報を生成して表示装置５００に表示する。
Ｓ３２で得られた実行状況データ３１０には、例えば、解析プログラム３００が現在解析対象としているソースコード７００内の位置（例えば、５０行目など）、解析プログラム３００が現在解析対象としている関数、変数、配列等、解析プログラム３００が現在解析対象としている解析項目が含まれる。
【００３３】
次に、実行状況抽出部６００は、Ｓ４４にて、現在解析を実行している対象部位、例えば、解析を実行しているモジュールを指定して、表示装置５００にそのモジュールを示す表示情報を出力するよう、解析管理部２００に依頼する。
解析管理部２００は、Ｓ４５で、実行状況データ３１０に記述されている現在解析対象となっている位置（例えば５０行目）に対応するモジュールを特定し、特定したモジュールが現在解析対象となっていることを示す表示情報を生成し、表示装置５００に出力する。
例えば、Ｓ４３で表示装置５００に表示した制御フロー図に、特定したモジュールを識別するための加工を行って、表示装置５００に表示する。
図５の例では、現在解析対象となっているモジュールが「モジュールＣ」であることを示すために、「モジュールＣ」を示す長方形に対し、矢印の表示を付加している。
【００３４】
図５では、現在解析対象となっているモジュールを矢印で指し示して表示しているが、モジュール表示の手段として、対象モジュールの四角形の枠線を太く表示する、対象モジュールの四角形の枠線をブリンクして表示する、対象モジュールの四角形のどこかに光る点を表示する、対象モジュールの四角形の枠線の色を他のモジュールの枠線の色と変更して表示するなどの手段を用いてもよい。
これにより、ユーザに対する視認性の改善を図ることができる。
【００３５】
以上のようにして、本実施の形態によれば、ソースコード解析装置１００が、解析プログラム３００を実行して解析を進めている最中に、その解析に関わる内部情報を、表示装置５００を通してユーザに伝達し、更に、評価解析を行っている対象部分のソースコードの一部分あるいはモジュールを制御フロー図中にて区別して表示することができ、ユーザが実行状態を把握しやすくすることができる。
【００３６】
実施の形態３．
実施の形態３では、解析管理部２００が表示装置５００に表示する表示情報の例を説明する。
より具体的には、解析プログラム３００がソースコード７００でのデータ処理の推移を解析する際に、現在解析対象となっているデータを表示する表示情報を説明する。
本実施の形態で対象とするデータは、例えば、ソースコード７００に含まれる変数や配列である。
【００３７】
以下では、実施の形態１との差異を中心に説明する。
また、以下で説明していない事項は、実施の形態１と同様である。
【００３８】
図６は、本実施の形態のソースコード解析装置１００におけるサブ処理の流れを示したものである。
すなわち、図６は、実施の形態１の図３に対応する。
また、図７は、本実施の形態の表示情報の例を示す。
図７の例では、ソースコード７００には、データＡ、データＢ、データＣ、データＤが含まれており、解析プログラム３００は現在、これらのデータのうちデータＢとデータＣに対するソースコード７００での演算を解析している旨を示している。
【００３９】
次に、図６を参照して、本実施の形態のソースコード解析装置１００のサブ処理の動作を説明する。
【００４０】
Ｓ３１で、実行状況抽出部６００は、現在実行中の解析プログラム３００があるか判定する。
現在実行中の解析プログラム３００があるならば、実行状況抽出部６００は、Ｓ５０にて、現在実行中の解析プログラム３００の内部データとして構築されている、ソースコード７００内のデータ情報を取得したかどうかを判定する。
データ情報を既に取得している場合は、Ｓ３２に移行する。
データ情報をまだ取得していない場合は、Ｓ５１にて、実行状況抽出部６００は、データ情報を読み出す。
データ情報とは、ソースコード７００内で扱っている変数や配列が示される情報である。
ソースコード７００がデータＡ、データＢ、データＣ、データＤを扱う場合は、データ情報は、データＡ、データＢ、データＣ、データＤが示される情報（図７から矢印部分が除かれた情報）である。
そして、Ｓ５２にて、実行状況抽出部６００は、データ情報を用いて、データ図を出力するよう解析管理部２００に依頼する。
Ｓ５３にて、解析管理部２００は、データ情報からデータ図を作成し、表示装置５００にデータ図を出力する。
例えば、データＡ、データＢ、データＣ、データＤが示されるデータ図（図７から矢印部分が除かれたデータ図）が表示装置５００に表示される。
なお、図７では、各データを一つの四角形などの図形で示すデータ図を例示しているが、解析対象のソースコード７００内のデータが識別できるものであればどのような形式でもよく、データのシンボル名を列挙するなどによりデータを可視化した簡易なものでもよい。
【００４１】
Ｓ３２、Ｓ３３、Ｓ３４では、実施の形態１と同様に、実行状況抽出部６００が、解析プログラム３００から実行状況データ３１０を読み出し、解析管理部２００が表示情報を生成して表示装置５００に表示する。
Ｓ３２で得られた実行状況データ３１０には、例えば、解析プログラム３００が現在解析対象としているソースコード７００内の位置（例えば、５０行目など）、解析プログラム３００が現在解析対象としている関数、変数、配列等、解析プログラム３００が現在解析対象としている解析項目が含まれる。
【００４２】
次に、実行状況抽出部６００は、Ｓ５４にて、現在解析を実行している対象データを指定して、表示装置にそのデータを示す表示情報を出力するよう、解析管理部２００に依頼する。
解析管理部２００は、Ｓ５５で、実行状況データ３１０に記述されている現在解析対象となっているデータに対応する図形をデータ図上で特定し、特定した図形のデータが現在解析対象となっていることを示す表示情報を生成し、表示装置５００に出力する。
図７の例では、現在解析対象となっているデータが「データＣ」と「データＤ」であることを示すために、「データＣ」及び「データＤ」のそれぞれを示す長方形に対し、矢印の表示を付加している。
【００４３】
図７では、現在解析対象となっているデータを矢印で指し示して表示しているが、データ表示の手段として、対象データの四角形の枠線を太く表示する、対象データの四角形の枠線をブリンクして表示する、対象データの四角形のどこかに光る点を表示する、対象データの四角形の枠線の色を他のデータの枠線の色と変更して表示するなどの手段を用いてもよい。
これにより、ユーザに対する視認性の改善を図ることができる。
【００４４】
以上のようにして、本実施の形態によれば、ソースコード解析装置１００が、解析プログラム３００を実行して解析を進めている最中に、その解析に関わる内部情報を、表示装置５００を通してユーザに伝達し、更に、評価解析を行っている対象データをデータ図中にて区別して表示することができ、ユーザが実行状態を把握しやすくすることができる。
【００４５】
実施の形態４．
実施の形態４では、評価中に、表示された制御フロー図やデータ図上でユーザが入力装置４００を使って指示することで、解析処理の制御を行える機能を具備したソースコード解析装置１００について説明する。
更に、本実施の形態では、制御の具体的実施例として、実行中の解析プログラム３００を途中で破棄するよう指示できる機能を備えたソースコード解析装置１００を説明する。
なお、以下では、実施の形態３との差異を中心に説明する。
以下で説明していない事項は、実施の形態３と同様である。
【００４６】
図８は、本実施の形態のソースコード解析装置１００の構成例を示すブロック図である。
【００４７】
図８において、解析管理部２００以外の構成は、図１に示したものと同じなので、説明を省略する。
本実施の形態の解析管理部２００は、実行中制御管理部８００を備える。
また、実行中制御管理部８００は、停止指示部８１０及びパラメータ変更部８２０を備える。
実行中制御管理部８００は、解析プログラム３００の実行中にユーザからの入力を受け付ける。
停止指示部８１０は、解析プログラム３００の実行中に、解析プログラム３００の実行の停止を指示する。
パラメータ変更部８２０は、解析プログラム３００の解析に用いられる解析パラメータを変更する。
実行中制御管理部８００は、プログラム実行制御部の例に相当する。
【００４８】
次に、図９を参照して、本実施の形態のソースコード解析装置１００の動作を説明する。
図９は、実行中制御管理部８００の動作フローを示している。
この動作フローは、実行中制御管理部８００が、解析プログラム３００の実行中に、常にユーザからの指示の入力を待ち、入力があった時点で図９の動作フローによりイベント駆動の形で処理を実行する。
【００４９】
まず、Ｓ６１で、ユーザが表示装置５００に表示された制御フロー図やデータ図の一部分をマウスのクリックなどの方法で指示を行うと、その入力イベントが解析管理部２００の実行中制御管理部８００に伝達され、実行中制御管理部８００が、その指示内容の解析を行う。
解析の結果、入力イベントがどのような指示であるかが識別される。
ここでは、入力イベントが「処理停止」の指示であると仮定する。
より具体的には、入力イベントは複数種あってよいし、入力手段としても、マウスだけでなく、タッチパネルやキーボード、音声入力など、識別さえできればどのような手段を用いてもよい。
次に、Ｓ６２で、実行中制御管理部８００は、その識別された指示内容に対応した処理機能を内蔵しているかの確認を行う。
指示内容に対応した処理機能を内蔵してない場合には、処理を終了する。
指示内容に対応した処理機能を内蔵している場合には、Ｓ６３にて、実行中制御管理部８００は、その処理機能を実行する。
【００５０】
本実施の形態では、その処理機能として、図８中の停止指示部８１０を具備している。
この停止指示部８１０では、指示内容として、解析プログラム３００の停止指示を行う。
停止指示の実装は、プログラム間通信や、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の備えるシグナリング機能などを用いる。
これにより、解析プログラム３００の実行が停止する。
そして、解析プログラム３００の実行停止までに解析プログラム３００の実行により鰓得た解析結果が破棄される。
【００５１】
以上の説明では、指示として「停止」、それに対応した処理機能として「停止指示部８１０」を示した。
この他の指示としては、「解析パラメータ変更」、それに対応した処理機能として「パラメータ変更部８２０」を備えることで、解析プログラム３００の解析パラメータを、実行の最中に変更する機能を備えている。
【００５２】
以上のようにして、本実施の形態によれば、ソースコード解析装置１００が、解析プログラム３００を実行して解析を進めている最中に、ユーザの停止指示により実行中の解析プログラム３００を途中で停止させることができ、それにより、複数の解析プログラム３００のうちの、次の解析プログラム３００の実行に移ることができる。
従って、ユーザが望まない解析プログラム３００の実行を途中で終了することができ、全部の解析プログラム３００の実行にかかる時間を短縮することができる。
また、解析プログラム３００のパラメータを実行中に変更することができるので、解析プログラム３００の動作を柔軟に制御することができる。
【００５３】
実施の形態５．
実施の形態５では、実施の形態４で示したようにユーザが解析の実行の最中に解析プログラム３００の解析パラメータを変更する場合に、ユーザが、「早送りボタン」「巻き戻しボタン」を用いて、実行の時間や速度に関わる指示をする、ソースコード解析装置について説明する。
【００５４】
以下では、実施の形態４との差異を中心に説明する。
また、以下で説明していない事項は、実施の形態４と同様である。
【００５５】
図１０は、本実施の形態による表示装置５００への表示例を示している。
画面の一部に、減速ボタン９０１、終了ボタン９０２、一時停止ボタン９０３、実行ボタン９０４、加速ボタン９０５、後戻りボタン１００１、スキップボタン１００２を備えている。
実行中制御管理部８００は、図１０に示す表示画面を表示装置５００に表示し、入力装置４００からユーザの指示を受け付ける。
【００５６】
次に、ユーザがボタンを押して指示が行われた場合の動作について説明する。
【００５７】
減速ボタン９０１が押された場合には、パラメータ変更部８２０が、解析プログラム３００の実行中に、解析プログラム３００の解析パラメータの変更を行う。
解析パラメータの変更内容は、現在実行中の解析プログラム３００の解析パラメータのうち、解析速度に影響するパラメータを変更し、解析速度が現状の速度より低くなるようにする。
具体的には、単位時間のサンプリングの粒度を細かくするであるとか、調査するデータの調査範囲をより深く、細かくするなどの結果となるような指示となる。
【００５８】
終了ボタン９０２が押された場合には、停止指示部８１０が、実行中の解析プログラム３００を停止する。
【００５９】
一時停止ボタン９０３が押された場合には、停止指示部８１０が、解析プログラムの実行を一時停止する。
【００６０】
実行ボタン９０４が押された場合には、停止指示部８１０が、解析プログラム３００の実行を開始または再開する。
【００６１】
加速ボタン９０５が押された場合には、パラメータ変更部８２０が、解析プログラム３００の実行中に、解析プログラム３００の解析パラメータの変更を行う。
解析パラメータの変更内容は、現在実行中の解析プログラム３００の解析パラメータのうち、解析速度に影響するパラメータを変更し、解析速度が現状の速度より高くなるようにする。
具体的には、単位時間のサンプリングの粒度を荒くするであるとか、調査するデータの調査範囲をより浅く・荒くする、メモリオーバフローの解析プログラムを減らすなどの結果となるような指示となる。
【００６２】
後戻りボタン１００１が押された場合には、停止指示部８１０は、現在実行中の解析プログラムの解析処理を中断し、以前に実行済の解析プログラムの再実行を開始する。
この際には、ボタンを押した回数分だけ複数の実行済みの解析プログラムを遡るようにしてもよいし、後戻りボタン１００１が押されたときに、どの解析プログラムを再実行するかをユーザに入力させるユーザインタフェースを使用して指定させてもよい。
また、解析プログラムを遡る際には、再実行対象の解析プログラムの再実行を開始する前に、解析パラメータの再設定を行えるようにしてもよい。
【００６３】
スキップボタン１００２が押された場合には、停止指示部８１０は、現在実行中の解析プログラムの解析処理を中断し、次に実行予定の未実行の解析プログラムの実行を開始する。
この際には、ボタンを押した回数分だけ先に当たる解析プログラムを実行するようにしてもよいし、スキップボタン１００２が押されたときに、どの解析プログラムを実行するかをユーザに入力させるユーザインタフェースを使用して指定させてもよい。
また、対象の解析プログラムの実行を開始する前に、解析パラメータの設定を行えるようにしてもよい。
【００６４】
なお、図中には示していないが、同様にして、「データ後戻りボタン」「制御後戻りボタン」「データスキップボタン」「制御スキップボタン」などを用いて、１つの解析プログラム内の処理の制御を行うこともできる。
「データ後戻りボタン」や「制御後戻りボタン」では、順に実施しているデータやモジュールの評価が既に済んでいる対象に対し、再評価を行うことを指示する機能を提供する。
「データスキップボタン」や「制御スキップボタン」では、これから評価する実行対象のデータや制御を、順序を飛ばして先に評価することを指示する機能を提供する。
【００６５】
以上のようにして、本実施の形態によれば、ソースコード解析装置１００が、解析プログラム３００を実行して解析を進めている最中に、ユーザが入力画面のボタンを通じて直観的に、ユーザフレンドリな方法で制御を指示することができ、時間効率の良い、きめ細かな解析を行うことができる。
【００６６】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、２つ以上を組み合わせて実施しても構わない。
あるいは、これらの実施の形態のうち、１つを部分的に実施しても構わない。
あるいは、これらの実施の形態のうち、２つ以上を部分的に組み合わせて実施しても構わない。
なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【００６７】
最後に、実施の形態１〜５に示したソースコード解析装置１００のハードウェア構成例を図１１を参照して説明する。
ソースコード解析装置１００はコンピュータであり、ソースコード解析装置１００の各要素をプログラムで実現することができる。
ソースコード解析装置１００のハードウェア構成としては、バスに、演算装置１９０１、外部記憶装置１９０２、主記憶装置１９０３、通信装置１９０４、入出力装置１９０５が接続されている。
【００６８】
演算装置１９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置１９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置１９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置１９０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置１９０５は、図１及び図８に示した入力装置４００及び表示装置５００に対応し、例えばマウス、キーボード、ディスプレイ装置等である。
【００６９】
プログラムは、通常は外部記憶装置１９０２に記憶されており、主記憶装置１９０３にロードされた状態で、順次演算装置１９０１に読み込まれ、実行される。
プログラムは、図１及び図８に示す「〜部」として説明している機能を実現するプログラムである。
また、解析プログラム３００である。
更に、外部記憶装置１９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置１９０３にロードされ、演算装置１９０１はＯＳを実行しながら、図１及び図８に示す「〜部」の機能を実現するプログラムを実行する。
また、解析プログラム３００も外部記憶装置１９０２に記憶されており、主記憶装置１９０３にロードされた状態で、順次演算装置１９０１により実行される。
また、実施の形態１〜５の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の特定」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の受信」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置１９０３にファイルとして記憶されている。
また、各局から受信したデータが主記憶装置１９０３に記憶される。
【００７０】
なお、図１１の構成は、あくまでもソースコード解析装置１００のハードウェア構成の一例を示すものであり、ソースコード解析装置１００のハードウェア構成は図１１に記載の構成に限らず、他の構成であってもよい。
【００７１】
また、実施の形態１〜５に示す手順により、本発明に係るソースコード解析方法を実現可能である。
【符号の説明】
【００７２】
１００  ソースコード解析装置、２００  解析管理部、３００  解析プログラム、３１０  実行状況データ、４００  入力装置、５００  表示装置、６００  実行状況抽出部、７００  ソースコード、８００  実行中制御管理部、８１０  停止指示部、８２０  パラメータ変更部、９０１  減速ボタン、９０２  終了ボタン、９０３  一時停止ボタン、９０４  実行ボタン、９０５  加速ボタン、１００１  後戻りボタン、１００２  スキップボタン。
【図１】
2016053838.tif 000003
【図２】
2016053838.tif 000004
【図３】
2016053838.tif 000005
【図４】
2016053838.tif 000006
【図５】
2016053838.tif 000007
【図６】
2016053838.tif 000008
【図７】
2016053838.tif 000009
【図８】
2016053838.tif 000010
【図９】
2016053838.tif 000011
【図１０】
2016053838.tif 000012
【図１１】
2016053838.tif 000013