(57)【要約】【課題】利用者に静的解析の結果を図で分かりやすく表示させる手段を提供することで、指摘された問題の発生箇所およびそれらの関係等のソフトウェアの品質特性を把握し易くし、静的解析結果を効率良く分析させることを可能とする静的解析結果の分析表示装置を得ること。【解決手段】記録部３は、静的解析結果データ２０を装置内部に取り込んで記録すると共に、内部データ形式に変換して内部静的解析結果データ２１を生成する。抽出加工部４は、内部静的解析結果データ２１から表示に必要なデータを抽出、加工して加工データ２２を生成する。問題箇所指摘部５は、問題点パターンデータ２３を参照して、加工データ２２からソフトウェアの問題点を抽出し、指摘する。表示部は、静的解析結果データを３次元グラフとして可視化し、問題箇所指摘部５で指摘された問題箇所を強調して表示する。【選択図】        図１
2008197731.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの静的解析ツールが出力する警告情報またはメトリックス情報としてのソフトウェアの品質特性情報を含む静的解析結果データを分析し、その分析結果を表示する静的解析結果の分析表示装置であって、
ユーザからの指示が入力されるユーザ入力部と、
前記ユーザ入力部を介して入力されたユーザからの指示に基づいて、分析および表示の対象となる静的解析結果データを装置内部に取り込み、記録すると共に、内部データ形式に変換して内部静的解析結果データを生成する記録部と、
前記ユーザ入力部を介して入力されたユーザからの指示に基づいて、前記内部静的解析結果データから、表示に必要なデータを抽出、加工して加工データを生成する抽出加工部と、
前記抽出加工部が生成する前記加工データに基づいて、前記品質特性が計測されたソフトウェアの構成単位、前記品質特性の種類、および前記品質特性の評価値の３自由度を同時にグラフ化することにより、前記静的解析結果データを可視化する表示部と、
前記ユーザ入力部、前記記録部、前記抽出加工部、および前記表示部を含む装置の制御を行う制御部と、
を備えることを特徴とする静的解析結果の分析表示装置。
【請求項２】
前記表示部は、前記３自由度を同時にグラフ化するために、３次元グラフ、または明度もしくは色相により色付けされたスペクトルを用いて表示することを特徴とする請求項１に記載の静的解析結果の分析表示装置。
【請求項３】
前記表示部は、入力される複数の静的解析結果データに対して、前記複数の静的解析データを相互に比較できるように同一の指標で正規化された３次元グラフにて表示することを特徴とする請求項１または２に記載の静的解析結果の分析表示装置。
【請求項４】
既存のソフトウェアにおける過去の不具合発生データに基づいて作成され、ソフトウェアに発生した問題箇所とそれらの相互関係をパターン化したデータである問題点パターンデータを参照し、前記加工データと前記問題点パターンデータとを同一の指標で正規化することによりグラフ上で相互に比較できるようにマッピングを行い、前記加工データに前記問題点パターンデータで表される問題点パターンが存在するか否かを、パターンの類似性を評価して判定し、前記加工データに問題箇所が存在すると判定されたときには、その問題箇所を指摘する表示を前記表示部にさせる問題箇所指摘部を備えることを特徴とする請求項１〜３のいずれか１つに記載の静的解析結果の分析表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの静的解析結果を分析して表示する静的解析結果の分析表示装置に関するものであり、特に、ソフトウェアの静的解析結果として出力されるソフトウェアの問題点とその発生箇所の指摘、またはソフトウェアの品質の尺度となるメトリックスを分析して表示することにより、的確な問題点の指摘、効率的な問題点の把握を可能とする分析表示装置に関するものである。
【背景技術】
【０００２】
従来、ソフトウェアの開発においては、ソフトウェアの実行前にソースコードを構文的または意味的に解析し、ソースコード上の記述誤りの可能性が高い問題箇所に対して警告を出力するソフトウェアの静的解析が利用されている。また、ソフトウェアの静的解析としては、ソフトウェアの品質を定量的に評価するメトリックスを定義し、ソフトウェアのメトリックス値を計測して出力することで、ソフトウェアの開発に役立てるものもある。
【０００３】
従来の静的解析結果の分析、表示においては、静的解析結果として出力される警告またはメトリックスを２次元グラフ化し、ソースコードのどの部分（例えば、ファイル、関数またはモジュール等）に問題点があるのかを指摘する支援を行っていた。例えば、特許文献１では、ソースコードの静的解析結果を分析し、数値、表、グラフ等の形式で出力することにより、静的解析結果の分析を容易にする静的解析結果分析システムが記載されている。静的解析結果は、例えば、モジュールの種類を横軸、ソフトウェアの品質指標値を縦軸として２次元グラフ化され、ユーザはこの２次元グラフから、どのモジュールに問題点があるのかを容易に判断することができる。
【０００４】
また、特許文献２では、静的解析結果を分析した分析結果を可視化して表示することにより見易さを向上させ、静的解析を行ったソフトウェアの問題の発見、および分析結果の集計作業を支援するソフトウェアの品質特性分析表示法が記載されている。すなわち、静的解析結果としてのメトリックス値を評価基準値と比較した後に色付けして表現し、どのような問題がどこで発生しているのかを見易くする支援を行っていた。例えば、プログラム単位の評価については、一覧表に表示したプログラム名称に色付けし、ユーザに色の違いにより品質を識別させる。また、ソースコードの行単位の評価については、ソースコード上に直接色付けし、問題箇所に対してユーザに注意を促している。
【０００５】
【特許文献１】特開２００５−２０２４９４号公報
【特許文献２】特開平８−２４９１７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術には、以下に示すような問題がある。従来の静的解析結果の表示方法では、静的解析対象となるソフトウェアを構成する単位であるファイル、関数、または行等に対して、どの部分の品質にどのような問題があるのかを知ることはできるものの、指摘された問題が本当に問題なのかは明らかではなく、指摘の確実性については人が実際にソースコードを詳細に検査しなければ最終的な判断できなかった。このことは、特に静的解析結果が指摘する問題が膨大な数となった場合に顕著となる。また、指摘された複数の問題間の相互関係から得られる問題点の把握、分析が行われていなかった。
【０００７】
本発明は、上記に鑑みてなされたものであって、利用者に静的解析の結果を図で分かりやすく表示させる手段を提供することで、指摘された問題の発生箇所およびそれらの関係等のソフトウェアの品質特性を把握し易くし、静的解析結果を効率良く分析させることを可能とする静的解析結果の分析表示装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明にかかる静的解析結果の分析表示装置は、ソフトウェアの静的解析ツールが出力する警告情報またはメトリックス情報としてのソフトウェアの品質特性情報を含む静的解析結果データを分析し、その分析結果を表示する静的解析結果の分析表示装置であって、ユーザからの指示が入力されるユーザ入力部と、前記ユーザ入力部を介して入力されたユーザからの指示に基づいて、分析および表示の対象となる静的解析結果データを装置内部に取り込み記録すると共に、内部データ形式に変換して内部静的解析結果データを生成する記録部と、前記ユーザ入力部を介して入力されたユーザからの指示に基づいて、前記内部静的解析結果データから、表示に必要なデータを抽出、加工して加工データを生成する抽出加工部と、前記抽出加工部が生成する前記加工データに基づいて、前記品質特性が計測されたソフトウェアの構成単位、前記品質特性の種類、および前記品質特性の評価値の３自由度を同時にグラフ化することにより、前記静的解析結果データを可視化する表示部と、前記ユーザ入力部、前記記録部、前記抽出加工部、および前記表示部を含む装置の制御を行う制御部と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ソフトウェアの静的解析結果に基づき、警告が発生した箇所、発生した警告の種類、および発生した警告の数を同時にグラフに表示することにより、静的解析結果として出力された警告の発生箇所およびそれらの相互関係を把握し易くし、利用者に静的解析結果を効率良く分析させることができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明にかかる静的解析結果の分析表示装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明にかかる静的解析結果の分析表示装置の実施の形態１の構成を示すブロック図である。図１に示すように、本実施の形態は、本実施の形態を制御する制御部２と、静的解析ツール（図示せず）が出力した静的解析結果データ２０を装置内部に取り込んで記録すると共に、内部データ形式に変換して内部静的解析結果データ２１を生成する記録部３と、内部静的解析結果データ２１から表示に必要なデータを抽出、加工して加工データ２２を生成する抽出加工部４と、内部静的解析結果データ２１および加工データ２２から、解析対象であるソフトウェアの問題点を抽出し、指摘する問題箇所指摘部５と、ユーザからのデータの入力およびユーザへのデータの出力を行う入出力装置１０と、入出力装置１０を介して入力されたユーザからの指示を受け取るユーザ入力部６と、抽出、加工したデータ等をユーザに表示する表示部７と、を備えて構成される。また、問題点パターンデータ２３は、問題点指摘部５にて問題点を指摘するために使用される問題点パターン、および新たに抽出された問題点パターンであり、本装置内部に保持されている。なお、静的解析結果データ２０は、本発明の範囲に含まれない。また、図１の実線矢印はデータの移動を示し、点線矢印は制御データの移動を示す。
【００１２】
図２〜図４は、図１に示した内部静的解析結果データ２１の構成を示す図であり、図２は、ファイルパス名テーブルおよび関数名テーブルの構成を示す図、図３−１は、ファイルメトリックス値テーブルの構成を示す図、図３−２は、関数メトリックス値テーブルの構成を示す図、図４は、警告データテーブルの構成を示す図である。
【００１３】
図２に示すように、ファイルパス名テーブル２１１は、静的解析対象であるソフトウェアに含まれるファイル数２１１１と、各ファイルのファイルパス名２１１３と、それに一意に対応するファイルＩＤ２１１２と、を含むテーブルである。図示例では、ファイル数２１１１をｎ個としている。関数名テーブル２１２は、ファイルパス名テーブル２１１に含まれるファイルごとに作成され、ファイルＩＤ２１２１と、ファイルに含まれる関数の個数を表す関数数と、ファイルに含まれる各関数の関数名２１２３と、それに一意に対応する関数ＩＤ２１２２と、を含むテーブルである。図示例では、ファイルパス名テーブル２１１に含まれるｎ個のファイルにそれぞれ対応して、ｎ個の関数名テーブル２１２が示されており、ファイルＩＤ１に相当するファイルに含まれる関数数はｍ個である。
【００１４】
図３−１に示すように、ファイルメトリックス値テーブル２１３は、ファイル単位で測定される複数のメトリックスに対するメトリックス値と測定されたファイルとを対応させたテーブルである。図示例では、メトリックス数２１３１はｐ個であり、ファイルＩＤ２１３２とメトリックス名２１３３に対して、それぞれメトリックス値２１３４が表示されている。また、図３−２に示すように、関数メトリックス値テーブル２１４は、関数単位で測定される複数のメトリックスに対するメトリックス値と、メトリックスが計測されたファイルと、を対応させたテーブルである。図示例では、メトリックス数２１４１はｑ個であり、ファイルＩＤ２１４２ごとに関数ＩＤ２１４３が示されており、ファイルごとの関数ＩＤ２１４３とメトリックス名２１４４とに対して、それぞれメトリックス値２１３４が表示されている。
【００１５】
図４に示すように、警告データテーブル２１５は、行単位で出力された警告と、警告が発生した箇所と、を対応付けたテーブルである。詳細には、ファイルＩＤ２１５１と関数ＩＤ２１５２ごとに、警告が発生した行を示す警告発生行番号２１５３と警告の内容を識別する警告番号２１５４とが表示されたテーブルである。
【００１６】
図２〜図４に示した内部静的解析結果データの構成は、内部静的解析結果データが含むべき情報を示した一例であり、入力として与える静的解析結果データ２０に含まれる情報によってテーブルの個数は増減し、また、静的解析結果データ２０に含まれる情報によって内容も異なる。つまり、図２〜図４に例として示したように適宜整理できれば、他の形式を利用するものであってもよい。
【００１７】
次に、図１に示した抽出加工部４により内部静的解析結果データから抽出、加工された加工データの構成について説明する。図５は、図１に示した加工データの構成を示す図である。図５に示すように、加工データ２２は、データ項目数２２１１がａ個、データ系列数２２１２がｂ個であり、データ項目名２２１５と、データ系列名２２１３とに対して、それぞれデータが表示されている。データ項目は、例えばメトリックスを計測する単位であり、データ系列は、例えばメトリックスの種類であり、データは、例えばメトリックス値である。なお、図５に示した加工データの構成は一例であって、図５に示した内容と同様のものであれば、どのようなものであってもよい。
【００１８】
図６は、本実施の形態の出力として表示部７により表示される３次元グラフの一例である。図示例では、ｘ軸のデータ項目にメトリックスを計測する単位であるモジュールとしての例えば関数を、ｙ軸のデータ項目に関数毎に計測された複数のメトリックスまたは種類別にグループ化された複数の警告を指定し、ｚ軸にメトリックス値または警告の発生数を指定している。なお、図６では、ｘ、ｙ、ｚ軸の方向をそれぞれ矢印で示している。また、以下では、図５とは異なり、データ項目、データ系列等の表現の区別を行わず、ｘ、ｙ、ｚ軸に指定する変数をデータ項目として表記する。なお、表示部７は、入力された複数の静的解析結果データ２０を同一の３次元グラフ上に表示し、相互に比較できるようにすることができる。
【００１９】
次に、本実施の形態にかかる静的解析結果の分析表示装置の動作について、図７を参照して説明する。図７は、本実施の形態にかかる静的解析結果の分析表示装置の動作の手順を示すフローチャートである。
【００２０】
先ず、手順Ｓ１０１において、制御部２は、表示部７および入出力装置１０を介して、ユーザがグラフ表示をしたい静的解析結果データ２０を指定させるための表示を行い、ユーザから表示をしたい静的解析結果データ２０のファイルパス名を入出力装置１０およびユーザ入力部６を介して入手する。静的解析結果データ２０は、一般に複数存在しており、制御部３は、これらのデータが格納されている例えばディレクトリまたはファイル等のリストを表示することにより、ユーザに分析表示したい静的解析結果データ２０を選択させる。
【００２１】
手順Ｓ１０２において、制御部２は、記録部３に指令を送り、記録部３は、指定された静的解析結果データ２０を装置内部に取り込み、取り込まれた静的解析結果データ２０を開き、以降の処理の実行に適するように、内部静的解析結果データ２１に変換する。
【００２２】
手順Ｓ１０３において、制御部２は、内部静的解析結果データ２１に含まれるデータ項目（ｘ、ｙおよびｚ軸に指定するデータの種類、系列等）を、表示部７および入出力装置１０を介して表示させ、ユーザから表示をしたいデータ項目を入出力装置１０およびユーザ指定部６を介して入手する。
【００２３】
手順Ｓ１０４において、制御部２は、抽出加工部４に指令を送り、内部静的解析結果データ２１から指定されたデータ項目についての静的解析結果データを抽出し、加工データ２２を生成する。
【００２４】
手順Ｓ１０５において、制御部２は、加工データ２２を、表示部７および入出力装置１０を介して、３次元グラフとして表示させる。図６は、このようにして表示された３次元グラフの一例である。
【００２５】
手順Ｓ１０６において、制御部２は、表示されたグラフがユーザの求めるものになっているかどうかの確認を行うために、確認内容を表示部７および入出力装置１０を介して表示させ、ユーザからの回答を入出力装置１０およびユーザ指定部を介して入手する。ユーザからの回答が「求めるものである」となった場合には、処理を終了する。
【００２６】
ユーザからの回答が「求めるものでない」となった場合には、手順Ｓ１０８において、制御部２は、グラフの表示内容を変更するためのパラメータの表示、データ項目を再度選択させるための表示等を、表示部７および入出力装置１０を介して行い、ユーザから上記パラメータの値、新しいデータ項目等を、入出力装置１０およびユーザ指定部６を介して入手する。
【００２７】
そして、手順１０４に戻り、新しい３次元グラフを表示する処理を行う。但し、この場合に、データの抽出および加工において、手順１０８で入手したグラフのパラメータ、データ項目を使用する。
【００２８】
本実施の形態によれば、ソフトウェアの静的解析結果をもとに、警告が発生した箇所（またはメトリックスを計測する単位）、警告の種類（またはメトリックスの種類）、および、警告の数（またはメトリックス値）を３次元グラフとして表示させることにより、ソフトウェアの品質に関する問題の指摘の箇所およびそれらの相互関係を把握し易くし、ユーザに静的解析結果を効率良く分析させることができる。
【００２９】
なお、３次元グラフの表示において、ｘ軸、ｙ軸、およびｚ軸に指定するデータ項目としては、静的解析結果およびユーザの選択に応じて様々な形式のものが可能であり、警告が発生した箇所を示すためには、例えば、関数の行番号、アルファベット順の関数名等があり、発生した警告の種類を示すためには、例えば、警告に付されたユニークなＩＤ番号、警告のカテゴリ等がある。また、発生した警告の数の代わりに比率等を用いて表示することもできる。このように、３次元グラフの表示に指定されるデータ項目としては、静的解析結果の分析表示に好適な形式が適宜選択されるものとする。
【００３０】
実施の形態２．
図８は、本発明にかかる静的解析結果の分析表示装置の実施の形態２の出力として表示されるスペクトルの一例を示す図である。
【００３１】
図８では、図６と同様に、ｘ軸のデータ項目にモジュールとしての関数を、ｙ軸のデータ項目に関数毎に計測された複数のメトリックスまたは種類別にグループ化した複数の警告を指定し、メトリックス値または警告の発生数によって色付けを行い、これらの３つの自由度を平面図として図示している。すなわち、本実施の形態と実施の形態１との相違点は、実施の形態１では出力結果の表示形態が３次元グラフであるのに対して、本実施の形態ではスペクトルとなっている点である。このように、本実施の形態においては、静的解析結果を色分けしたスペクトルで表示することにより、ソフトウェアの品質特性を可視化し、ユーザに静的解析結果を効率良く分析させている。なお、実施の形態２のその他の構成および動作は、それぞれ実施の形態１の構成および動作と同じである。また、実施の形態２は、実施の形態１と同様の効果を奏する。
【００３２】
なお、実施の形態１および実施の形態２では、警告が発生した箇所（またはメトリックスを計測する単位）、警告の種類（またはメトリックスの種類）、および、警告の数（またはメトリックス値）の３自由度を、それぞれ、３次元グラフ、スペクトルとして表示させたが、２自由度を選択してグラフ化することもできる。例えば、警告の種類（またはメトリックスの種類）を一つ固定し、ｘ軸を警告が発生した箇所（またはメトリックスを計測する単位）、ｙ軸を警告の数（またはメトリックス値）として、２次元グラフを作成し、静的解析結果の分析に役立ててもよい。または、複数の警告の種類（または複数のメトリックスの種類）に対して、ｘ軸を警告が発生した箇所（またはメトリックスを計測する単位）、ｙ軸を警告の数（またはメトリックス値）として、２次元グラフを作成するなど、様々な表示形態が可能である。
【００３３】
実施の形態３．
図９は、本発明にかかる静的解析結果の分析表示装置の実施の形態３における問題点パターンの一例を示す図である。また、図１０は、実施の形態３により表示された３次元グラフの一例であり、問題点を指摘している例を示す図である。本実施の形態の構成は、図１に示す実施の形態１の構成と同様であるが、問題点指摘部５の機能について詳細に説明する。
【００３４】
問題箇所指摘部５は、加工データ２２を分析して問題箇所を指摘し、その結果を表示部７に表示させる。図９においては、複数のデータ項目に現れるピークの位置関係から指摘される問題点のパターンを示している。図９に示すパターンの意味は、（１）Ｐｏｉｎｔ１４、Ｐｏｉｎｔ１３、およびＰｏｉｎｔ１０にそれぞれピーク値が存在することを意味し、（２）Ｐｏｉｎｔ１３およびＰｏｉｎｔ１０のピーク値が存在する位置（ｘ座標値）は、Ｐｏｉｎｔ１４のピーク値が存在する位置の１単位後方であることを意味する。なお、問題点パターンデータはこのような記述を集めたものであり、パターンの意味が機械的に解釈できる記述形式であれば、どのようなものであってもよい。
【００３５】
図１０は、実施の形態３により表示された３次元グラフの一例であり、図中に問題点の指摘がなされている。図１０では、ある関数を解析対象とし、ｘ軸のデータ項目として、関数における行番号を、ｙ軸のデータ項目として、種類別にグループ化した２１種類の警告を、ｚ軸に警告の発生数を、指定している。すなわち、ピーク箇所は、Ｐｏｉｎｔ１０（ｘ３）、Ｐｏｉｎｔ１３（ｘ３）、Ｐｏｉｎｔ１４（ｘ２）となっており、各ピークを丸で囲むと共にこれらの丸を直線でつないでユーザに問題点となる箇所を指摘している。
【００３６】
このように、問題箇所指摘部５は、静的解析結果データ２０を可視化した３次元グラフまたはスペクトル等に現れるパターン、特に問題箇所となるパターンを抽出し、その問題箇所を矢印、枠等を用いてユーザに強調して指摘する。問題箇所の抽出は、装置内部に格納されている問題点パターンデータ２３と表示対象となる加工データ２２とのグラフのマッチングで行うことができる。さらに、問題箇所指摘部５は、表示対象となる加工データ２２のグラフから、新たなエラーが発生する可能性があるなどの、新たな問題点となる可能性があるパターンを抽出し、これを問題点パターンデータ２３に保存して、以降の分析表示に役立てる。このとき、パターンの抽出は、グラフで見られる各ピークが発生している位置、ピークの大きさ、複数のピークの発生位置の相互関係、ピークの大小関係等を分析して行う。また、新たな問題点パターンデータとして登録するためには、抽出されたパターンと、例えばソフトウェアを実際に実行することにより発生・発見した不具合との関係付けを行い、実際に不具合との関係があったパターンを新たな問題点パターンとして登録することが好ましい。
【００３７】
次に、本実施の形態の動作について、図１１を参照して説明する。図１１は、本実施の形態にかかる静的解析結果の分析表示装置の動作の手順を示すフローチャートである。
【００３８】
先ず、手順Ｓ２０１において、図７に示した手順で３次元グラフを表示させる。
【００３９】
次に、手順Ｓ２０２において、制御部２は、問題点指摘部５に指令を送り、登録されている問題点パターンデータ２３について、パターンの一覧を表示部７および入出力装置１０を介して表示させ、ユーザからチェックしたい問題点パターンを入出力装置１０およびユーザ指定部６を介して入手する。
【００４０】
手順Ｓ２０３において、制御部２は、指定された問題点パターンが３次元グラフに存在しているか否かを確認し、パターンが存在していない場合は処理を終了する。
【００４１】
パターンが存在している場合は、手順Ｓ２０５において、制御部２は問題点指摘部６に指令を送り、問題点パターンを取り出させ、そのパターンを解釈させる。
【００４２】
手順Ｓ２０６において、制御部２は、問題点指摘部６に指令を送り、機械的に探索ができるようになった問題点パターンと表示されているグラフの範囲内のデータとを検査させ、問題点パターンと合致する箇所があった場合は，その合致した箇所を表示部７および入出力装置１０を介してグラフ上に強調表示する。
【００４３】
そして、次の問題点パターンの探索を行うため、手順Ｓ２０３に戻る。以降、ユーザがチェックしたいパターンすべてに対して探索を行う。
【００４４】
なお、上述の説明においては、１つの静的解析結果データの入力に対して、グラフ表示を行う場合を示しているが、複数の静的解析結果データを同時に１つの３次元グラフとして表示し、問題点指摘部５にて指摘された問題箇所を３次元グラフ上に表示することができる。特に、膨大なソフトウェアの静的解析結果または品質情報を１つの３次元グラフで表示することにより、ソフトウェアの品質分布を図として一覧可能とすることができる。
【００４５】
次に、１または複数の静的解析結果データ２０を（同一の）グラフ上に表示し、問題点パターンデータ２３と比較して問題箇所を指摘する際の、データの正規化方法について例を挙げて説明する。例えば、２つのソフトウェアの静的解析結果２０を比較する場合、それぞれの構造は一般に異なり、行数、関数の数、ファイルの数等はそれぞれ異なる。そのため、２つの静的解析結果２０を比較する場合には、比較できるように何らかの正規化を行うことによって、それらを同一の３次元グラフ上に表示することができる。つまり、相互に比較できるように、同一の指標で正規化された３次元グラフにて表示を行う。また、静的解析結果データ２０と、問題点パターンデータ２３の構造もそれぞれ異なるため、問題点パターンデータ２３を静的解析結果データ２０のグラフ上にマッピングして比較する場合には、同様に何らかの正規化が必要となる。
【００４６】
以下では、説明のため、３次元グラフ表示におけるｘ、ｙ、ｚ軸に対して、ｘ軸を比較するソフトウェアの構成単位（行番号、モジュール名、ファイル名等）、ｙ軸を静的解析ツールが出力する品質情報の種類（個々の警告、警告をグループ化したもの、メトリックス名称等）、ｚ軸をｙ軸の各項目に対する値（警告（グループ）なら出力個数、メトリックスならメトリックス値等）、とする。なお、各軸に割り振った、ソフトウェアの構成単位（行番号、モジュール名、ファイル名）、品質情報の種類（個々の警告、警告をグループ化したもの、メトリックス名称）、ｙ軸の各項目に対する値（警告（グループ）なら出力個数、メトリックスならメトリックス値）は例であり、ここで示した以外のソフトウェアの構成単位、静的解析ツールの品質情報、項目に対応する値を制限するものではない。
【００４７】
まず、それぞれのソフトウェアのモジュール（関数）同士を比較する場合について説明する。この場合は、ｘ軸を行番号とする。そして、比較するモジュール（関数）に含まれる行数が異なる（軸データのサイズが異なる）場合には、グラフ化して２つの軸データが同じ長さになるように伸張又は伸縮を行う。これは、グラフ（図）化することにより、ｘ軸の項目を離散値ではなく、連続値として取り扱うことに対応しており、この際、適当なデータ補間を用いて行う。なお、軸の伸張または伸縮を行うことによる比較については、以下でも同様である。
【００４８】
次に、それぞれのソフトウェアのファイル同士を比較する場合について説明する。この場合は、ｘ軸として、２つの項目が考えられる。すなわち、一つは行番号、またはファイル内のモジュール（関数）である。ｘ軸を行番号とする場合は、比較対象がモジュール（関数）からファイルとなるだけで、上記の説明と同様になるため省略する。ｘ軸をモジュール（関数）とする場合は、モジュール（関数）をｘ軸に対して、例えば、次のように並べることができる。すなわち、ファイルに出現する順序に従って整列させる、モジュール（関数）名のアルファベット順に従って整列させる、モジュール（関数）の呼び出し関係階層図の上位から下位の順序で整列させる、または、中心にメイン部分を配置し、モジュール（関数）間の結合度が強くなるほど近くになるように配置する、等が挙げられる。いずれの並べ方を採用する場合も、軸のデータサイズが一致しない場合には、上記のように正規化を行う。また、ファイルにはモジュール（関数）が含まれていないものも存在するが、このようなファイルについては、例えば、行番号をｘ軸の項目として採用する。
【００４９】
次に、それぞれのソフトウェアの実行単位（例えば、ロードモジュール、タスク等）同士を比較する場合について説明する。この場合は、ｘ軸として、２つの項目が考えられる。すなわち、一つはファイル内のモジュール（関数）、他はファイルである。ｘ軸をモジュール（関数）とする場合は、比較対象がファイルから実行単位となるだけで、上記の説明と同様になるため省略する。ただし、モジュール（関数）の並べ方として、ファイルに出現する順序に従って整列させることはできないので、この場合は除く。ｘ軸をファイルとする場合は、ファイルをｘ軸に対して、例えば、次のように並べることができる。すなわち、ファイル名のアルファベット順に従って整列させる、ファイルの呼び出し関係階層図の上位から下位の順序で整列させる、または、中心にメイン部分を配置し、ファイル間の結合度が強くなるほど近くになるように配置する、等が挙げられる。いずれの並べ方を採用する場合も、軸のデータサイズが一致しない場合には、上記のように正規化を行う。ただし、一般にモジュール（関数）が含まれていないファイル（例えば、マクロ、外部変数、型、関数プロトタイプの定義／宣言等のみを行うファイルが該当する）も存在し、このようなファイルについては、適宜比較対象から除外する等の操作を行うものとする。
【００５０】
上述のように、静的解析結果データ２０、問題点パターンデータ２３を正規化することにより、相互に比較することが可能となる。静的解析結果データ２０から表示に必要とされる加工データ２２を抽出、加工し、比較のために正規化した後には、例えば、従来の画像のパターンマッチング、類似性の検出手法等を利用することにより、パターンの同一性を判別し、問題点パターンの抽出等を行うことができる。その際、一般的な画像処理、統計処理の技術を適用し、加工データ２０と問題点パターンデータ２３との相関等の計算を行い、類似性を判定することができる。
【００５１】
本実施の形態によれば、静的解析結果データ２０を過去の不具合発生データ等に基づいて登録された問題点パターンデータ２０と比較し、静的解析結果データ２０を可視化した３次元グラフにパターンが存在する場合には、そのパターンが問題点パターンであるか否かを判別することができる。そして３次元グラフに現れるパターンが、問題点パターンである場合には、その箇所を強調して表示することにより、ユーザに問題の発生箇所をより容易に把握させることができる。
【００５２】
また、本実施の形態によれば、複数の静的解析結果を同一の表示方法で表示または同一の計算による数値化により、パターンとして比較ができるようになり、異なるソフトウェア間であってもそのパターンの類似性から問題点の抽出、その後の解析の精度向上のために利用できる。特に、同一のソフトウェアの時系列的な比較（同じソフトウェアのバージョンが異なるもの同士の比較）に対しては、比較のためにマッピングされるモジュールそのものがほぼ同じであるため（バージョン更新後にそれほど大きな変化はない）、比較がより容易となり、本実施の形態をより好適に適用することができる。
【００５３】
また、過去に発生した障害を含む問題の再発防止のための要件を自動的に抽出し、組織のノウハウとして登録、活用するサイクルを構成することができるようになる。
【産業上の利用可能性】
【００５４】
以上のように、本発明にかかる静的解析結果の分析表示装置は、ソフトウェアの静的解析結果における問題点の発生箇所およびその関係を把握し、静的解析結果を効率よく分析するのに適している。
【図面の簡単な説明】
【００５５】
【図１】本発明にかかる静的解析結果の分析表示装置の実施の形態１の構成を示すブロック図である。
【図２】実施の形態１において、ファイルパス名テーブルおよび関数名テーブルの構成を示す図である。
【図３−１】実施の形態１において、ファイルメトリックス値テーブルの構成を示す図である。
【図３−２】実施の形態１において、関数メトリックス値テーブルの構成を示す図である。
【図４】実施の形態１において、警告データテーブルの構成を示す図である。
【図５】実施の形態１において、図１に示した加工データの構成を示す図である。
【図６】実施の形態１の出力として表示される３次元グラフの一例を示す図である。
【図７】実施の形態１の動作の手順を示すフローチャートである。
【図８】実施の形態２の出力として表示されるスペクトルの一例を示す図である。
【図９】実施の形態３における問題点パターンの一例を示す図である。
【図１０】実施の形態３により表示された３次元グラフの一例であり、問題点を指摘している例を示す図である。
【図１１】実施の形態３の動作の手順を示すフローチャートである。
【符号の説明】
【００５６】
１  静的解析結果の分析表示装置
２  制御部
３  記録部
４  抽出加工部
５  問題箇所指摘部
６  ユーザ入力部
７  表示部
１０  入出力装置
２０  静的解析結果データ
２１  内部静的解析結果データ
２２  加工データ
２３  問題点パターンデータ
【図１】
2008197731.tif 000003
【図２】
2008197731.tif 000004
【図３−１】
2008197731.tif 000005
【図３−２】
2008197731.tif 000006
【図４】
2008197731.tif 000007
【図５】
2008197731.tif 000008
【図６】
2008197731.tif 000009
【図７】
2008197731.tif 000010
【図８】
2008197731.tif 000011
【図９】
2008197731.tif 000012
【図１０】
2008197731.tif 000013
【図１１】
2008197731.tif 000014