(57)【要約】【課題】ソースコードの自動解析を実行して得られた解析結果と目視による解析結果を一元的に管理し、効率的なソフトウエア開発の実現に寄与するソースコード解析支援装置を得ること。【解決手段】本発明にかかるソースコード解析支援装置は、処理対象のソースコードについて自動解析を行い、自動解析により発見した問題点を含んだ指摘情報を生成するソースコード解析部（２２）と、指摘情報を記憶する指摘結果ＤＢ（３４）と、目視確認結果を取得し、目視確認結果に基づいて指摘情報を更新する目視レビュー情報管理部（２４）と、更新後の指摘情報に含まれるソースコードの問題点を表示する指摘結果表示確認結果取得部（１２）と、を備え、ソースコード解析部（２２）により発見された問題点と目視レビュー情報管理部（２４）により取得された目視確認結果が示す問題点とを指摘結果ＤＢ（３４）で一元的に管理する。【選択図】        図１
2009146207.tif 000002
【特許請求の範囲】
【請求項１】
処理対象のソースコードについて、所定のルールに従った自動解析を行い、当該自動解析により発見した問題点を含んだ指摘情報を生成する指摘情報生成手段と、
前記指摘情報を記憶する指摘情報記憶手段と、
ユーザが目視により前記ソースコードを確認して発見した問題点の情報である目視確認結果を取得し、当該目視確認結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新する指摘情報更新手段と、
前記指摘情報記憶手段に保持されている更新後の指摘情報に含まれるソースコードの問題点を表示する問題点表示手段と、
を備え、
前記指摘情報生成手段により発見された問題点と前記指摘情報更新手段により取得された目視確認結果が示す問題点とを前記指摘情報記憶手段で一元的に管理することを特徴とするソースコード解析支援装置。
【請求項２】
前記ソースコードが更新された場合、
前記指摘情報生成手段は、更新前のソースコードと更新後のソースコードの差分に基づいて、当該更新後のソースコードから再度の自動解析が必要なコード文を特定し、当該特定したコード文を対象として自動解析を行い、さらに、当該自動解析結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新することを特徴とする請求項１に記載のソースコード解析支援装置。
【請求項３】
さらに、
前記ユーザが前記ソースコードに対して目視確認を実施した範囲を示す実施範囲情報を取得する目視チェック実施範囲管理手段と、
前記指摘情報記憶手段に保持されている指摘情報が示す問題点が存在する行にマーキングを行いかつ前記実施範囲情報が示す範囲にマーキングを行い、その時点で最新のソースコードを表示するソースコード表示手段と、
を備えることを特徴とする請求項１または２に記載のソースコード解析支援装置。
【請求項４】
前記ソースコードが更新された場合、
前記目視チェック実施範囲管理手段は、更新前のソースコードと更新後のソースコードの差分に基づいて前記実施範囲情報を更新することを特徴とする請求項３に記載のソースコード解析支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア開発においてソースコードを解析する際の支援技術に関し、特に、ソースコードを更新した後に実施する静的解析作業の効率化を実現するソースコード解析支援装置に関する。
【背景技術】
【０００２】
ソフトウエア開発では、静的解析および動的解析によりプログラムを構成するソースコードを確認（評価）する。静的解析は、プログラムを実行することなくソースコードの内容を解析ツールや作業者の目視チェックにより評価を行う方法である。また、動的解析は、プログラムを実行させて評価を行う方法である。
【０００３】
通常、静的解析は、動的解析を行う前の作業として実行される。すなわち、静的解析により抽出された問題点をすべて解決（ソースコードを修正）した後に動的解析が実行される。動的解析により新たな問題点が見つかった場合には、ソースコードを修正した上で再度静的解析および動的解析を実行して評価を行う。そして、ソフトウエアの開発を効率よく行うには、静的解析によりプログラムの完成度を高めた上で動的解析を行うことが重要である。すなわち、開発期間の短縮やコスト削減を実現するためには、静的解析を高効率かつ高精度に行うことが必要である。
【０００４】
ここで、静的解析技術を効率的に行うためのシステムとして、下記特許文献１に記載のソースプログラムのレビュー支援システムが存在する。下記特許文献１に記載されたソースプログラムのレビュー支援システムでは、効率的なレビュー（ソースコードのチェック）作業を実現するために、ソースコードの中からユーザが確認すべき項目を抽出してリスト化し、ユーザは、リストに従いソースコードのチェックを行うようにしている。また、チェックが終了した項目にはその旨を示す表示を行うことでチェック漏れが発生するのを防止している。さらに、ソースコードが更新された場合、再チェックが必要な箇所と不要な箇所とをユーザに通知することで、チェックが必要な箇所のみを再チェックできるようにしている。
【０００５】
【特許文献１】特開２００５−１９０３３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
静的解析には、解析ツールを利用した自動解析と、開発者などの目視による手動解析が存在するが、自動解析が可能な範囲には限界があり、一方、目視による解析では規模が大きい場合にレビュー範囲も広範囲にわたってしまい、レビュー自体に多くの時間を必要とする。そのため、大規模化・複雑化が進んでいるソフトウエアを対象とした場合、効率的な解析作業を実現するためには、自動解析と手動解析を組み合わせて実施することが望ましい。たとえば、自動解析が可能な範囲については自動解析を行い、残りの範囲については目視による解析を行う。
【０００７】
しかしながら、上記特許文献１に記載のソースプログラムのレビュー支援システムは、チェック項目を自動的に抽出するだけであり、解析作業自体はユーザが手動で行う必要がある。すなわち、自動解析が可能な部分についても手動で行うため、非効率的である、という解決すべき課題が存在する。
【０００８】
また、単に自動解析と手動解析を組み合わせた場合には、たとえば、以下のような解決すべき課題が存在する。
【０００９】
（１）手動解析では、どこまでレビューしたかがわからないため、レビュー漏れが発生する可能性がある。
（２）ソースコードを修正した場合、その後の自動解析実施範囲および手動解析実施範囲が不明確になり、未修正箇所を含めて再度確認する必要がある。
（３）自動解析結果と手動解析結果を一元的に管理することができないため、レビューを効率的かつもれなく実施するのが難しい。
【００１０】
本発明は、上記に鑑みてなされたものであって、ソースコードの自動解析を実行して得られた解析結果と目視による解析結果の一元的な管理を実現し、かつ手動解析におけるレビュー漏れを防止しつつ、ソースコードが更新された場合には、自動解析による再確認処理および手動解析による再確認処理を必要最小限に抑え、効率的なソフトウエア開発を実現するソースコード解析支援装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、本発明は、処理対象のソースコードについて、所定のルールに従った自動解析を行い、当該自動解析により発見した問題点を含んだ指摘情報を生成する指摘情報生成手段と、前記指摘情報を記憶する指摘情報記憶手段と、ユーザが目視により前記ソースコードを確認して発見した問題点の情報である目視確認結果を取得し、当該目視確認結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新する指摘情報更新手段と、前記指摘情報記憶手段に保持されている更新後の指摘情報に含まれるソースコードの問題点を表示する問題点表示手段と、を備え、前記指摘情報生成手段により発見された問題点と前記指摘情報更新手段により取得された目視確認結果が示す問題点とを前記指摘情報記憶手段で一元的に管理することを特徴とする。
【発明の効果】
【００１２】
この発明によれば、ソースコード解析支援装置は、まずソースコードの自動解析を行い、その後、当該ソースコードの目視レビュー結果を取得した場合、自動解析結果に基づいて生成し保持しておいた指摘情報を、取得した目視レビュー結果に基づいて更新することとしたので、自動解析結果と目視レビュー結果の一元的な管理が実現でき、たとえば、ソースコードを修正する開発者に対して、自動解析にて指摘された問題点と目視レビューにて指摘された問題点を同一画面上にリスト化して通知することができる、という効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下に、本発明にかかるソースコード解析支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
図１は、本発明にかかるソースコード解析装置の構成例を示す図である。このソースコード解析装置は、ユーザからの情報取得やユーザへの情報提供を行うフロントエンド部１０と、ソースコードの自動解析結果等の各種情報を管理する情報処理部２０と、各種情報を記憶する記憶部３０と、により構成される。なお、これらは、ネットワークなどを介して接続された構成としてもよい。
【００１５】
フロントエンド部１０は、ソースコードエディタ部１１、指摘結果表示確認結果取得部１２および目視レビュー結果取得部１３を含む。
【００１６】
情報処理部２０は、ソースコード管理部２１、ソースコード解析部２２、指摘結果管理部２３および目視レビュー情報管理部２４を含む。
【００１７】
記憶部３０は、ソースコードＤＢ（データベース）３１、ソースコード履歴情報ＤＢ３２、解析ルールＤＢ３３、指摘結果ＤＢ３４およびレビュー済み範囲情報ＤＢ３５を含む。
【００１８】
なお、指摘情報生成手段はソースコード解析部２２により構成され、指摘情報更新手段は指摘結果管理部２３により構成され、目視チェック実施範囲管理手段は目視レビュー情報管理部２４により構成される。また、問題点表示手段は指摘結果表示確認結果取得部１２により構成され、ソースコード表示手段は目視レビュー結果取得部１３により構成される。また、指摘情報記憶手段は指摘結果ＤＢ３４により構成される。
【００１９】
フロントエンド部１０のソースコードエディタ部１１は、図示していないキーボードやマウスなどの入力部を介してユーザから情報を取得し、取得した情報に基づいてソースコードの作成や修正を行う。指摘結果表示確認結果取得部１２は、ソースコードの自動解析を実施して得られる指摘結果および目視レビューを実施したユーザ（レビュー者）から取得した指摘結果を表示部（図示せず）へ表示させる。また、指摘結果に含まれる指摘箇所のいずれか一つについて、その個別確認が終了したことを示す情報をユーザから取得した場合、取得した情報を指摘結果管理部２３に渡す。目視レビュー結果取得部１３は、ユーザにより実施された目視レビューの結果を取得する。
【００２０】
情報処理部２０のソースコード管理部２１は、最新のソースコードおよび古いソースコードを管理する。また、更新されたソースコード取得した場合、それをソースコードＤＢ３１へ格納するとともに、それまでソースコードＤＢ３１へ格納しておいた、上記更新されたソースコードに対応するソースコードを古いソースコードとしてソースコード履歴情報ＤＢ３２へ格納する。
【００２１】
ソースコード解析部２２は、ソースコードの自動解析を行う。自動解析処理では既存の静的解析技術等を用い、処理対象としたソースコードのスタイルチェックや、規約チェック等を実施する。また、ソースコード履歴情報ＤＢ３２に処理対象ソースコードの古いソースコードがある場合には、これらの差分を算出し、算出した差分により処理対象ソースコード内の自動解析を実施する範囲を特定し、特定した部分のみについてのみ自動解析を行う。
【００２２】
指摘結果管理部２３は、指摘結果の表示に必要な情報を指摘結果ＤＢ３４から取得する。また、指摘結果に含まれる特定の項目についての個別確認が終了した旨を示す情報を指摘結果表示確認結果取得部１２から受け取った場合、指摘結果ＤＢ３４に格納された指摘結果内の、当該特定項目についての確認済みフラグを設定する。
【００２３】
目視レビュー情報管理部２４は、目視レビューの実施済み範囲の情報をレビュー済み範囲情報ＤＢ３５に格納する。また、目視レビューのレビュー結果（指摘事項）を目視レビュー結果取得部１３から受け取った場合、受け取った情報に基づいて、指摘結果ＤＢ３４に格納された指摘結果を更新する。
【００２４】
記憶部３０のソースコードＤＢ３１は、最新のソースコードを保持し、ソースコード情報履歴ＤＢ３２は、古いソースコードを保持する。解析ルールＤＢ３３は、自動解析にて使用する解析ルールを保持する。
【００２５】
指摘結果ＤＢ３４は、自動解析結果や目視レビュー結果と、それらが示す指摘事項に対する対応結果についての情報を保持する。レビュー済み範囲情報ＤＢ３５は、目視レビューの実施済み範囲を含むレビュー範囲管理情報を保持する。
【００２６】
図２は、本発明にかかるソースコード解析支援装置を利用したソフトウエア開発手順の概要を示す図である。
【００２７】
本発明にかかるソースコード解析支援装置を利用してソフトウエアの開発を行う場合、図２に示したように、ソフトウエアの開発者は、ソースコードの作成や修正を行い、その作業が終了した場合、作業により得られたソースコードをソースコード解析支援装置のへ登録（修正した場合には更新登録）を行う（ステップＳ１）。
【００２８】
ステップＳ１が実行され、ソースコードが登録されると、ソースコード解析支援装置は、そのソースコードを対象とした自動解析を実行する（ステップＳ２）。また、当該ソースコードを対象としてユーザ（開発者または他の作業者）が目視レビューを実施した結果を取得する（ステップＳ３）。
【００２９】
次に、ソースコード解析支援装置は、上記ステップＳ２で自動解析を実行して得られた解析結果および上記ステップＳ３で取得した目視レビュー結果についてのコメントを、必要に応じてユーザから取得する（ステップＳ４）。
【００３０】
その後、開発者は、上記解析結果や目視レビュー結果を参照しながらソースコードの修正を行う。そして修正作業が終了すると、その結果得られたソースコードの更新登録を行う。すなわち、上述したステップＳ１を再度実行する。さらに、更新登録されたソースコードを対象として、ソースコード解析支援装置が上記ステップＳ２〜Ｓ４の処理を実行する。以下、対象ソースコードの修正が不要となるまで（指摘された問題点をすべて解決するまで）上記ステップＳ１〜Ｓ４を繰り返す。
【００３１】
つづいて、ソースコード解析支援装置を利用して行うソフトウエア開発の手順について、図面を参照しながら詳細に説明する。
【００３２】
図３は、ソースコード解析支援装置を利用したソフトウエア開発手順の一例を示す図であり、ソフトウエアの開発者による作業、ソースコード解析支援装置が実行する処理および目視による解析（レビュー）を行うレビュー者の作業、の関係を時系列的に示したフローチャートである。
【００３３】
図３に示したように、ソフトウエア開発では、まず、開発者がソースコードを新規に作成する。次に、新規作成されたソースコードを受け取ったソースコード解析支援装置が、ソースコードに対して自動解析を実行し、解析結果をデータベースへ登録する（手順＃１）。
【００３４】
図４は、上記手順＃１における動作を具体的に示した図である。すなわち、手順＃１では、まず、開発者がフロントエンド部１０のソースコードエディタ部１１（図１参照）を利用してソースコードを新規に作成する（ステップＳ１１）。そして、ソースコードの登録指示を開発者から受けた場合、ソースコードエディタ部１１は、開発者により作成されたソースコードを情報処理部２０のソースコード管理部２１へ出力し、さらに、当該ソースコードを記憶部３０内のソースコードＤＢ３１へ登録するように指示を行う（ステップＳ１２）。
【００３５】
ソースコードエディタ部１１から登録指示を受けたソースコード管理部２１は、受け取ったソースコード（上記の新規に作成されたソースコード）をソースコードＤＢ３１へ登録する（ステップＳ１３）。また、新規に作成されたソースコードの登録を行った旨をソースコード解析部２２へ通知する。
【００３６】
新規作成されたソースコードをソースコードＤＢ３１に登録した旨の通知を受けた場合、ソースコード解析部２２は、使用しているプログラミング言語の種類などに応じて選択した既存の静的解析技術などを用い、ソースコードのスタイルチェックや規約チェック等を実施することにより、ソースコードの自動解析を行う。より詳細には、自動解析処理において、ソースコード解析部２２は、解析ルールＤＢ３３から解析ルールを読み込み（ステップＳ１４）、さらに、ソースコードＤＢ３１から処理対象のソースコード（上記新規作成されたソースコード）を読み込む（ステップＳ１５）。そして、ステップＳ１４で読み込んだ解析ルールに従い、ステップＳ１５で読み込んだソースコードの自動解析を行う（ステップＳ１６）。最後に、ソースコード解析部２２は、自動解析を実行して発見した問題点の情報を含んだ指摘情報を生成し、生成した指摘情報を指摘結果ＤＢ３４へ登録する（ステップＳ１７）。なお、指摘情報の詳細については後述する。
【００３７】
図３の説明に戻り、手順＃１に続いて、レビュー者（この例では、開発者と異なる他の作業者とする）は、手順＃１で新規作成および自動解析が行われたソースコードを対象として、目視によるレビュー（ソースコードの目視チェック）を行い、ソースコード解析支援装置は、目視レビューが行われた範囲（レビュー実施済み範囲）の情報およびレビュー結果を取得する（手順＃２）。
【００３８】
図５は、上記手順＃２における動作を具体的に示した図である。すなわち、上記手順＃２では、まず、作業者（レビュー者）からレビュー対象ソースコード（レビューを行うソースコード）の情報を取得すると、目視レビュー結果取得部１３は、レビュー対象ソースコードをソースコードＤＢ３１から取得するようにソースコード管理部２１へ依頼する。ソースコード管理部２１は、依頼されたソースコード（レビュー対象ソースコード）をソースコードＤＢ３１から読み出し、目視レビュー結果取得部１３へ渡す（ステップＳ２１，Ｓ２２）。そして、目視レビュー結果取得部１３は、受け取ったソースコードを表示部（図示せず）へ表示させる。なお、作業者から複数のレビュー対象ソースコードを指定された場合、すべてのレビュー対象ソースコードを取得する。表示を行うにあたっては、たとえば、各ソースコードの表示画面を重ねて表示する。
【００３９】
また、目視レビュー結果取得部１３は、レビュー対象ソースコードを自動解析結果に基づいて絞り込むようにしてもよい。たとえば、複数のソースコードがレビュー対象として指定された場合、その中の所定数のソースコードを、自動解析による指摘件数が多いものから順番に選択し、取得する。また、自動解析時にメトリクス情報（複雑度やネストの深さなど）を算出した場合、メトリクス情報に基づいてレビュー対象として選択可能なソースコードを絞り込むようにしてもよい。
【００４０】
次に、レビュー者は、表示されたソースコードを目視により確認し（目視レビューを行い）、一方、ソースコード解析支援装置は、目視による確認結果の情報を取得する。すなわち、目視レビュー結果取得部１３は、確認が行われた範囲を示すレビュー済み範囲情報を取得し（ステップＳ２３）、さらに、レビュー指摘結果すなわち目視レビュー結果（修正が必要と判断した部分（問題点）についての情報）を取得する（ステップＳ２４）。
【００４１】
ここで、ステップＳ２３でレビュー済み範囲情報を取得するにあたって、目視レビュー結果取得部１３は、たとえば、図６に示したような表示を行い、実施範囲（開始行（開始位置）と終了行（終了位置））をレビュー者に入力させる。また、ステップＳ２４で目視によるレビュー結果を取得するにあたって、目視レビュー結果取得部１３は、たとえば、図７に示したような表示を行い、対象行（修正が必要な場所），警告レベル，内容（問題点），記入者（レビュー者），記入日などをレビュー結果として、レビュー者に入力させる。
【００４２】
その後、目視によるレビュー作業が終了し、レビュー者からレビュー結果の登録指示情報を取得した場合、目視レビュー結果取得部１３は、上記ステップＳ２３およびＳ２４を実行して取得したレビュー実施済み範囲の情報および目視レビュー結果を目視レビュー情報管理部２４へ出力し、さらに、当該レビュー実施済み範囲の情報をレビュー済み範囲情報ＤＢ３５へ、当該目視レビュー結果を指摘結果ＤＢ３４へ登録するように指示を行う（ステップＳ２５）。
【００４３】
目視レビュー結果取得部１３から登録指示を受けた目視レビュー情報管理部２４は、受け取ったレビュー実施済み範囲の情報をレビュー済み範囲情報ＤＢ３５へ登録し（ステップＳ２６）、さらに、受け取った目視レビュー結果に基づいて、指摘結果ＤＢ３４に登録されている指摘情報を更新する（ステップＳ２７）。なお、更新する指摘情報は、上記ステップＳ１７にて登録した指摘情報である。すなわち、ステップＳ２７では、指摘結果ＤＢ３４に格納されている指摘情報に対して、目視レビュー者から取得した目視レビュー結果を追加登録する。
【００４４】
図８は、レビュー済み範囲情報ＤＢ３５に登録するレビュー実施済み範囲の情報の一例を示す図である。目視レビュー情報管理部２４は、対象ファイル（対象ソースコード）、レビュー開始行、レビュー終了行、レビュー日およびレビュー者、の各情報を関連付けた情報を１件のレビュー済み範囲レコードとしてレビュー済み範囲情報ＤＢ３５へ登録する。以下の説明では、レビュー済み範囲情報ＤＢ３５に登録されているすべてのレビュー済み範囲レコードを総称してレビュー済み範囲情報と呼ぶ。
【００４５】
図９は、指摘結果ＤＢ３４に登録する指摘情報の一例を示す図である。目視レビュー情報管理部２４は、管理番号（No.）、ファイル名（ファイル）、指摘箇所（対象行）、記入日、記入者、警告レベル、問題点の指摘内容（内容）、確認日、確認者、修正の必要性（修正有無）、確認済フラグおよび理由を関連付けた情報を１件の指摘結果レコードとして、指摘結果ＤＢ３４へ登録する。ここで、「記入日」は自動解析が実行された日または目視レビューが実施された日を示す。「記入者」は目視レビューを実施した者を示し、自動解析により指摘された場合は“自動”となる。なお、確認日よりも右側に位置する情報は、その後の作業において開発者などからソースコードの修正が不要である理由を取得した場合やソースコードが修正された場合に更新するものである。また、以下の説明では、指摘結果ＤＢ３４に登録されているすべての指摘結果レコードを総称して指摘情報と呼ぶ。
【００４６】
図３の説明に戻り、手順＃２に続いて、開発者は、手順＃２にて更新された指摘情報を確認し、その情報を構成する指摘結果レコードに基づいて、対応するソースコードの修正が必要かどうかを判断する。そして、修正不要と判断した場合、その理由を指摘結果レコードに追加登録する（手順＃３）。一方修正が必要と判断した場合には、ソースコードを修正する（手順＃４）。
【００４７】
図１０は、上記手順＃３における動作を具体的に示した図である。すなわち、上記手順＃３では、開発者から指摘結果の取得指示を受けた場合（ステップＳ３１）、指摘結果表示確認結果取得部１２は、その旨を指摘結果管理部２３へ通知する。指摘結果管理部２３は、通知内容に従い、指摘結果ＤＢ３４から指摘情報を読み出し、読み出した情報を指摘結果表示確認結果取得部１２へ渡す（ステップＳ３２）。指摘結果表示確認結果取得部１２は、受け取った指摘情報を表示部（図示せず）へ表示させる（ステップＳ３３）。指摘結果を表示するにあたっては、たとえば、指摘情報に含まれる指摘結果レコードをリスト化して同一画面上に表示する。
【００４８】
その後、指摘結果を構成する指摘結果レコードの中の１件を開発者が選択し、その取得指示を受けた場合（ステップＳ３４）、指摘結果表示確認結果取得部１２は、その旨をソースコード管理部２１に通知する。ソースコード管理部２１は、通知内容（上記取得指示）に対応するソースコードをソースコードＤＢ３１から読み出し、それを指摘結果表示確認結果取得部１２に渡す（ステップＳ３５）。
【００４９】
指摘結果表示確認結果取得部１２は、ソースコードＤＢ３１から受け取ったソースコードを表示する（ステップＳ３６）。このとき、上記開発者に選択された指摘結果レコードが示す指摘箇所が一見して把握できるように、ソースコードの該当箇所にマーキング（文字の色を他の部分と違う色に変更する、下線をつける、など）を行う。以下、ステップＳ３６で表示する画面を「指摘箇所表示画面」と呼ぶ。
【００５０】
その後、指摘箇所表示画面内の指摘箇所について、修正不要と開発者に判断された場合（ステップＳ３７，Ｎｏ）、指摘結果表示確認結果取得部１２は、修正が不要である理由（理由を示すテキスト情報）を開発者から取得し、それを指摘結果管理部２３へ渡す（ステップＳ３８）。指摘結果管理部２３は、指摘結果表示確認結果取得部１２から受け取った情報に基づいて、指摘結果ＤＢ３４（図９参照）を更新する。具体的には、受け取った情報（理由を示すテキスト情報）を、上記開発者に選択された指摘結果レコード内の「理由」に登録する。すなわち、ソースコードが修正不要である理由を指摘結果レコードに追加登録する（ステップＳ３９）。さらに、当該指摘結果レコード内の「確認済みフラグ」を更新（“確認済み”を示す状態に設定）する（ステップＳ４０）。
【００５１】
図１１は、上記手順＃４における動作を具体的に示した図である。すなわち、指摘箇所表示画面内の指摘箇所について、修正が必要な場合（手順＃３のステップＳ３７で修正が必要と判断した場合）、まず、開発者がフロントエンド部１０のソースコードエディタ部１１を利用してソースコードの修正作業を行う（ステップＳ４１）。そして、ソースコードの更新登録指示を開発者から受けた場合、ソースコードエディタ部１１は、修正されたソースコードをソースコード管理部２１へ出力し、さらに、当該ソースコードを記憶部３０内のソースコードＤＢ３１へ更新登録するように指示を行う（ステップＳ４２）。
【００５２】
ソースコードエディタ部１１から更新登録指示を受けたソースコード管理部２１は、受け取ったソースコード（上記の更新されたソースコード）を登録することによりソースコードＤＢ３１を更新する（ステップＳ４３）。また、ソースコード履歴情報ＤＢ３２を更新する（ステップＳ４４）。具体的には、それまでソースコードＤＢ３１へ格納しておいた、上記更新されたソースコードに対応するソースコードを古いソースコードとしてソースコード履歴情報ＤＢ３２へ格納する。さらに、ソースコードの更新登録を行った旨をソースコード解析部２２へ通知する。
【００５３】
ソースコードの更新登録を行った旨の通知を受けた場合、ソースコード解析部２２は、解析ルールＤＢ３３から解析ルールを読み込む（ステップＳ４５）。次に、ソースコードＤＢ３１から処理対象のソースコード（上記更新登録されたソースコード）を読み込み（ステップＳ４６）、また、ソースコード履歴情報ＤＢ３２から比較対象のソースコード（処理対象ソースコードに対応する古いソースコード）を読み込む（ステップＳ４７）。
【００５４】
ソースコード解析部２２は、次に、読み出した２つのソースコード（処理対象ソースコード，比較対象ソースコード）を比較し、これらの差分を解析する（ステップＳ４８）。すなわち処理対象ソースコード内の更新箇所を特定する。更新箇所は、たとえば、コード文単位で特定する（更新されたコード文および追加されたコード文を特定する）。
【００５５】
ソースコード解析部２２は、次に、上記ステップＳ４８にて特定した処理対象ソースコード内の更新箇所を対象として、ソースコードの自動解析を行う（ステップＳ４９）。これにより、自動解析処理を必要最小限に抑えることができる。そして、自動解析を実行して得られた解析結果に基づいて指摘結果レコードを生成し、それを登録することにより指摘結果ＤＢ３４を更新する（ステップＳ５０）。
【００５６】
また、目視レビュー情報管理部２４は、上記ステップＳ４８にて特定された更新箇所の情報を取得し、さらに、上記処理対象ソースコードに対応するレビュー済み範囲情報をレビュー済み範囲情報ＤＢ３５から読み出す（ステップＳ５１）。なお、ステップＳ５１で読み出すレビュー済み範囲情報は、更新前の古いソースコードに対する目視レビュー作業にて取得したレビュー済み範囲情報である。そして、読み出したレビュー済み範囲情報（図８参照）を上記更新箇所の情報に基づいて更新する（ステップＳ５２）。たとえば、ソースコードの更新作業により行の追加や削除が行われ、それによって目視レビューが終了した範囲（レビューが終了した範囲の開始行と終了行）に変動が生じた場合、この変動に合わせて、レビュー済み範囲レコードが示すレビュー開始行とレビュー終了行を修正する。また、目視レビューが終了した範囲の途中にコードが追加された場合、目視レビューが実施されていない箇所（コードが追加された部分）の前後でレビュー済み範囲レコードを分割する。
【００５７】
そして、上記手順＃２で示した目視レビューをレビュー者が再度実行する。ただし、ソースコードを更新した後に実行する目視レビューは、ソースコードを新規作成した後に実行する場合（図５参照）と一部異なる。
【００５８】
図１２は、ソースコードを更新した後に実施する手順（以下、手順＃２ａと呼ぶ）を具体的に示した図であり、図５で示した手順＃２に対してステップＳ６１を追加したものである。このステップＳ６１はステップＳ２２に続いて実行される。ステップＳ６１では、目視レビュー情報管理部２４が、ステップＳ２２で読み込んだソースコードに対応するレビュー済み範囲情報、すなわち、更新前のソースコードを対象として実施された目視レビュー結果のレビュー済み範囲情報を上記ステップＳ５２で更新したもの、をレビュー済み範囲情報ＤＢ３５から読み出し、さらに、当該ソースコードに対応する指摘情報を指摘結果ＤＢ３４から読み出す。そして、読み出した情報（レビュー済み範囲情報および指摘情報）を目視レビュー結果取得部１３へ渡す。情報を受け取った目視レビュー結果取得部１３は、当該情報およびステップＳ２２で読み出したソースコードに基づいて、たとえば、図１３に示した内容を表示部（図示せず）へ表示させることにより外部に通知する。図１３に示した表示においては、目視によるレビューが終了している箇所にマーキングを行い、レビュー者に対してレビュー実施済み範囲を通知するようにしている。また、ソースコード解析部２２による自動解析にて指摘された問題点が存在する場所（行）および以前に実施した目視レビューにて指摘された問題点が存在する場所にマーキングを行う。これにより、レビュー者は、レビューが必要な範囲を容易に把握でき、また、指摘済みの問題点を認識することができるので、再確認作業の効率化が図れる。
【００５９】
手順＃２ａを実行した後は、上述した手順＃３および手順＃４を実行する。さらに、必要に応じて手順＃２ａ〜手順＃４を繰り返し実行し、すべての指摘結果レコードについて、その中の確認済みフラグがＯＮ（確認済みを示す状態）となった場合、作業者（開発者およびレビュー者）は静的解析作業を終了する。
【００６０】
なお、ソースコードを新規作成した直後に実行する上記手順＃２では、新規作成したソースコードに対応するレビュー済み範囲情報がレビュー済み範囲情報ＤＢ３５内に存在していないため、処理量の増加を抑える目的で上記ステップＳ６１を実行しないようにしている。しかしながら、手順＃２においてステップＳ６１を実行するようにしてもよい。この場合、手順＃１で実施した自動解析結果にて指摘された問題点の存在場所にマーキングがされるので、レビュー者はこれを参照しながら作業を行うことができる。
【００６１】
このように、本実施の形態において、ソースコード解析支援装置は、まずソースコードの自動解析を行い、その後、当該ソースコードの目視レビュー結果を取得した場合、自動解析結果に基づいて生成し保持しておいた指摘情報を、目視レビュー結果に基づいて更新することとした。これにより、自動解析結果と目視レビュー結果の一元的な管理が実現でき、たとえば、ソースコード度修正する開発者に対して、自動解析結果と目視レビュー結果を同一画面上にリスト化して同時に表示（通知）することができる。
【００６２】
また、目視レビューの実施済み範囲を示すレビュー実施済範囲情報を取得し、目視レビューを実施する作業者に対して、目視レビューの実施済み範囲を通知することとした。これにより、レビュー実施者はレビューが必要な範囲を容易に把握でき、レビュー漏れの防止に寄与できる。
【００６３】
また、ソースコードが更新された場合、更新されたソースコードと更新前のソースコードとの差分に基づいて、自動解析を再度実行する必要がある範囲を特定することとした。これにより、更新後のソースコードを対象とした自動解析作業を必要最小限に抑えることができる。
【００６４】
さらに、ソースコードが更新された場合、更新されたソースコードと更新前のソースコードとの差分に基づいて、レビュー実施済範囲情報を更新することとした。これにより、レビュー実施者は、目視レビューの再実施が必要な範囲を容易に把握でき、更新後のソースコードに対する目視レビューの作業量を必要最小限に抑えることができる。
【００６５】
したがって、本発明にかかるソースコード解析支援装置は、効率的なソフトウエア開発の実現に寄与できる。
【産業上の利用可能性】
【００６６】
以上のように、本発明にかかるソースコード解析支援装置は、ソフトウエア開発において、プログラムを実行させることなくソースコードの検証を行う静的解析に有用であり、特に、ソースコードを更新した後の静的解析作業の効率的な実施を支援するソースコード解析支援装置に適している。
【図面の簡単な説明】
【００６７】
【図１】本発明にかかるソースコード解析装置の構成例を示す図である。
【図２】本発明にかかるソースコード解析支援装置を利用したソフトウエア開発手順の概要を示す図である。
【図３】ソースコード解析支援装置を利用したソフトウエア開発手順の一例を示す図である。
【図４】ソースコード解析支援装置によるソースコード自動解析動作の一例を示すフローチャートである。
【図５】ソースコード解析支援装置による目視レビュー結果取得動作の一例を示すフローチャートである。
【図６】ソースコード解析支援装置が目視レビュー実施済み範囲の情報を取得する際の画面表示の一例を示す図である。
【図７】ソースコード解析支援装置が目視レビュー結果を取得する際の画面表示の一例を示す図である。
【図８】レビュー済み範囲情報ＤＢに登録するレビュー済み範囲情報の一例を示す図である。
【図９】指摘結果ＤＢに登録する指摘情報の一例を示す図である。
【図１０】ソースコード解析支援装置がソースコード修正不要理由を取得する動作の一例を示すフローチャートである。
【図１１】ソースコード解析支援装置が更新されたソースコードを取得した場合の動作の一例を示すフローチャートである。
【図１２】ソースコード解析支援装置による目視レビュー結果取得動作の一例を示すフローチャートである。
【図１３】目視レビュー実行時に表示する画面表示の一例を示す図である。
【符号の説明】
【００６８】
１０  フロントエンド部
１１  ソースコードエディタ部
１２  指摘結果表示確認結果取得部
１３  目視レビュー結果取得部
２０  情報処理部
２１  ソースコード管理部
２２  ソースコード解析部
２３  指摘結果管理部
２４  目視レビュー情報管理部
３０  記憶部
３１  ソースコードＤＢ（データベース）
３２  ソースコード履歴情報ＤＢ
３３  解析ルールＤＢ
３４  指摘結果ＤＢ
３５  レビュー済み範囲情報ＤＢ
【図１】
2009146207.tif 000003
【図２】
2009146207.tif 000004
【図３】
2009146207.tif 000005
【図４】
2009146207.tif 000006
【図５】
2009146207.tif 000007
【図６】
2009146207.tif 000008
【図７】
2009146207.tif 000009
【図８】
2009146207.tif 000010
【図９】
2009146207.tif 000011
【図１０】
2009146207.tif 000012
【図１１】
2009146207.tif 000013
【図１２】
2009146207.tif 000014
【図１３】
2009146207.tif 000015