(57)【特許請求の範囲】
【請求項１】
ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、前記第１の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成する第１の指摘情報生成手段と、
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第２の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第２の指摘情報を生成する第２の指摘情報生成手段と、
前記第１及び前記第２の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する分析手段とを備える支援装置。
【請求項２】
前記対応情報は、前記第１の検証結果に含まれる指摘に応じて修正されたソースコードの修正個所との対応を示す、請求項１に記載の支援装置。
【請求項３】
前記第１の指摘情報生成手段は、前記第１の検証結果に含まれる前記指摘を識別する識別情報と、前記修正されたソースコードの前記修正箇所に対して付された識別番号との対応に基づいて第１の指摘情報を生成する、請求項２に記載の支援装置。
【請求項４】
前記分析手段は、前記対応情報及び前記修正後情報の各々の項目が合致するか否かに基づいて前記関連を分析する、請求項１に記載の支援装置。
【請求項５】
前記分析手段は、前記対応情報及び前記修正後情報の各々の項目が合致する場合に、前記修正後情報が前記修正されたソースコードの修正に起因する不具合を示すと判断する、請求項２に記載の支援装置。
【請求項６】
前記分析手段は、前記修正されたソースコードの修正に起因する不具合を示すと判断された前記修正後情報を出力する、請求項５に記載の支援装置。
【請求項７】
ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、前記第１の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成し、
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第２の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第２の指摘情報を生成し、
前記第１及び前記第２の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する支援方法。
【請求項８】
コンピュータに、
ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、前記第１の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成する処理と、
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第２の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第２の指摘情報を生成する処理と、
前記第１及び前記第２の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する処理とを実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、支援装置、支援方法及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアの開発においては、ソースコードの静的検証ツールが用いられる場合がある。この場合には、静的検証ツールを用いたソースコードの検証は、例えば次のように行われる。静的検証ツールによる検証の結果に基づいて、ソースコードが開発者によって修正される。そして、ソースコードの修正後に、必要に応じて再度静的検証ツールによる検証が行われ、静的検証ツールによって指摘された問題が修正されたことが確認される。
【０００３】
特許文献１には、判定作業支援システムに関する技術が記載されている。特許文献１に記載の判定作業支援システムでは、検証結果の指摘についてクローンコードと思われる情報をベースに、各指摘について代入処理や条件分岐といった問題発生に関わる情報が抽出される。そして、特許文献１に記載の判定作業支援システムでは、コードの類似性と問題発生に関わる処理を利用し検証結果の類似指摘を事前に統一し、ユーザが指摘を精査した時に、類似指摘が同じ精査結果となるように処理される。
【０００４】
特許文献２には、プログラム改善支援システムに関する技術が記載されている。特許文献２に記載のシステムは、任意に作成されるプログラムに関する静的解析結果に基づいて、警告を解消し得る具体的なプログラム修正方法を、容易に、更に場合によっては適切な評価付きで、把握することができるようにする。
【０００５】
特許文献３には、ソースコードの静的解析装置に関する技術が記載されている。特許文献３に記載の装置では、解析対象ソースコード生成部が、前回解析時の解析結果を参照して、対象ソースコードから修正部分を抽出した再解析用のソースコードを生成し、静的解析部は再解析用のソースコードの解析を実行する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２５６２２０号公報
【特許文献２】特開２０１３−２０５１９号公報
【特許文献３】特開２０１３−１４９１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
静的検証ツールによる検証の結果に基づいてソースコードが修正される場合には、当該修正に起因して、新たな不具合が生じる場合がある。新たに生じた不具合は、静的検証ツールによって再度の検証が行われた場合に検出される可能性がある。
【０００８】
しかしながら、各特許文献に記載の技術等では、ソースコードの修正に伴って新たな不具合が生じた場合に、当該不具合の原因となった修正に関連する静的検証ツールの指摘に関する情報が提供されない。すなわち、当初の検証結果に含まれる指摘のいずれに対する修正に起因して新たな不具合が生じたかを示す情報が提供されない。したがって、各特許文献に記載の技術では、ソースコードに含まれる不具合の効率的な修正や分析が困難な場合がある。
【０００９】
本発明は、上記課題を解決するためになされたものであって、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することを主たる目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様における支援装置は、ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、第１の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成する第１の指摘情報生成手段と、修正されたソースコードに対して前記静的検証ツールが検証した第２の検証結果に関する修正後情報を含む第２の指摘情報を生成する第２の指摘情報生成手段と、第１及び前記第２の指摘情報に基づいて、対応情報と修正後情報との関連を分析する分析手段とを備える。
【００１１】
本発明の一態様における支援方法は、ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、前記第１の検証結果と修正されたソースコードとの対応を示す第１の指摘情報を生成し、修正されたソースコードに対して静的検証ツールが検証した第２の検証結果に関する修正後情報を含む第２の指摘情報を生成し、第１及び前記第２の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。
【００１２】
本発明の一態様におけるプログラムは、コンピュータに、ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、第１の検証結果と修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成する処理と、修正されたソースコードに対して静的検証ツールが検証した第２の検証結果に関する修正後情報を含む第２の指摘情報を生成する処理と、第１及び第２の指摘情報に基づいて、対応情報と修正後情報との関連を分析する処理とを実行させる。
【発明の効果】
【００１３】
本発明によると、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態における支援装置の構成を示す図である。
【図２】本発明の第１の実施形態における支援装置の他の構成を示す図である。
【図３】本発明の第１の実施形態における支援装置にて生成される第１の指摘情報の例を示す図である。
【図４】本発明の第１の実施形態における支援装置にて生成される第２の指摘情報の例を示す図である。
【図５】本発明の第１の実施形態における支援装置の動作を示すフローチャートである。
【図６】本発明の第１の実施形態における支援装置が備える第１の指摘情報生成部の動作を示すフローチャートである。
【図７】本発明の第１の実施形態における支援装置が備える第２の指摘情報生成部の動作を示すフローチャートである。
【図８】本発明の第１の実施形態における支援装置が備える分析部の動作を示すフローチャートである。
【図９】本発明の第１の実施形態における支援装置にて生成される分析済み指摘情報の例を示す図である。
【図１０】本発明の実施形態における支援装置等を実現する情報処理装置の一例を示す図である。
【発明を実施するための形態】
【００１５】
本発明の各実施形態について、添付の図面を参照して説明する。本発明の各実施形態において、各装置（システム）の各構成要素 は、機能単位のブロックを示している。各装置（システム）の各構成要素の一部又は全部は、例えば図１０に示すような情報処理装置５００とプログラムとの任意の組み合わせにより実現される。情報処理装置５００は、一例として、以下のような構成を含む。
【００１６】
・ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１
・ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５０２
・ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５０３
・ＲＡＭ５０３にロードされるプログラム５０４
・プログラム５０４を格納する記憶装置５０５
・記録媒体５０６の読み書きを行うドライブ装置５０７
・通信ネットワーク５０９と接続する通信インターフェース５０８
・データの入出力を行う入出力インターフェース５１０
・各構成要素を接続するバス５１１
各実施形態における各装置の各構成要素は、これらの機能を実現するプログラム５０４をＣＰＵ５０１が取得して実行することで実現される。各装置の各構成要素の機能を実現するプログラム５０４は、例えば、予め記憶装置５０５やＲＡＭ５０３に格納されており、必要に応じてＣＰＵ５０１が読み出す。なお、プログラム５０４は、通信ネットワーク５０９を介してＣＰＵ５０１に供給されてもよいし、予め記録媒体５０６に格納されており、ドライブ装置５０７が当該プログラムを読み出してＣＰＵ５０１に供給してもよい。
【００１７】
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個の情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つの情報処理装置５００とプログラムとの任意の組み合わせにより実現されてもよい。
【００１８】
また、各装置の各構成要素の一部又は全部は、汎用または専用の回路 （ｃｉｒｃｕｉｔｒｙ）、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップ によって構成されてもよいし、バスを介して接続される複数のチップ によって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【００１９】
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【００２０】
まず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態における支援装置を示す図である。
【００２１】
図１に示すとおり、本発明の第１の実施形態における支援装置１００は、第１の指摘情報生成部１１０と、第２の指摘情報生成部１２０と、分析部１３０とを備える。第１の指摘情報生成部１１０は、ソースコードに対して静的検証ツールが検証した第１の検証結果と、修正されたソースコードとに基づいて、第１の検証結果と修正されたソースコードとの対応を示す対応情報を含む第１の指摘情報を生成する。第２の指摘情報生成部１２０は、修正されたソースコードに対して静的検証ツールが検証した第２の検証結果に関する修正後情報を含む第２の指摘情報を生成する。分析部１３０は、第１及び第２の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。
【００２２】
本実施形態において、第１の検証結果１１及び第２の検証結果１２のそれぞれは、静的検証ツール（不図示）がソースコードに対して検証を行った結果を含む。静的検証ツールは、プログラムのソースコードを主に解析して問題の有無を解析するツールである。静的検証ツールは、プログラムのソースフローを参照して、当該プログラムのデータフローや、設定されたデータ、値、構造等の検証を行うことで、当該プログラムの問題の有無を検証する。すなわち、静的検証ツールは、プログラムの実行ファイルを実行することなくプログラムの問題の有無を検証する。静的検証ツールでは、形式手法と呼ばれる技術等が用いられる。
【００２３】
第１の検証結果１１及び第２の検証結果１２のそれぞれには、静的検証ツールによって検出された問題の各々の詳細を示す指摘が含まれる。指摘は、問題を区別する識別番号、問題の種類や、ソースコードにおける当該問題の原因となった箇所の情報等から構成される。問題の原因となった箇所の情報は、例えばソースコードのファイル名、行番号、関数名、変数名などがあるが、これ以外の情報であってもよい。第１の検証結果１１及び第２の検証結果１２のそれぞれに含まれる指摘の数は特に限定されない。
【００２４】
なお、支援装置１００は、図２に示すような構成であってもよい。すなわち、支援装置１００は、図１に示す構成の他に、第１の指摘情報記憶部１１１と、第２の指摘情報記憶部１２１とを備える。第１の指摘情報記憶部１１１は、上述した第１の指摘情報を記憶する。第２の指摘情報記憶部１２１は、上述した第２の指摘情報を記憶する。第１の指摘情報記憶部１１１及び第２の指摘情報記憶部１２１は、それぞれ、上述した図１０に示す情報処理装置５００が備える記憶装置５０５等にて実現される。
【００２５】
次に、本発明の第１の実施形態における支援装置１００の各構成要素について説明する。
【００２６】
第１の指摘情報生成部１１０は、第１の検証結果１１と、修正されたソースコードとに基づいて、第１の指摘情報を生成する。第１の検証結果１１は、検証の対象とされたソースコードに対して静的検証ツールによる検証が行われた結果である。また、修正されたソースコードは、検証の対象とされたソースコードに対して、静的検証ツールによって指摘された不具合が修正されたソースコードである。
【００２７】
本実施形態においては、修正されたソースコードの修正に関する情報は、図１に示す構成管理情報１２にて管理されている場合を想定する。すなわち、構成管理情報１２には、静的検証ツールによって検証の対象とされたソースコードやそのソースコード名、当該ソースコードが修正された場合にソースコードの修正個所に関する情報やその行番号等が含まれる。ソースコードの修正個所に関する情報には、例えば修正されたソースコードと修正前のソースコードとの差分が含まれる。そして、第１の指摘情報生成部１１０は、修正されたソースコードとして、一例として構成管理情報１２にて管理されている修正個所に関する情報を用いて第１の指摘情報を生成する。構成管理情報１２は、例えばソースコードのバージョン管理システム等にて管理されてもよい。
【００２８】
第１の指摘情報は、第１の検証結果に含まれる指摘の各々と修正されたソースコードとの対応を示す。第１の指摘情報には、対応に関する情報である対応情報が含まれる。すなわち、第１の検証結果１１に含まれる対応情報は、第１の検証結果１１に含まれる指摘が示すソースコードの問題の各々に応じてソースコードが修正された場合に、当該指摘の各々とソースコードの修正個所との対応を示す。なお、第１の指摘情報に含まれる対応情報の数は特に限定されず、第１の指摘情報１１に含まれる指摘に応じて変化する。
【００２９】
図３は、第１の指摘情報の一例を示す。図３に示す第１の指摘情報は、静的検証ツールによって検証された第１の検証結果１１のうち、一つの指摘に関する第１の指摘情報である。すなわち、図３に示す第１の指摘情報は、一つの対応情報を含む。図３に示す第１の指摘情報の例では、「ファイル名」、「関数名」及び「変数名」の各々の項は、主に第１の検証結果１１に含まれる情報である。「修正で追加された行」及び「行番号」の項は、主に修正されたソースコードに関する情報である。なお、第１の検証結果１１に複数の指摘が含まれる場合には、複数の指摘の各々に対して同様の第１の指摘情報が生成される。
【００３０】
図２に示す例では、「ファイル名」は、当該指摘に対応する問題の原因となる箇所が存在するソースコードのファイル名を示す。同様に、「関数名」は、問題の原因となる箇所が存在する関数の名前を示す。また、「変数名」は、問題に関連する変数の変数名を示す。「修正で追加された行」は、当該指摘に応じて問題が修正された場合、ソースコードに対して修正された箇所を示す。この欄にて示されるソースコードは、問題の修正に際して元のソースコードに変更が加えられた箇所でもよいし、問題を修正するためにソースコードに対して新たに追加された箇所でもよい。「行番号」は、修正されたソースコードにおいて、上述した「修正で追加された行」が存在する箇所の番号を示す。また、「変数利用有無」は、ソースコードの「修正で追加された行」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、「変数名」の欄にて示される変数が、「修正で追加された行」の各々において参照または代入されているかに基づいて定められる。図３に示す例では、行番号が「１０」の行においては、「変数名」として示される変数ｓｔｒへの参照があることから、「変数利用有無」が「あり」とされている。また、行番号が「１１」及び「１２」の行においては、「変数名」として示される変数ｓｔｒへの代入及び参照がないことから、「変数利用有無」が「なし」とされている。
【００３１】
第１の指摘情報生成部１１０は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号との対応に基づいて、第１の指摘情報を生成する。すなわち、第１の指摘情報生成部１１０は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号とが合致する場合に、これらの情報に基づいて上述したような第１の指摘情報の対応情報を生成する。
【００３２】
一例として、第１の指摘情報生成部１１０は、識別番号が合致する場合には、第１の検証結果１１に基づいて、第１の指摘情報に含まれる対応情報のうち、「ファイル名」、「関数名」及び「変数名」の各々の項に関する情報を生成する。また、第１の指摘情報生成部１１０は、構成管理情報１２に含まれる修正されたソースコードの修正に関する情報に基づいて、第１の指摘情報に含まれる対応情報のうち「修正で追加された行」及び「行番号」の項に関する情報を生成する。
【００３３】
併せて、第１の指摘情報生成部１１０は、「変数名」及び「修正で追加された行」の項に関する情報を参照して「変数利用有無」の項に関する情報を生成する。すなわち、第１の指摘情報生成部１１０は、「変数名」にて示される変数が「修正で追加された行」にて利用されている場合に、「変数利用有無」を「あり」とする。また、第１の指摘情報生成部１１０は、「変数名」にて示される変数が「修正で追加された行」にて利用されていない場合に、「変数利用有無」を「なし」とする。
【００３４】
なお、本実施形態においては、ソースコードが修正される場合に、ソースコードの修正個所の各々に、修正に対応する指摘の識別番号が付されていることを想定する。識別番号は、一例として、修正されたソースコードがバージョン管理システムへコミットされる場合に、修正担当者又はコミット担当者によって、コミットの際のコメントとして識別番号が記載される。
【００３５】
第１の指摘情報生成部１１０によって生成された第１の指摘情報は、後述する分析部１３０へ適宜送られる。また、図２に示すように、第１の指摘情報記憶部１１１が設けられている場合には、第１の指摘情報生成部１１０は、第１の指摘情報を、第１の指摘情報記憶部１１１に格納する。この場合には、分析部１３０は、必要に応じて第１の指摘情報記憶部１１１に格納された第１の指摘情報を読み出して利用する。
【００３６】
第２の指摘情報生成部１２０は、第２の検証結果１３に基づいて、第２の指摘情報を生成する。第２の指摘情報は、第２の検証結果１３に含まれる指摘の各々に関する修正後情報を含む。第２の検証結果１３は、第１の検証結果１１に基づいてソースコードが修正された場合に、修正されたソースコードに対して静的検証ツールによって検証が行われた結果である。第２の検証結果１３は、第１の検証結果１１と同種の情報を含む。第２の指摘情報に含まれる修正後情報の数は、第２の検証結果１３に含まれる指摘に応じて変化する。
【００３７】
第２の指摘情報に含まれる情報の各々は、第２の検証結果１３に含まれる指摘と同様の情報を含む。また、第２の指摘情報に含まれる修正後情報の各々には、第２の検証結果１３に含まれる指摘の各々に対応する問題の原因となった変数について、当該変数の使用の有無に関する情報が含まれる。
【００３８】
図４は、第２の指摘情報の一例を示す。図４に示す第２の指摘情報は、静的検証ツールによって検証された第２の検証結果１３のうち、一つの指摘に関する修正後情報である。図４に示す第２の指摘情報の例では、「変数利用有無」の項を除く各項は、主に第２の検証結果１３に含まれる情報である。また、図４に示す第２の指摘情報の例のうち、「指摘トレース」及び「変数利用有無」を除く各項は、第１の指摘情報に含まれる同じ名称の項目と同様の情報を示す。
【００３９】
また、「指摘トレース」の項は、第２の検証結果１３に含まれる指摘に関連するソースコードの箇所を示す。詳しくは、「指摘トレース」は、第２の検証結果１３に含まれる指摘にて示された変数への値の代入又は参照に関連するソースコードの箇所を示す。「変数利用有無」の項は、ソースコードの「指摘トレース」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、第１の指摘情報における「変数利用有無」の項と同様に、「指摘トレース」において変数に対する参照または代入が行われているか否かに基づいて定められる。
【００４０】
第２の指摘情報生成部１２０は、第２の検証結果１３に含まれる指摘に基づいて、第２の指摘情報に含まれる修正後情報のうち、「変数利用有無」の項を除く各項に関する情報を生成する。また、第２の指摘情報生成部１２０は、第２の指摘情報に含まれる修正後情報の「変数名」及び「指摘トレース」の項に基づいて、「変数利用有無」の項に関する情報を生成する。
【００４１】
第２の指摘情報生成部１２０によって生成された第２の指摘情報は、分析部１３０へ適宜送られる。また、図２に示すように、第２の指摘情報記憶部１２１が設けられている場合には、第１の指摘情報生成部１２０は、第２の指摘情報を、第２の指摘情報記憶部１２１に格納する。分析部１３０は、この場合に、第２の指摘情報記憶部１２１に格納された第２の指摘情報を読み出して利用する。
【００４２】
分析部１３０は、第１の指摘情報と第２の指摘情報との関連を分析する。すなわち、分析部１３０は、第２の指摘情報に含まれる修正後情報の各々について、第１の指摘情報に関連する対応情報が存在するか否かを分析する。第２の指摘情報に含まれる対応情報の各々について、関連する第１の指摘情報の対応情報が存在する場合には、当該対応情報は、第１の検証結果１１に基づくソースコードの修正に起因して生じた不具合に関連すると判断することができる。
【００４３】
分析部１３０は、一例として、第２の指摘情報に含まれる修正後情報の各々について、第１の指摘情報に含まれる指摘との間の関係が所定の条件を満たすか否かを判断することで、第１の指摘情報に関連する指摘が存在するか否かを分析する。すなわち、分析部１３０は、第２の指摘情報に含まれる修正後情報の各々について、当該指摘の各項目が合致する第１の指摘情報の対応情報の有無を判定することで、所定の関係を満たすか否かを判断する。
【００４４】
一例として、分析部１３０は、図３に示す第１の指摘情報の対応情報及び図４に示す第２の指摘情報の修正後情報の同じ名称の項目について、各々の内容が合致するかを判定する。また、分析部１３０は、図４に示す第２の指摘情報に含まれる「指摘トレース」の項の内容に、図３に示す第１の指摘情報に含まれる「修正で追加された行」の項の内容が含まれるか否かを判定する。そして、全ての項目について内容が合致する場合に、分析部１３０は、第２の指摘情報に含まれる指摘は、第１の検証結果に基づくソースコードの修正に起因する不具合であると分析する。
【００４５】
なお、本実施形態においては、分析部１３０は、ソースコードの修正に起因して生じた同じ変数に関する不具合を分析の対象とする。
【００４６】
図９は、分析部１３０が、図３に示す第１の指摘情報に含まれる対応情報、及び図４に示す第２の指摘情報に含まれる修正後情報に関して判定する場合の例を示す。分析部１３０は、まず、ファイル名が合致するか否かを判定する。図９に示す例では、第１の指摘情報の対応情報に含まれる「ファイル名」、及び第２の指摘情報の修正後情報に含まれる「ファイル名」は、いずれも「ａ．ｊａｖａ」であり、合致する。したがって、分析部１３０は、例えば、ファイル名が合致すると判定する。同様に、分析部１３０は、「関数名」及び「変数名」の項目についても合致すると判定する。
【００４７】
また、第２の指摘情報の修正後情報における「指摘トレース」には、第１の指摘情報の対応情報における「修正で指摘された行」に含まれる行が存在する。したがって、分析部１３０は、「指摘トレース」には、第１の指摘情報における「修正で指摘された行」に含まれる行が存在すると判定する。また、分析部１３０は、「指摘トレース」に「修正で指摘された行」に含まれる行が存在すると判定した場合に、判定の対象となる行の情報について、「行番号」及び「変数利用有無」が合致するか否かを判定する。図９に示す例では、「ｉｆ（ｓｔｒ＝＝ｎｕｌｌ）｛」との行について、「行番号」と「変数利用有無」との合致が判定される。この場合には、分析部１３０は、いずれも合致すると判定する。
【００４８】
すなわち、図９に示す例では、図３に示す第１の指摘情報に含まれる対応情報及び図４に示す第２の指摘情報に含まれる修正後情報の対応する項目について、各々の内容が合致する。したがって、分析部１３０は、図４に示す第２の指摘情報に含まれる修正後情報について、第１の指摘情報には関連する対応情報が存在すると分析する。すなわち、分析部１３０は、図４に示す第２の指摘情報に含まれる修正後情報は、図３に示す第１の検証結果に基づくソースコードの修正に起因する不具合であるとする。
【００４９】
上述のような分析に際して、分析部１３０は、第２の指摘情報に含まれる修正後情報のうち、第１の検証結果に基づくソースコードの修正に起因する不具合であるとした修正後情報を分析済の指摘情報として特定する。特定された分析済の指摘情報は、第２の指摘情報に含まれる他の修正後情報と区分される。分析済の指摘情報は、例えばバッファ（不図示）等に格納される。分析部１３０は、第１の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報を、一覧の形式で出力してもよい。
【００５０】
例えば、分析部１３０は、第１の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧が記載されたファイルを出力してもよい。又は、分析部１３０は、第１の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧を、図示しない表示装置へ出力してもよい。分析部１３０は、これらの修正後情報の一覧を、静的検証ツールから出力される指摘と併せて出力してもよい。
【００５１】
次に、図５から８に示すフローチャートを用いて、本発明の第１の実施形態における支援装置１００の動作の一例を説明する。最初に、図５に示すフローチャートを用いて、本実施形態における支援装置１００の動作の概略を説明する。
【００５２】
まず、第１の指摘情報生成部１１０は、第１の指摘情報を生成する（ステップＳ１１）。支援装置１００が第１の指摘情報記憶部１１１を備える場合には、生成された第１の指摘情報は、必要に応じて第１の指摘情報記憶部１１１に格納されてもよい。本ステップにおける第１の指摘情報生成部１１０の詳細な動作の例は後述する。
【００５３】
次に、第２の指摘情報生成部１２０は、第１の指摘情報を生成する（ステップＳ１２）。支援装置１００が第２の指摘情報記憶部１２１を備える場合には、生成された第２の指摘情報は、必要に応じて第２の指摘情報記憶部１２１に格納されてもよい。本ステップにおける第２の指摘情報生成部１２０の詳細な動作の例は後述する。
【００５４】
次に、分析部１３０は、ステップＳ１１にて生成された第１の指摘情報と、ステップＳ１２にて生成された第２の指摘情報との関連を分析する（ステップＳ１３）。本ステップにおける分析部１３０の詳細な動作の例は後述する。また、分析の結果は、図示しない出力手段等を介して必要に応じて出力される。
【００５５】
続いて、図６に示すフローチャートを用いて、本実施形態における支援装置１００が備える第１の指摘情報生成部１１０の動作の一例を説明する。
【００５６】
第１の指摘情報生成部１１０は、最初に、静的検証ツールがソースコードを検証した際に出力する第１の検証結果を取得する（ステップＳ１０１）。そして、第１の指摘情報生成部１１０は、第１の検証結果に含まれる指摘情報の各々を取得する。
【００５７】
続いて、第１の指摘情報生成部１１０は、修正されたソースコードに関する情報を取得する（ステップＳ１０２）。すなわち、第１の指摘情報生成部１１０は、構成管理情報１２から、ソースコードの修正箇所に関する情報を取得する。
【００５８】
続いて、第１の指摘情報生成部１１０は、第１の検証結果に含まれる指摘情報と、ソースコードの修正個所に関する情報に基づいて、第１の指摘情報を生成する（ステップＳ１０３）。第１の指摘情報生成部１１０は、識別番号等に基づいて、第１の検証結果に含まれる指摘情報と、ソースコードの修正箇所との対応を求めて第１の指摘情報に含まれる対応情報の各々を生成する。
【００５９】
なお、支援装置１００が第１の指摘情報記憶部１１１を備える場合には、第１の指摘情報生成部１１０は、必要に応じてステップＳ１０３にて生成された第１の指摘情報を第１の指摘情報記憶部１１１に格納する（ステップＳ１０４）。支援装置１００が第１の指摘情報記憶部１１１を備えない場合には、第１の指摘情報生成部１１０は、本ステップの処理を行わなくてもよい。
【００６０】
続いて、図７に示すフローチャートを用いて、本実施形態における支援装置１００が備える第２の指摘情報生成部１２０の動作の一例を説明する。
【００６１】
第２の指摘情報生成部１２０は、最初に、静的検証ツールが修正されたソースコードを検証した際に出力する第２の検証結果１３を取得する（ステップＳ２０１）。
【００６２】
続いて、第２の指摘情報生成部１２０は、ステップＳ２０１にて取得された第２の検証結果に基づいて、第２の指摘情報を生成する（ステップＳ２０２）。
【００６３】
なお、支援装置１００が第２の指摘情報記憶部１２１を備える場合には、第２の指摘情報生成部１２０は、必要に応じてステップＳ２０２にて生成された第２の指摘情報を第２の指摘情報記憶部１２１に格納する（ステップＳ２０３）。支援装置１００が第２の指摘情報記憶部１２１を備えない場合には、第２の指摘情報生成部１２０は、本ステップの処理を行わなくてもよい。
【００６４】
続いて、図８に示すフローチャートを用いて、本実施形態における支援装置１００が備える分析部１３０の動作の一例を説明する。
【００６５】
分析部１３０は、第１の指摘情報生成部１１０によって生成された第１の指摘情報を取得する（ステップＳ３０１）。図２に示すように、支援装置１００が第１の指摘情報記憶部１１１を備える場合には、分析部１３０は、第１の指摘情報記憶部１１１に記憶された第１の指摘情報を取得してもよい。
【００６６】
続いて、分析部１３０は、第２の指摘情報生成部１２０によって生成された第２の指摘情報を取得する（ステップＳ３０２）。図２に示すように、支援装置１００が第２の指摘情報記憶部１２１を備える場合には、分析部１３０は、第１の指摘情報記憶部１２１に記憶された第２の指摘情報を取得してもよい。
【００６７】
続いて、分析部１３０は、第１の指摘情報と第２の指摘情報との関係が所定の条件を満たすかを分析する（ステップＳ３０３）。すなわち、分析部１３０は、第２の指摘情報に含まれる指摘の各々について、当該指摘の各項目が合致する第１の指摘情報の指摘が存在するか否かを判定する。
【００６８】
分析部１３０は、第１の指摘情報と第２の指摘情報との関係が所定の条件を満たす場合には（ステップＳ３０３：Ｙｅｓ）、ステップＳ３０４の処理へ進む。すなわち、第２の指摘情報に含まれる指摘について、当該指摘の各項目が合致する第１の指摘情報の指摘が存在する場合には、分析部１３０は、当該第２の指摘を分析済の指摘情報に区分して、分析済の指摘情報を更新する。分析部１３０は、ステップＳ３０４の処理が終了した場合には、続いてステップＳ３０５の処理を行う。
【００６９】
また、分析部１３０は、第１の指摘情報と第２の指摘情報との関係が所定の条件を満たす場合には（ステップＳ３０３：Ｎｏ）、分析部１３０は、ステップＳ３０４の処理を行わずにステップＳ３０５の処理を行う。
【００７０】
ステップＳ３０５において、第１の指摘情報及び第２の指摘情報の全てについて分析が完了した場合（ステップＳ３０６：Ｙｅｓ）場合には、分析部１３０は分析済の指摘情報を図示しない出力手段等に出力する（ステップＳ３０７）。全ての情報の分析が完了していない場合（ステップＳ３０６：Ｎｏ）場合には、分析部１３０はステップＳ３０１に戻り、他の第１の指摘情報に関して再度分析を繰り返す。
【００７１】
以上のとおり、本発明の第１の実施形態における支援装置１００は、第１及び第２の指摘情報に基づいて、分析部１３０が第１及び第２の指摘情報との関連を分析する。すなわち、支援装置１００は、第２の指摘情報のうち、第１の指摘情報と各々の指摘に含まれる各項目の内容が合致する情報を判別して区分する。
【００７２】
上述のように、第１の指摘情報は、静的検証ツールによる検証結果と、当該検証結果に応じてソースコードに対して行われた修正との関係を示す。また、第２の検証結果は、修正されたソースコードに対して静的検証ツールによる検証結果を示す。すなわち、区分された指摘は、第１の検証結果に基づくソースコードの修正に起因する不具合である。第２の検証結果が区分されることで、静的検証ツールの検証結果に基づいてソースコードが修正され、修正されたソースコードが静的検証ツールによって再び検証された場合に、当該修正に起因して生じた不具合の判別が可能となる。
【００７３】
したがって、本実施形態における支援装置１００は、ソースコードに含まれる不具合の効率的な修正や分析を可能にする。
【００７４】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。
【符号の説明】
【００７５】
１１    第１の指摘情報
１２    構成管理情報
１３    第２の検証結果
１４    分析済み指摘情報
１００    支援装置
１１０    第１の指摘情報生成部
１１１    第１の指摘情報記憶部
１２０    第２の指摘情報生成部
１２１    第２の指摘情報記憶部
１３０    分析部
５００    情報処理装置
５０１    ＣＰＵ
５０２    ＲＯＭ
５０３    ＲＡＭ
５０４    プログラム
５０５    記憶装置
５０６    記録媒体
５０７    ドライブ装置
５０８    通信インターフェース
５０９    通信ネットワーク
５１０    入出力インターフェース
５１１    バス
【図１】
0006665576.tif 000002
【図２】
0006665576.tif 000003
【図３】
0006665576.tif 000004
【図４】
0006665576.tif 000005
【図５】
0006665576.tif 000006
【図６】
0006665576.tif 000007
【図７】
0006665576.tif 000008
【図８】
0006665576.tif 000009
【図９】
0006665576.tif 000010
【図１０】
0006665576.tif 000011