(57)【要約】【課題】ソースコードの静的解析によって得られた情報を容易に分析することが可能な静的解析結果分析システムを得る。【解決手段】動作試験または静的解析の結果に応じて修正の行われるソースコードを、修正が行われる度に静的解析を行う静的解析装置２と、静的解析装置２での静的解析結果を所定単位からなる解析対象毎に分けるとともに解析対象に解析対象を識別するための識別情報を付加して格納し、静的解析結果を解析対象毎に識別情報に基づいて分析する分析装置１と、を備える。【選択図】        図１
2005202494.tif 000002
【特許請求の範囲】
【請求項１】
動作試験または静的解析の結果に応じて修正の行われるソースコードの静的解析を行う静的解析装置と、
前記静的解析装置での静的解析結果を格納し格納された静的解析結果を分析する静的解析結果分析装置と、
を備えることを特徴とする静的解析結果分析システム。
【請求項２】
前記静的解析装置は、前記ソースコードの修正が行われる度に修正の行われたソースコードの静的解析を行い、前記静的解析分析装置に静的解析結果を送ることを特徴とする請求項１に記載の静的解析結果分析システム。
【請求項３】
前記静的解析結果分析装置は、前記静的解析結果を所定単位からなる解析対象毎に分けるとともに前記解析対象に該解析対象を識別するための識別情報を付加して格納し、前記静的解析結果を前記解析対象毎に前記識別情報に基づいて分析することを特徴とする請求項１または２に記載の静的解析結果分析システム。
【請求項４】
修正の行われたソースコードに前記識別情報を付加して前記静的解析装置に送る識別情報付加装置をさらに備え、
前記静的解析装置は、前記静的解析結果および前記識別情報を前記静的解析結果分析装置に送ることを特徴とする請求項１〜３のいずれか１つに記載の静的解析結果分析システム。
【請求項５】
前記ソースコードを修正した際または前記静的解析装置において前記ソースコードの静的解析を行った際、前記ソースコードの修正に関する修正情報または前記ソースコードの静的解析に関する解析情報を付加し、
前記静的解析結果分析装置は、前記修正情報または前記解析情報に基づいて前記識別情報を作成し、前記静的解析結果に付加することを特徴とする請求項１〜３のいずれか１つに記載の静的解析結果分析システム。
【請求項６】
静的解析の行われたソースコードの静的解析結果を分析する静的解析結果分析装置であって、
前記静的解析結果を入力する入力部と、
前記静的解析結果を所定単位からなる解析対象毎に分けるとともに前記解析対象に該解析対象を識別するための識別情報を付加して格納する格納部と、
前記静的解析結果を前記解析対象毎に前記識別情報に基づいて分析する分析部と、前記分析部の分析結果を出力する出力部と、
を備えたことを特徴とする静的解析結果分析装置。
【請求項７】
前記入力部から前記識別情報が入力されることを特徴とする請求項６に記載の静的解析結果分析装置。
【請求項８】
前記ソースコードの修正を行った際の前記ソースコードの修正に関する修正情報または前記ソースコードの静的解析を行った際の前記ソースコードの静的解析に関する解析情報に基づいて、前記識別情報を生成し前記解析対象に付加する識別情報生成部をさらに備えたことを特徴とする請求項６に記載の静的解析結果分析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードの静的解析による解析結果を分析する静的解析結果分析システムおよび静的解析結果分析装置に関するものである。
【背景技術】
【０００２】
コンピュータのソフトウェア開発を行う際、コーディング時のソースコードの記述誤りがあるとソフトウェアが正常に動作しないといった不具合が発生する。このソースコードの記述誤りはソースコードをレビューすることによって削減することが可能となる。しかし、ソースコードの規模が大きく又は複雑になると、それにつれてソースコードの完全なレビューが困難となる。
【０００３】
ソースコードの記述誤りを検出する方法として静的解析がある。ソースコードの静的解析は、ソースコードを実際に実行しないでソースコードを構文的、意味的に解析し、記述誤りの可能性が高い部分に対して警告を出力するものである。従来のソースコードの静的解析システムは、ソフトウェアの動作試験前にソースコードの記述誤りを検出し、ソースコード開発者に対してソースコードの記述誤りを修正するための情報を提供していた。
【０００４】
特許文献１に記載の言語処理方法は、静的解析によって求められたコールペアに識別番号を付与してコールペアデータベースに保持し、プログラム中の関数呼出し検出時に、この識別番号をインデックスとして、コールペア情報格納テーブルの該当エントリを１増加させることによってプロファイル情報の収集を行っている。
【０００５】
【特許文献１】特開平１１−２１２８３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術によれば、プログラム処理時のプロファイル処理に基づくオーバヘッドを小さくすることはできるが、ソースコードの静的解析によって得られたソースコードの記述誤り等に対する情報を効率よく分析することはできないといった問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、ソースコードの静的解析によって得られた情報を容易に分析することが可能な静的解析結果分析システムおよび静的解析結果分析装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、動作試験または静的解析の結果に応じて修正の行われるソースコードの静的解析を行う静的解析装置と、前記静的解析装置での静的解析結果を格納し格納された静的解析結果を分析する静的解析結果分析装置と、を備えることを特徴とする。
【発明の効果】
【０００９】
この発明によれば、ソースコードの静的解析結果を格納しておくので、ソースコードの静的解析結果を容易に分析することが可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明にかかる静的解析結果分析システムおよび静的解析結果分析装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態．
図１は本発明の実施の形態にかかる静的解析結果分析システムの構成を示すブロック図であり、図２は静的解析結果分析システムで使用される分析装置の構成を示すブロック図である。
【００１２】
図１において、静的解析結果分析システム２０は静的解析の解析結果を分析する分析装置１、ソースコードの静的解析を行う静的解析装置２、ソースコードを管理する構成管理リポジトリ３、ソースコードの作成を行うコーディング装置４、ソースコードのコンパイルや修正を行う修正装置５、ソースコードの動作確認を行う試験装置６からなる。
【００１３】
コーディング装置４は、プログラムの作成者がソースコードを作成（記述）するための装置であり、コーディング装置４で作成されたソースコードは修正装置５に送られる。修正装置５は、コーディング装置４で作成されたソースコードを機械語に翻訳するコンパイル作業を行うとともに、ソースコードに誤った記述等がある場合はこの誤った記述等を修正する。
【００１４】
試験装置６は、修正装置５で機械語に翻訳されたソースコード（ソフトウェア）を設計仕様に準じて動作させながら動作確認（動作試験）を行い、動作に問題がある場合は、その問題点の検出を行う。試験装置６によって検出された問題点は修正装置５によって修正され、修正後に再び動作確認を行うといった処理を繰り返す。
【００１５】
構成管理リポジトリ３は、ソースコードを管理するための構成管理ツール（図示せず）を備えたパーソナルコンピュータ等であり、ソースコードを識別するための情報を付加させる機能を有している。試験装置５においてソースコードが試験される度に試験の行われたソースコードが構成管理ツール３にチェックインされる。構成管理ツールは、修正装置５からのソースコードをチェックインした際に、チェックインが行われた日時に関する日時情報をソースコードに付加して保存する。また、構成管理ツールへは、構成管理リポジトリ３の使用者によってソースコードを分類するためのラベル情報が入力画面（図示せず）等から入力される。このラベル情報はソースコードに付加されてソースコードとともに保存される。チェックインしたソースコードは日時情報やラベル情報等の識別情報によって識別可能になった後、静的解析装置２に送られる。
【００１６】
ラベル情報は解析対象として分離可能な単位を表すものであり、例えば関数名、プログラム構造の機能ブロックを表すクラス、ファイル名、モジュール名、製品名、開発者名、開発組織名、バージョン、機能名、解析日時、プログラム特性値、関数内で発生した警告等の情報を含んでおり、これらの情報に基づいてソースコードの解析結果の分析を行う。このように種々の情報を取得しておくことによって、解析対象となるソースコード毎の特性を幅広く分類、蓄積することが可能となる。
【００１７】
例えば関数名を１つの単位とし関数名毎にソースコードの解析結果の分析を行う。構成管理ツールにチェックインしたソースコードは、次に修正が行われるまで構成管理ツールによって保存しておき、修正を行う際に修正装置５にチェックアウトする。
【００１８】
静的解析装置２は、構成管理リポジトリ３からのソースコードを実際に実行させずに構文的、意味的に解析し、ソースコードの記述誤りを抽出することによって静的解析を行う静的解析ツール（図示せず）を備えたパーソナルコンピュータ等である。静的解析装置２は、構成管理リポジトリ３からのソースコードを静的解析した後、この解析結果を日付情報やラベル情報とともに分析装置１に送る。
【００１９】
図２に示すように、分析装置１は静的解析によって得られたソースコードの解析結果を分析するための装置であり、解析結果が入力される解析結果入力部１０、解析結果を分類する解析結果登録部１１、解析結果の分析を行う解析結果分析部１２、解析結果等を格納するデータベース（以下、ＤＢという）１３、解析結果の分析結果を加工する分析結果加工部１４、分析結果を出力する分析結果出力部１５を備えている。
【００２０】
解析結果入力部１０は、静的解析装置２から送られるソースコードの解析結果を入力するためのものであり、解析結果入力部１０へ入力された解析結果は解析結果登録部１１に送られる。
【００２１】
解析結果登録部１１は、解析結果入力部１０からの解析結果をＤＢ１３に格納させる。このとき、解析結果の分析が容易に行えるよう解析結果に付加されている日付情報、ラベル情報を用いて解析結果を所定単位の解析対象毎に分類したうえでＤＢ１３に格納させる。
【００２２】
解析結果分析部１２は、ＤＢ１３が格納している分類されたソースコードの解析結果を統計処理等によって分析し、この分析結果をＤＢ１３に格納させる。解析結果分析部１２によって分析される解析結果の分析方法は、解析結果分析部１２に予め設定しておいてもよいし、解析結果を分析する際に分析装置１の使用者によってソースコード毎に設定するようにしてしてもよい。なお、解析結果分析部１２は、ＤＢ１３が格納しているソースコードの解析結果から所定の解析結果を組み合わせて分析することも可能である。
【００２３】
ＤＢ１３は、解析結果登録部１１から送られる日付情報やラベル情報によって分類された解析結果、解析結果分析部１２から送られる分析結果を格納する。また、ＤＢ１３が格納する情報は分析結果加工部１４に送られる。
【００２４】
分析結果加工部１４は、ＤＢ１３に格納されている分析結果を所定の出力形式で出力できるよう加工して分析結果出力部１５に送る。分析結果加工部１４によって加工される分析結果の加工方法は、分析結果加工部１４に予め設定しておいてもよいし、分析結果の加工を行う際に分析装置１の使用者が分析結果毎に設定するようにしてもよい。
【００２５】
分析結果出力部１５は、分析結果加工部１４において加工された分析結果を数値、表、グラフ等の形式で出力する。分析装置１の使用者は、分析結果出力部１５によって出力された分析結果を確認することによって分析結果を得ることができる。そして、分析装置１の使用者は分析結果に基づいてソフトウェア開発における品質対策等を行う。
【００２６】
つぎに、解析結果登録部１１からＤＢ１３に送られるソースコードの解析結果の分類方法について説明する。図３は、ソースコードの静的解析結果の分類を説明するための図である。図３においては、解析結果の分類の一例として１つの製品の解析結果をモジュール毎に分類して時系列に並べた状態を示している。
【００２７】
図３の１つの丸印が１つの解析結果（ａ〜ｄ）を示しており、縦軸方向はモジュールの種類を示している。例えば、横軸方向と平行な一番上の段はモジュールＡの解析結果が並べられている。なお、解析結果のモジュールの種類は、解析結果に付加されたラベル情報のモジュール名を識別することによって分類される。
【００２８】
横軸は時間を表している。ここでは静的解析の行われた日を示しており、右側に位置する解析結果ほど新しい。例えば、モジュールＡの場合、解析結果ａ１が最も古い時期に製品（ソースコード）が開発されて静的解析が行われ、以後解析結果ａ２、解析結果ａ３，解析結果ａ４の順で製品が改版されて静的解析が行われていることを示している。なお、解析結果の時間は、解析結果に付加された日付情報を識別することによって分類される。
【００２９】
破線で囲まれたエリア２２は、モジュールＢの解析結果を表しており、エリア２２にある解析結果を解析結果分析部１２で分析することによってモジュールＢの解析結果の推移を時間経過に沿って分析することが可能となる。
【００３０】
また、破線で囲まれたエリア２１は、同一の日に静的解析が行われたモジュールの解析結果を表しており、エリア２１にある解析結果を解析結果分析部１２で分析することによって同一日に静的解析が行われたモジュールのモジュール毎の解析結果を分析することが可能となる。例えば、解析結果分析部１２においてエリア２１を対象に分析を行うと、解析結果ａ３、解析結果ｃ３、解析結果ｄ２、解析結果ｅ２が同一日に行われた静的解析の解析結果として分析される。
【００３１】
なお、解析結果の分類は、モジュール名によって分類する場合に限られず、例えば関数名、ファイル名、製品名、開発者名、開発組織名、バージョン、機能によって分類しておいてもよい。このように種々の分類方法によって分類しておくことによって、解析対象となるソースコード毎の特性を幅広く収集、蓄積することが可能となる。
【００３２】
また、解析結果の時間的推移を分析するため、同一日に行われた静的解析の解析結果の代わりに、例えば同一時間、同一週等に行われた静的解析の解析結果によって分類するようにしてもよい。
【００３３】
解析結果登録部１１において、ソースコードをこのように分類しておくことで、解析結果分析部１２で行うソースコードの解析結果の分析を容易に行える。また、ソースコードの解析結果を視覚的に確認することも可能となる。
【００３４】
つぎに、解析結果分析部１２が行う解析結果の分析について説明する。図４−１は、静的解析結果の分析結果の一例を示すであり、ある時期におけるモジュールの品質を分析した結果を示す図である。図４−１において、横軸はモジュールの種類を表し、縦軸は製品（ソースコード）の品質指標値を表しており、例えば同一日のモジュール毎の品質指標値を分析している。なお、製品の品質指標値は、ソースコードの静的解析による解析結果に基づいて算出される。
【００３５】
図４−１に示す例では、モジュールＡとモジュールＢが他のモジュールに比べて品質指標値が低くなっている。したがって、このような分析によって、モジュールＡとモジュールＢを他のモジュールよりも重点的に品質向上させる必要があると判断できることとなる。このようにある時期のモジュール毎の品質指標値等の解析結果を分析することによってモジュール毎の品質のばらつきを評価することが可能となる。なお、品質指標値に対して所定の基準を設けておけば品質のばらつきの評価を明確にすることが可能となる。
【００３６】
図４−２は、静的解析結果の分析結果の一例を示すであり、モジュール毎の品質を時間経過に沿って分析した結果を示す図である。図４−２において、横軸は時間（日付）を表し、縦軸は製品（ソースコード）の品質指標値を表している。ここでは、モジュールの種類毎の品質指標値を時間的推移に従って分析している。図４−２に示す例では、モジュールＸとモジュールＹの解析結果の時間的推移を表している。なお、製品の品質指標値は、ソースコードの静的解析による解析結果に基づいて算出される。
【００３７】
モジュールＸは、時期Ｔ１以降時間の経過とともに品質指標値が良くなっており、モジュールＹは時期Ｔ２以降時間の経過とともに品質指標値が悪くなっている。したがって、このような分析によって、モジュールＹは品質劣化が起きており、品質向上させる必要があると判断できることとなる。一方、モジュールＸは、品質の向上を確認することが可能となる。このように時間的推移に従ってモジュール毎の解析結果を分析することによってモジュール毎の品質の時間的変化を評価することが可能となる。
【００３８】
なお、モジュールの粒度は任意に設定可能であり、この粒度を変化させることで小規模な静的解析から大規模な静的解析まで分析が可能となる。例えば、製品単位で静的解析を行うことも可能であり、１つの製品のモジュール単位で静的解析を行うことも可能である。
【００３９】
つぎに、このような分析装置１が組み込まれた静的解析結果分析システム２０による静的解析の結果を取得する手順について、図５のフローチャートを参照しながら説明する。静的解析結果分析システム２０において、プログラムの作成者がコーディング装置４によってソースコードを作成し（ステップＳ１００）、このソースコードが修正装置５に送られる。
【００４０】
コーディング装置４からのソースコードは、修正装置５においてコンパイル作業が行われる（ステップＳ１１０）。このとき、ソースコードに誤った記述等がある場合は、この誤った記述等が修正される。修正の行われたソースコードは、試験装置６において設計仕様に準じて動作させながら動作確認を行い、動作に問題がある場合は、その問題点の検出を行う。試験装置６によって検出された問題点は修正装置５によって修正され、修正後に再び動作確認を行うといった処理を繰り返す。
【００４１】
修正装置５によってソースコードの修正が行われる度に、修正装置５で修正の行われたソースコードを構成管理ツールにチェックインする（ステップＳ１２０）。このとき、構成管理リポジトリ３の構成管理ツールにソースコードをチェックインする際のラベル情報を入力画面等から入力し、ソースコードにラベル情報と日時情報を付加しておく（ステップＳ１３０）。構成管理ツールは、チェックインしたソースコードをラベル情報および日時情報とともに保存する。
【００４２】
ラベル情報および日時情報によって識別可能となったソースコードは、静的解析装置２に送られる。静的解析装置２は、ソースコードの記述誤りを抽出することによってソースコードの静的解析を行う（ステップＳ１４０）。そして、静的解析の行われたソースコードの解析結果はラベル情報や日付情報とともに分析装置１の解析結果入力部１０に送られる。ソースコードの解析結果、ラベル情報、日付情報は、解析結果入力部１０から解析結果登録部１１に送られる。
【００４３】
分析装置１の解析結果登録部１１は、解析結果に付加されているラベル情報や日付情報を参照して、解析結果の分析が容易に行えるよう所定の規則に従って解析結果を分類し、ＤＢ１３で格納する（ステップＳ１５０）。例えば、解析結果をモジュール毎に分類して時系列に並べた状態でＤＢ１３に格納する。この後、必要に応じてＤＢ１３に格納した解析結果を分析する(ステップＳ１６０）。
【００４４】
つぎに、分析装置１が行う静的解析の解析結果の分析手順について、図６のフローチャートを参照しながら説明する。解析結果入力部１０に解析結果を入力する（ステップＳ２００）。入力された解析結果は、解析結果登録部１１で分類されてＤＢ１３に格納される（ステップＳ２１０，Ｓ２２０）。解析結果を分析するにあたり、解析結果分析部１２において分析する解析結果とその分析方法を指定する（ステップＳ２３０）。解析結果分析部１２は、指定された分析方法に従ってＤＢ１３から解析結果を抽出し、解析結果の分析を行う（ステップＳ２４０）。例えば、モジュールの種類毎の品質指標値をグラフ化することによって解析結果の分析を行う。解析結果分析部１２で得られた解析結果の分析結果は、ＤＢ１３に送られて、ＤＢ１３で格納される（ステップＳ２５０）。
【００４５】
ＤＢ１３で格納されている分析結果を出力するため、必要とする分析結果とこの分析結果の出力形式を分析結果加工部１４において指定する（ステップＳ２６０）。分析結果加工部１４は、指定された分析結果をＤＢ１３から抽出し、この分析結果を指定された出力形式に従って加工する（ステップＳ２７０）。所定の出力形式に加工された分析結果は、分析結果出力部１５によって出力される（ステップＳ２８０）。そして、出力された分析結果に基づいてソフトウェア開発における品質対策等が行われる。
【００４６】
なお、本実施の形態においては、修正装置５のソースコードを、構成管理リポジトリ３を介して静的解析装置２に送る構成としたが、修正装置５と静的解析装置２を接続させ、修正装置５から直接静的解析装置２にソースコードを送る構成としてもよい。この場合、
解析結果登録部１１において、ラベル情報や日付情報を入力しソースコードの解析結果に付加する。これにより、構成管理リポジトリ３が不要となり、簡単な構成で静的解析結果分析システムを得ることが可能となる。
【００４７】
また、ラベル情報や日付情報は、構成管理ツールで保存されたソースコードの情報に基づいて解析結果登録部１１で自動入力させるようにしてもよい。ここでのソースコードの情報は、例えばソースコードを修正した日時等の情報（修正情報）、構成管理ツールにチェックインした日時やチェックインさせた人物等の情報である。また、ラベル情報や日付情報は、静的解析装置２においてソースコードの情報を付加しておき、このソースコードの情報に基づいて解析結果登録部１１で自動入力させるようにしてもよい。ここでのソースコードの情報は、ソースコードの静的解析を行った日時の情報（解析情報）等である。これにより、簡単な構成でラベル情報や日付情報を得ることが可能となる。
【００４８】
なお、本実施の形態においては構成管理リポジトリ３、静的解析装置２、分析装置１は夫々独立した構成としたが、１つの装置が構成管理リポジトリ３、静的解析装置２、分析装置１の有する各機能を備える構成としてもよい。また、構成管理リポジトリ３、静的解析装置２、分析装置１がネットワーク接続された構成としてもよい。さらに、構成管理リポジトリ３、静的解析装置２、分析装置１、遠隔操作用の装置をネットワーク接続させておき、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを用いて遠隔操作用の装置から構成管理リポジトリ３、静的解析装置２、分析装置１に静的解析や静的解析の解析結果を分析させるよう制御してもよい。
【００４９】
なお、本実施の形態ではソースコードの静的解析による解析結果を分析することとしたが、分析装置１による分析対象は静的解析の解析結果に限られず、試験装置６でうまく動作しなかった現象とその原因を示す障害の情報、プログラム構文解析の結果、プログラムの仕様を分析するようにしてもよい。これにより、障害、静的解析結果、プログラム構文、プログラム仕様の関連性を分析することも可能となり、モジュール等から発生する障害を予測することができる。
【００５０】
このように実施の形態によれば、修正装置５でソースコードを修正した際、解析対象となるソースコード毎の特性を幅広く収集、蓄積するためソースコードの静的解析の解析結果を容易かつ効率的に分析することができる。また、静的解析の解析結果を明確な基準に基づいて分析することができるため、分析結果に基づいたソースコードへの対応を行うことが可能となる。また時間の経過に伴ってソースコードの品質が向上しているか否かの判断や１つの製品の中で品質のよくない部分等を明確にすることができる。したがって、ソフトウェア開発の品質対策を迅速に行うことが可能となる。
【産業上の利用可能性】
【００５１】
以上のように、本発明にかかる静的解析結果分析システムおよび静的解析結果分析装置は、ソースコードの静的解析結果の分析に適している。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施の形態にかかる静的解析結果分析システムの構成を示すブロック図である。
【図２】静的解析結果分析システムで使用される分析装置の構成を示すブロック図である。
【図３】ソースコードの静的解析結果の分類を説明するための図である。
【図４−１】ある時期におけるモジュールの品質を分析した結果の一例を示す図である。
【図４−２】モジュール毎の品質を時間経過に沿って分析した結果の一例を示す図である。
【図５】静的解析結果分析システムによる静的解析結果を取得する手順を示すフローチャートである。
【図６】分析装置が行う静的解析結果の分析手順を示すフローチャートである。
【符号の説明】
【００５３】
１  分析装置
２  静的解析装置
３  構成管理リポジトリ
４  コーディング装置
５  修正装置
６  試験装置
１０  解析結果入力部
１１  解析結果登録部
１２  解析結果分析部
１３  ＤＢ
１４  分析結果加工部
１５  分析結果出力部
２０  静的解析結果分析システム
２１，２２  エリア
ａ〜ｅ  解析結果
Ａ，Ｂ，Ｘ，Ｙ  モジュール
Ｔ１，Ｔ２  時期
【図１】
2005202494.tif 000003
【図２】
2005202494.tif 000004
【図３】
2005202494.tif 000005
【図４−１】
2005202494.tif 000006
【図４−２】
2005202494.tif 000007
【図５】
2005202494.tif 000008
【図６】
2005202494.tif 000009