JP2009146207A - ソースコード解析支援装置 - Google Patents

ソースコード解析支援装置 Download PDF

Info

Publication number
JP2009146207A
JP2009146207A JP2007323605A JP2007323605A JP2009146207A JP 2009146207 A JP2009146207 A JP 2009146207A JP 2007323605 A JP2007323605 A JP 2007323605A JP 2007323605 A JP2007323605 A JP 2007323605A JP 2009146207 A JP2009146207 A JP 2009146207A
Authority
JP
Japan
Prior art keywords
source code
analysis
result
indication information
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2007323605A
Other languages
English (en)
Inventor
Hironori Yamashita
洋徳 山下
Hideki Takasugi
秀樹 高杉
Tomoya Nakahara
智哉 中原
Haruna Hoshino
春菜 星野
Daisuke Yokota
大介 横田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007323605A priority Critical patent/JP2009146207A/ja
Publication of JP2009146207A publication Critical patent/JP2009146207A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ソースコードの自動解析を実行して得られた解析結果と目視による解析結果を一元的に管理し、効率的なソフトウエア開発の実現に寄与するソースコード解析支援装置を得ること。
【解決手段】本発明にかかるソースコード解析支援装置は、処理対象のソースコードについて自動解析を行い、自動解析により発見した問題点を含んだ指摘情報を生成するソースコード解析部(22)と、指摘情報を記憶する指摘結果DB(34)と、目視確認結果を取得し、目視確認結果に基づいて指摘情報を更新する目視レビュー情報管理部(24)と、更新後の指摘情報に含まれるソースコードの問題点を表示する指摘結果表示確認結果取得部(12)と、を備え、ソースコード解析部(22)により発見された問題点と目視レビュー情報管理部(24)により取得された目視確認結果が示す問題点とを指摘結果DB(34)で一元的に管理する。
【選択図】 図1

Description

本発明は、ソフトウエア開発においてソースコードを解析する際の支援技術に関し、特に、ソースコードを更新した後に実施する静的解析作業の効率化を実現するソースコード解析支援装置に関する。
ソフトウエア開発では、静的解析および動的解析によりプログラムを構成するソースコードを確認(評価)する。静的解析は、プログラムを実行することなくソースコードの内容を解析ツールや作業者の目視チェックにより評価を行う方法である。また、動的解析は、プログラムを実行させて評価を行う方法である。
通常、静的解析は、動的解析を行う前の作業として実行される。すなわち、静的解析により抽出された問題点をすべて解決(ソースコードを修正)した後に動的解析が実行される。動的解析により新たな問題点が見つかった場合には、ソースコードを修正した上で再度静的解析および動的解析を実行して評価を行う。そして、ソフトウエアの開発を効率よく行うには、静的解析によりプログラムの完成度を高めた上で動的解析を行うことが重要である。すなわち、開発期間の短縮やコスト削減を実現するためには、静的解析を高効率かつ高精度に行うことが必要である。
ここで、静的解析技術を効率的に行うためのシステムとして、下記特許文献1に記載のソースプログラムのレビュー支援システムが存在する。下記特許文献1に記載されたソースプログラムのレビュー支援システムでは、効率的なレビュー(ソースコードのチェック)作業を実現するために、ソースコードの中からユーザが確認すべき項目を抽出してリスト化し、ユーザは、リストに従いソースコードのチェックを行うようにしている。また、チェックが終了した項目にはその旨を示す表示を行うことでチェック漏れが発生するのを防止している。さらに、ソースコードが更新された場合、再チェックが必要な箇所と不要な箇所とをユーザに通知することで、チェックが必要な箇所のみを再チェックできるようにしている。
特開2005−190330号公報
静的解析には、解析ツールを利用した自動解析と、開発者などの目視による手動解析が存在するが、自動解析が可能な範囲には限界があり、一方、目視による解析では規模が大きい場合にレビュー範囲も広範囲にわたってしまい、レビュー自体に多くの時間を必要とする。そのため、大規模化・複雑化が進んでいるソフトウエアを対象とした場合、効率的な解析作業を実現するためには、自動解析と手動解析を組み合わせて実施することが望ましい。たとえば、自動解析が可能な範囲については自動解析を行い、残りの範囲については目視による解析を行う。
しかしながら、上記特許文献1に記載のソースプログラムのレビュー支援システムは、チェック項目を自動的に抽出するだけであり、解析作業自体はユーザが手動で行う必要がある。すなわち、自動解析が可能な部分についても手動で行うため、非効率的である、という解決すべき課題が存在する。
また、単に自動解析と手動解析を組み合わせた場合には、たとえば、以下のような解決すべき課題が存在する。
(1)手動解析では、どこまでレビューしたかがわからないため、レビュー漏れが発生する可能性がある。
(2)ソースコードを修正した場合、その後の自動解析実施範囲および手動解析実施範囲が不明確になり、未修正箇所を含めて再度確認する必要がある。
(3)自動解析結果と手動解析結果を一元的に管理することができないため、レビューを効率的かつもれなく実施するのが難しい。
本発明は、上記に鑑みてなされたものであって、ソースコードの自動解析を実行して得られた解析結果と目視による解析結果の一元的な管理を実現し、かつ手動解析におけるレビュー漏れを防止しつつ、ソースコードが更新された場合には、自動解析による再確認処理および手動解析による再確認処理を必要最小限に抑え、効率的なソフトウエア開発を実現するソースコード解析支援装置を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、処理対象のソースコードについて、所定のルールに従った自動解析を行い、当該自動解析により発見した問題点を含んだ指摘情報を生成する指摘情報生成手段と、前記指摘情報を記憶する指摘情報記憶手段と、ユーザが目視により前記ソースコードを確認して発見した問題点の情報である目視確認結果を取得し、当該目視確認結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新する指摘情報更新手段と、前記指摘情報記憶手段に保持されている更新後の指摘情報に含まれるソースコードの問題点を表示する問題点表示手段と、を備え、前記指摘情報生成手段により発見された問題点と前記指摘情報更新手段により取得された目視確認結果が示す問題点とを前記指摘情報記憶手段で一元的に管理することを特徴とする。
この発明によれば、ソースコード解析支援装置は、まずソースコードの自動解析を行い、その後、当該ソースコードの目視レビュー結果を取得した場合、自動解析結果に基づいて生成し保持しておいた指摘情報を、取得した目視レビュー結果に基づいて更新することとしたので、自動解析結果と目視レビュー結果の一元的な管理が実現でき、たとえば、ソースコードを修正する開発者に対して、自動解析にて指摘された問題点と目視レビューにて指摘された問題点を同一画面上にリスト化して通知することができる、という効果を奏する。
以下に、本発明にかかるソースコード解析支援装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかるソースコード解析装置の構成例を示す図である。このソースコード解析装置は、ユーザからの情報取得やユーザへの情報提供を行うフロントエンド部10と、ソースコードの自動解析結果等の各種情報を管理する情報処理部20と、各種情報を記憶する記憶部30と、により構成される。なお、これらは、ネットワークなどを介して接続された構成としてもよい。
フロントエンド部10は、ソースコードエディタ部11、指摘結果表示確認結果取得部12および目視レビュー結果取得部13を含む。
情報処理部20は、ソースコード管理部21、ソースコード解析部22、指摘結果管理部23および目視レビュー情報管理部24を含む。
記憶部30は、ソースコードDB(データベース)31、ソースコード履歴情報DB32、解析ルールDB33、指摘結果DB34およびレビュー済み範囲情報DB35を含む。
なお、指摘情報生成手段はソースコード解析部22により構成され、指摘情報更新手段は指摘結果管理部23により構成され、目視チェック実施範囲管理手段は目視レビュー情報管理部24により構成される。また、問題点表示手段は指摘結果表示確認結果取得部12により構成され、ソースコード表示手段は目視レビュー結果取得部13により構成される。また、指摘情報記憶手段は指摘結果DB34により構成される。
フロントエンド部10のソースコードエディタ部11は、図示していないキーボードやマウスなどの入力部を介してユーザから情報を取得し、取得した情報に基づいてソースコードの作成や修正を行う。指摘結果表示確認結果取得部12は、ソースコードの自動解析を実施して得られる指摘結果および目視レビューを実施したユーザ(レビュー者)から取得した指摘結果を表示部(図示せず)へ表示させる。また、指摘結果に含まれる指摘箇所のいずれか一つについて、その個別確認が終了したことを示す情報をユーザから取得した場合、取得した情報を指摘結果管理部23に渡す。目視レビュー結果取得部13は、ユーザにより実施された目視レビューの結果を取得する。
情報処理部20のソースコード管理部21は、最新のソースコードおよび古いソースコードを管理する。また、更新されたソースコード取得した場合、それをソースコードDB31へ格納するとともに、それまでソースコードDB31へ格納しておいた、上記更新されたソースコードに対応するソースコードを古いソースコードとしてソースコード履歴情報DB32へ格納する。
ソースコード解析部22は、ソースコードの自動解析を行う。自動解析処理では既存の静的解析技術等を用い、処理対象としたソースコードのスタイルチェックや、規約チェック等を実施する。また、ソースコード履歴情報DB32に処理対象ソースコードの古いソースコードがある場合には、これらの差分を算出し、算出した差分により処理対象ソースコード内の自動解析を実施する範囲を特定し、特定した部分のみについてのみ自動解析を行う。
指摘結果管理部23は、指摘結果の表示に必要な情報を指摘結果DB34から取得する。また、指摘結果に含まれる特定の項目についての個別確認が終了した旨を示す情報を指摘結果表示確認結果取得部12から受け取った場合、指摘結果DB34に格納された指摘結果内の、当該特定項目についての確認済みフラグを設定する。
目視レビュー情報管理部24は、目視レビューの実施済み範囲の情報をレビュー済み範囲情報DB35に格納する。また、目視レビューのレビュー結果(指摘事項)を目視レビュー結果取得部13から受け取った場合、受け取った情報に基づいて、指摘結果DB34に格納された指摘結果を更新する。
記憶部30のソースコードDB31は、最新のソースコードを保持し、ソースコード情報履歴DB32は、古いソースコードを保持する。解析ルールDB33は、自動解析にて使用する解析ルールを保持する。
指摘結果DB34は、自動解析結果や目視レビュー結果と、それらが示す指摘事項に対する対応結果についての情報を保持する。レビュー済み範囲情報DB35は、目視レビューの実施済み範囲を含むレビュー範囲管理情報を保持する。
図2は、本発明にかかるソースコード解析支援装置を利用したソフトウエア開発手順の概要を示す図である。
本発明にかかるソースコード解析支援装置を利用してソフトウエアの開発を行う場合、図2に示したように、ソフトウエアの開発者は、ソースコードの作成や修正を行い、その作業が終了した場合、作業により得られたソースコードをソースコード解析支援装置のへ登録(修正した場合には更新登録)を行う(ステップS1)。
ステップS1が実行され、ソースコードが登録されると、ソースコード解析支援装置は、そのソースコードを対象とした自動解析を実行する(ステップS2)。また、当該ソースコードを対象としてユーザ(開発者または他の作業者)が目視レビューを実施した結果を取得する(ステップS3)。
次に、ソースコード解析支援装置は、上記ステップS2で自動解析を実行して得られた解析結果および上記ステップS3で取得した目視レビュー結果についてのコメントを、必要に応じてユーザから取得する(ステップS4)。
その後、開発者は、上記解析結果や目視レビュー結果を参照しながらソースコードの修正を行う。そして修正作業が終了すると、その結果得られたソースコードの更新登録を行う。すなわち、上述したステップS1を再度実行する。さらに、更新登録されたソースコードを対象として、ソースコード解析支援装置が上記ステップS2〜S4の処理を実行する。以下、対象ソースコードの修正が不要となるまで(指摘された問題点をすべて解決するまで)上記ステップS1〜S4を繰り返す。
つづいて、ソースコード解析支援装置を利用して行うソフトウエア開発の手順について、図面を参照しながら詳細に説明する。
図3は、ソースコード解析支援装置を利用したソフトウエア開発手順の一例を示す図であり、ソフトウエアの開発者による作業、ソースコード解析支援装置が実行する処理および目視による解析(レビュー)を行うレビュー者の作業、の関係を時系列的に示したフローチャートである。
図3に示したように、ソフトウエア開発では、まず、開発者がソースコードを新規に作成する。次に、新規作成されたソースコードを受け取ったソースコード解析支援装置が、ソースコードに対して自動解析を実行し、解析結果をデータベースへ登録する(手順#1)。
図4は、上記手順#1における動作を具体的に示した図である。すなわち、手順#1では、まず、開発者がフロントエンド部10のソースコードエディタ部11(図1参照)を利用してソースコードを新規に作成する(ステップS11)。そして、ソースコードの登録指示を開発者から受けた場合、ソースコードエディタ部11は、開発者により作成されたソースコードを情報処理部20のソースコード管理部21へ出力し、さらに、当該ソースコードを記憶部30内のソースコードDB31へ登録するように指示を行う(ステップS12)。
ソースコードエディタ部11から登録指示を受けたソースコード管理部21は、受け取ったソースコード(上記の新規に作成されたソースコード)をソースコードDB31へ登録する(ステップS13)。また、新規に作成されたソースコードの登録を行った旨をソースコード解析部22へ通知する。
新規作成されたソースコードをソースコードDB31に登録した旨の通知を受けた場合、ソースコード解析部22は、使用しているプログラミング言語の種類などに応じて選択した既存の静的解析技術などを用い、ソースコードのスタイルチェックや規約チェック等を実施することにより、ソースコードの自動解析を行う。より詳細には、自動解析処理において、ソースコード解析部22は、解析ルールDB33から解析ルールを読み込み(ステップS14)、さらに、ソースコードDB31から処理対象のソースコード(上記新規作成されたソースコード)を読み込む(ステップS15)。そして、ステップS14で読み込んだ解析ルールに従い、ステップS15で読み込んだソースコードの自動解析を行う(ステップS16)。最後に、ソースコード解析部22は、自動解析を実行して発見した問題点の情報を含んだ指摘情報を生成し、生成した指摘情報を指摘結果DB34へ登録する(ステップS17)。なお、指摘情報の詳細については後述する。
図3の説明に戻り、手順#1に続いて、レビュー者(この例では、開発者と異なる他の作業者とする)は、手順#1で新規作成および自動解析が行われたソースコードを対象として、目視によるレビュー(ソースコードの目視チェック)を行い、ソースコード解析支援装置は、目視レビューが行われた範囲(レビュー実施済み範囲)の情報およびレビュー結果を取得する(手順#2)。
図5は、上記手順#2における動作を具体的に示した図である。すなわち、上記手順#2では、まず、作業者(レビュー者)からレビュー対象ソースコード(レビューを行うソースコード)の情報を取得すると、目視レビュー結果取得部13は、レビュー対象ソースコードをソースコードDB31から取得するようにソースコード管理部21へ依頼する。ソースコード管理部21は、依頼されたソースコード(レビュー対象ソースコード)をソースコードDB31から読み出し、目視レビュー結果取得部13へ渡す(ステップS21,S22)。そして、目視レビュー結果取得部13は、受け取ったソースコードを表示部(図示せず)へ表示させる。なお、作業者から複数のレビュー対象ソースコードを指定された場合、すべてのレビュー対象ソースコードを取得する。表示を行うにあたっては、たとえば、各ソースコードの表示画面を重ねて表示する。
また、目視レビュー結果取得部13は、レビュー対象ソースコードを自動解析結果に基づいて絞り込むようにしてもよい。たとえば、複数のソースコードがレビュー対象として指定された場合、その中の所定数のソースコードを、自動解析による指摘件数が多いものから順番に選択し、取得する。また、自動解析時にメトリクス情報(複雑度やネストの深さなど)を算出した場合、メトリクス情報に基づいてレビュー対象として選択可能なソースコードを絞り込むようにしてもよい。
次に、レビュー者は、表示されたソースコードを目視により確認し(目視レビューを行い)、一方、ソースコード解析支援装置は、目視による確認結果の情報を取得する。すなわち、目視レビュー結果取得部13は、確認が行われた範囲を示すレビュー済み範囲情報を取得し(ステップS23)、さらに、レビュー指摘結果すなわち目視レビュー結果(修正が必要と判断した部分(問題点)についての情報)を取得する(ステップS24)。
ここで、ステップS23でレビュー済み範囲情報を取得するにあたって、目視レビュー結果取得部13は、たとえば、図6に示したような表示を行い、実施範囲(開始行(開始位置)と終了行(終了位置))をレビュー者に入力させる。また、ステップS24で目視によるレビュー結果を取得するにあたって、目視レビュー結果取得部13は、たとえば、図7に示したような表示を行い、対象行(修正が必要な場所),警告レベル,内容(問題点),記入者(レビュー者),記入日などをレビュー結果として、レビュー者に入力させる。
その後、目視によるレビュー作業が終了し、レビュー者からレビュー結果の登録指示情報を取得した場合、目視レビュー結果取得部13は、上記ステップS23およびS24を実行して取得したレビュー実施済み範囲の情報および目視レビュー結果を目視レビュー情報管理部24へ出力し、さらに、当該レビュー実施済み範囲の情報をレビュー済み範囲情報DB35へ、当該目視レビュー結果を指摘結果DB34へ登録するように指示を行う(ステップS25)。
目視レビュー結果取得部13から登録指示を受けた目視レビュー情報管理部24は、受け取ったレビュー実施済み範囲の情報をレビュー済み範囲情報DB35へ登録し(ステップS26)、さらに、受け取った目視レビュー結果に基づいて、指摘結果DB34に登録されている指摘情報を更新する(ステップS27)。なお、更新する指摘情報は、上記ステップS17にて登録した指摘情報である。すなわち、ステップS27では、指摘結果DB34に格納されている指摘情報に対して、目視レビュー者から取得した目視レビュー結果を追加登録する。
図8は、レビュー済み範囲情報DB35に登録するレビュー実施済み範囲の情報の一例を示す図である。目視レビュー情報管理部24は、対象ファイル(対象ソースコード)、レビュー開始行、レビュー終了行、レビュー日およびレビュー者、の各情報を関連付けた情報を1件のレビュー済み範囲レコードとしてレビュー済み範囲情報DB35へ登録する。以下の説明では、レビュー済み範囲情報DB35に登録されているすべてのレビュー済み範囲レコードを総称してレビュー済み範囲情報と呼ぶ。
図9は、指摘結果DB34に登録する指摘情報の一例を示す図である。目視レビュー情報管理部24は、管理番号(No.)、ファイル名(ファイル)、指摘箇所(対象行)、記入日、記入者、警告レベル、問題点の指摘内容(内容)、確認日、確認者、修正の必要性(修正有無)、確認済フラグおよび理由を関連付けた情報を1件の指摘結果レコードとして、指摘結果DB34へ登録する。ここで、「記入日」は自動解析が実行された日または目視レビューが実施された日を示す。「記入者」は目視レビューを実施した者を示し、自動解析により指摘された場合は“自動”となる。なお、確認日よりも右側に位置する情報は、その後の作業において開発者などからソースコードの修正が不要である理由を取得した場合やソースコードが修正された場合に更新するものである。また、以下の説明では、指摘結果DB34に登録されているすべての指摘結果レコードを総称して指摘情報と呼ぶ。
図3の説明に戻り、手順#2に続いて、開発者は、手順#2にて更新された指摘情報を確認し、その情報を構成する指摘結果レコードに基づいて、対応するソースコードの修正が必要かどうかを判断する。そして、修正不要と判断した場合、その理由を指摘結果レコードに追加登録する(手順#3)。一方修正が必要と判断した場合には、ソースコードを修正する(手順#4)。
図10は、上記手順#3における動作を具体的に示した図である。すなわち、上記手順#3では、開発者から指摘結果の取得指示を受けた場合(ステップS31)、指摘結果表示確認結果取得部12は、その旨を指摘結果管理部23へ通知する。指摘結果管理部23は、通知内容に従い、指摘結果DB34から指摘情報を読み出し、読み出した情報を指摘結果表示確認結果取得部12へ渡す(ステップS32)。指摘結果表示確認結果取得部12は、受け取った指摘情報を表示部(図示せず)へ表示させる(ステップS33)。指摘結果を表示するにあたっては、たとえば、指摘情報に含まれる指摘結果レコードをリスト化して同一画面上に表示する。
その後、指摘結果を構成する指摘結果レコードの中の1件を開発者が選択し、その取得指示を受けた場合(ステップS34)、指摘結果表示確認結果取得部12は、その旨をソースコード管理部21に通知する。ソースコード管理部21は、通知内容(上記取得指示)に対応するソースコードをソースコードDB31から読み出し、それを指摘結果表示確認結果取得部12に渡す(ステップS35)。
指摘結果表示確認結果取得部12は、ソースコードDB31から受け取ったソースコードを表示する(ステップS36)。このとき、上記開発者に選択された指摘結果レコードが示す指摘箇所が一見して把握できるように、ソースコードの該当箇所にマーキング(文字の色を他の部分と違う色に変更する、下線をつける、など)を行う。以下、ステップS36で表示する画面を「指摘箇所表示画面」と呼ぶ。
その後、指摘箇所表示画面内の指摘箇所について、修正不要と開発者に判断された場合(ステップS37,No)、指摘結果表示確認結果取得部12は、修正が不要である理由(理由を示すテキスト情報)を開発者から取得し、それを指摘結果管理部23へ渡す(ステップS38)。指摘結果管理部23は、指摘結果表示確認結果取得部12から受け取った情報に基づいて、指摘結果DB34(図9参照)を更新する。具体的には、受け取った情報(理由を示すテキスト情報)を、上記開発者に選択された指摘結果レコード内の「理由」に登録する。すなわち、ソースコードが修正不要である理由を指摘結果レコードに追加登録する(ステップS39)。さらに、当該指摘結果レコード内の「確認済みフラグ」を更新(“確認済み”を示す状態に設定)する(ステップS40)。
図11は、上記手順#4における動作を具体的に示した図である。すなわち、指摘箇所表示画面内の指摘箇所について、修正が必要な場合(手順#3のステップS37で修正が必要と判断した場合)、まず、開発者がフロントエンド部10のソースコードエディタ部11を利用してソースコードの修正作業を行う(ステップS41)。そして、ソースコードの更新登録指示を開発者から受けた場合、ソースコードエディタ部11は、修正されたソースコードをソースコード管理部21へ出力し、さらに、当該ソースコードを記憶部30内のソースコードDB31へ更新登録するように指示を行う(ステップS42)。
ソースコードエディタ部11から更新登録指示を受けたソースコード管理部21は、受け取ったソースコード(上記の更新されたソースコード)を登録することによりソースコードDB31を更新する(ステップS43)。また、ソースコード履歴情報DB32を更新する(ステップS44)。具体的には、それまでソースコードDB31へ格納しておいた、上記更新されたソースコードに対応するソースコードを古いソースコードとしてソースコード履歴情報DB32へ格納する。さらに、ソースコードの更新登録を行った旨をソースコード解析部22へ通知する。
ソースコードの更新登録を行った旨の通知を受けた場合、ソースコード解析部22は、解析ルールDB33から解析ルールを読み込む(ステップS45)。次に、ソースコードDB31から処理対象のソースコード(上記更新登録されたソースコード)を読み込み(ステップS46)、また、ソースコード履歴情報DB32から比較対象のソースコード(処理対象ソースコードに対応する古いソースコード)を読み込む(ステップS47)。
ソースコード解析部22は、次に、読み出した2つのソースコード(処理対象ソースコード,比較対象ソースコード)を比較し、これらの差分を解析する(ステップS48)。すなわち処理対象ソースコード内の更新箇所を特定する。更新箇所は、たとえば、コード文単位で特定する(更新されたコード文および追加されたコード文を特定する)。
ソースコード解析部22は、次に、上記ステップS48にて特定した処理対象ソースコード内の更新箇所を対象として、ソースコードの自動解析を行う(ステップS49)。これにより、自動解析処理を必要最小限に抑えることができる。そして、自動解析を実行して得られた解析結果に基づいて指摘結果レコードを生成し、それを登録することにより指摘結果DB34を更新する(ステップS50)。
また、目視レビュー情報管理部24は、上記ステップS48にて特定された更新箇所の情報を取得し、さらに、上記処理対象ソースコードに対応するレビュー済み範囲情報をレビュー済み範囲情報DB35から読み出す(ステップS51)。なお、ステップS51で読み出すレビュー済み範囲情報は、更新前の古いソースコードに対する目視レビュー作業にて取得したレビュー済み範囲情報である。そして、読み出したレビュー済み範囲情報(図8参照)を上記更新箇所の情報に基づいて更新する(ステップS52)。たとえば、ソースコードの更新作業により行の追加や削除が行われ、それによって目視レビューが終了した範囲(レビューが終了した範囲の開始行と終了行)に変動が生じた場合、この変動に合わせて、レビュー済み範囲レコードが示すレビュー開始行とレビュー終了行を修正する。また、目視レビューが終了した範囲の途中にコードが追加された場合、目視レビューが実施されていない箇所(コードが追加された部分)の前後でレビュー済み範囲レコードを分割する。
そして、上記手順#2で示した目視レビューをレビュー者が再度実行する。ただし、ソースコードを更新した後に実行する目視レビューは、ソースコードを新規作成した後に実行する場合(図5参照)と一部異なる。
図12は、ソースコードを更新した後に実施する手順(以下、手順#2aと呼ぶ)を具体的に示した図であり、図5で示した手順#2に対してステップS61を追加したものである。このステップS61はステップS22に続いて実行される。ステップS61では、目視レビュー情報管理部24が、ステップS22で読み込んだソースコードに対応するレビュー済み範囲情報、すなわち、更新前のソースコードを対象として実施された目視レビュー結果のレビュー済み範囲情報を上記ステップS52で更新したもの、をレビュー済み範囲情報DB35から読み出し、さらに、当該ソースコードに対応する指摘情報を指摘結果DB34から読み出す。そして、読み出した情報(レビュー済み範囲情報および指摘情報)を目視レビュー結果取得部13へ渡す。情報を受け取った目視レビュー結果取得部13は、当該情報およびステップS22で読み出したソースコードに基づいて、たとえば、図13に示した内容を表示部(図示せず)へ表示させることにより外部に通知する。図13に示した表示においては、目視によるレビューが終了している箇所にマーキングを行い、レビュー者に対してレビュー実施済み範囲を通知するようにしている。また、ソースコード解析部22による自動解析にて指摘された問題点が存在する場所(行)および以前に実施した目視レビューにて指摘された問題点が存在する場所にマーキングを行う。これにより、レビュー者は、レビューが必要な範囲を容易に把握でき、また、指摘済みの問題点を認識することができるので、再確認作業の効率化が図れる。
手順#2aを実行した後は、上述した手順#3および手順#4を実行する。さらに、必要に応じて手順#2a〜手順#4を繰り返し実行し、すべての指摘結果レコードについて、その中の確認済みフラグがON(確認済みを示す状態)となった場合、作業者(開発者およびレビュー者)は静的解析作業を終了する。
なお、ソースコードを新規作成した直後に実行する上記手順#2では、新規作成したソースコードに対応するレビュー済み範囲情報がレビュー済み範囲情報DB35内に存在していないため、処理量の増加を抑える目的で上記ステップS61を実行しないようにしている。しかしながら、手順#2においてステップS61を実行するようにしてもよい。この場合、手順#1で実施した自動解析結果にて指摘された問題点の存在場所にマーキングがされるので、レビュー者はこれを参照しながら作業を行うことができる。
このように、本実施の形態において、ソースコード解析支援装置は、まずソースコードの自動解析を行い、その後、当該ソースコードの目視レビュー結果を取得した場合、自動解析結果に基づいて生成し保持しておいた指摘情報を、目視レビュー結果に基づいて更新することとした。これにより、自動解析結果と目視レビュー結果の一元的な管理が実現でき、たとえば、ソースコード度修正する開発者に対して、自動解析結果と目視レビュー結果を同一画面上にリスト化して同時に表示(通知)することができる。
また、目視レビューの実施済み範囲を示すレビュー実施済範囲情報を取得し、目視レビューを実施する作業者に対して、目視レビューの実施済み範囲を通知することとした。これにより、レビュー実施者はレビューが必要な範囲を容易に把握でき、レビュー漏れの防止に寄与できる。
また、ソースコードが更新された場合、更新されたソースコードと更新前のソースコードとの差分に基づいて、自動解析を再度実行する必要がある範囲を特定することとした。これにより、更新後のソースコードを対象とした自動解析作業を必要最小限に抑えることができる。
さらに、ソースコードが更新された場合、更新されたソースコードと更新前のソースコードとの差分に基づいて、レビュー実施済範囲情報を更新することとした。これにより、レビュー実施者は、目視レビューの再実施が必要な範囲を容易に把握でき、更新後のソースコードに対する目視レビューの作業量を必要最小限に抑えることができる。
したがって、本発明にかかるソースコード解析支援装置は、効率的なソフトウエア開発の実現に寄与できる。
以上のように、本発明にかかるソースコード解析支援装置は、ソフトウエア開発において、プログラムを実行させることなくソースコードの検証を行う静的解析に有用であり、特に、ソースコードを更新した後の静的解析作業の効率的な実施を支援するソースコード解析支援装置に適している。
本発明にかかるソースコード解析装置の構成例を示す図である。 本発明にかかるソースコード解析支援装置を利用したソフトウエア開発手順の概要を示す図である。 ソースコード解析支援装置を利用したソフトウエア開発手順の一例を示す図である。 ソースコード解析支援装置によるソースコード自動解析動作の一例を示すフローチャートである。 ソースコード解析支援装置による目視レビュー結果取得動作の一例を示すフローチャートである。 ソースコード解析支援装置が目視レビュー実施済み範囲の情報を取得する際の画面表示の一例を示す図である。 ソースコード解析支援装置が目視レビュー結果を取得する際の画面表示の一例を示す図である。 レビュー済み範囲情報DBに登録するレビュー済み範囲情報の一例を示す図である。 指摘結果DBに登録する指摘情報の一例を示す図である。 ソースコード解析支援装置がソースコード修正不要理由を取得する動作の一例を示すフローチャートである。 ソースコード解析支援装置が更新されたソースコードを取得した場合の動作の一例を示すフローチャートである。 ソースコード解析支援装置による目視レビュー結果取得動作の一例を示すフローチャートである。 目視レビュー実行時に表示する画面表示の一例を示す図である。
符号の説明
10 フロントエンド部
11 ソースコードエディタ部
12 指摘結果表示確認結果取得部
13 目視レビュー結果取得部
20 情報処理部
21 ソースコード管理部
22 ソースコード解析部
23 指摘結果管理部
24 目視レビュー情報管理部
30 記憶部
31 ソースコードDB(データベース)
32 ソースコード履歴情報DB
33 解析ルールDB
34 指摘結果DB
35 レビュー済み範囲情報DB

Claims (4)

  1. 処理対象のソースコードについて、所定のルールに従った自動解析を行い、当該自動解析により発見した問題点を含んだ指摘情報を生成する指摘情報生成手段と、
    前記指摘情報を記憶する指摘情報記憶手段と、
    ユーザが目視により前記ソースコードを確認して発見した問題点の情報である目視確認結果を取得し、当該目視確認結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新する指摘情報更新手段と、
    前記指摘情報記憶手段に保持されている更新後の指摘情報に含まれるソースコードの問題点を表示する問題点表示手段と、
    を備え、
    前記指摘情報生成手段により発見された問題点と前記指摘情報更新手段により取得された目視確認結果が示す問題点とを前記指摘情報記憶手段で一元的に管理することを特徴とするソースコード解析支援装置。
  2. 前記ソースコードが更新された場合、
    前記指摘情報生成手段は、更新前のソースコードと更新後のソースコードの差分に基づいて、当該更新後のソースコードから再度の自動解析が必要なコード文を特定し、当該特定したコード文を対象として自動解析を行い、さらに、当該自動解析結果に基づいて前記指摘情報記憶手段に保持されている指摘情報を更新することを特徴とする請求項1に記載のソースコード解析支援装置。
  3. さらに、
    前記ユーザが前記ソースコードに対して目視確認を実施した範囲を示す実施範囲情報を取得する目視チェック実施範囲管理手段と、
    前記指摘情報記憶手段に保持されている指摘情報が示す問題点が存在する行にマーキングを行いかつ前記実施範囲情報が示す範囲にマーキングを行い、その時点で最新のソースコードを表示するソースコード表示手段と、
    を備えることを特徴とする請求項1または2に記載のソースコード解析支援装置。
  4. 前記ソースコードが更新された場合、
    前記目視チェック実施範囲管理手段は、更新前のソースコードと更新後のソースコードの差分に基づいて前記実施範囲情報を更新することを特徴とする請求項3に記載のソースコード解析支援装置。
JP2007323605A 2007-12-14 2007-12-14 ソースコード解析支援装置 Withdrawn JP2009146207A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007323605A JP2009146207A (ja) 2007-12-14 2007-12-14 ソースコード解析支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007323605A JP2009146207A (ja) 2007-12-14 2007-12-14 ソースコード解析支援装置

Publications (1)

Publication Number Publication Date
JP2009146207A true JP2009146207A (ja) 2009-07-02

Family

ID=40916736

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007323605A Withdrawn JP2009146207A (ja) 2007-12-14 2007-12-14 ソースコード解析支援装置

Country Status (1)

Country Link
JP (1) JP2009146207A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011253303A (ja) * 2010-06-01 2011-12-15 Fujitsu Ltd データ表示装置、データ表示システム及びデータ表示方法
CN103309804A (zh) * 2013-04-08 2013-09-18 中国电子科技集团公司第十研究所 自动化代码规则检查平台
JP5732597B1 (ja) * 2014-07-03 2015-06-10 株式会社日立システムズ 静的テスト支援システム
CN105938452A (zh) * 2016-04-14 2016-09-14 惠州Tcl移动通信有限公司 一种Android终端控件的定位方法及系统
CN106155882A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种Android软件动态行为分析中的路径感知方法
CN106155880A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种基于策略的自动化程序分析系统和方法
KR20200079944A (ko) * 2018-12-26 2020-07-06 (주)씽크포비엘 크라우드소싱 기반 소스코드 안정성 확보 방법

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011253303A (ja) * 2010-06-01 2011-12-15 Fujitsu Ltd データ表示装置、データ表示システム及びデータ表示方法
CN103309804A (zh) * 2013-04-08 2013-09-18 中国电子科技集团公司第十研究所 自动化代码规则检查平台
JP5732597B1 (ja) * 2014-07-03 2015-06-10 株式会社日立システムズ 静的テスト支援システム
WO2016002056A1 (ja) * 2014-07-03 2016-01-07 株式会社日立システムズ 静的テスト支援システム
CN106155882A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种Android软件动态行为分析中的路径感知方法
CN106155880A (zh) * 2015-03-27 2016-11-23 中国科学院信息工程研究所 一种基于策略的自动化程序分析系统和方法
CN106155882B (zh) * 2015-03-27 2019-04-02 中国科学院信息工程研究所 一种Android软件动态行为分析中的路径感知方法
CN106155880B (zh) * 2015-03-27 2019-07-30 中国科学院信息工程研究所 一种基于策略的自动化程序分析系统和方法
CN105938452A (zh) * 2016-04-14 2016-09-14 惠州Tcl移动通信有限公司 一种Android终端控件的定位方法及系统
KR20200079944A (ko) * 2018-12-26 2020-07-06 (주)씽크포비엘 크라우드소싱 기반 소스코드 안정성 확보 방법
KR102213959B1 (ko) * 2018-12-26 2021-02-09 (주)씽크포비엘 크라우드소싱 기반 소스코드 안정성 확보 방법

Similar Documents

Publication Publication Date Title
JP2009146207A (ja) ソースコード解析支援装置
JP4516001B2 (ja) ソフトウェアテスト管理プログラム、ソフトウェアテスト管理装置、ソフトウェアテスト管理方法
JPWO2014013558A1 (ja) 計算機、ガイド情報提供方法及び記録媒体
Plösch et al. A method for continuous code quality management using static analysis
JP2008204333A (ja) 仕様の追跡可能性を根拠とするプロジェクト管理システム及び仕様変更管理方法のプログラム
JP6310527B1 (ja) オブジェクト分析装置、オブジェクト分析方法、及びプログラム
Kim et al. Agile adoption story from NHN
JP2020027523A (ja) データ群作成支援装置、解析装置用入力データ作成装置及びデータ群作成支援方法
JP5741265B2 (ja) プログラム改善支援システム
JP6161367B2 (ja) 情報処理装置及び情報処理方法及びプログラム
JP2008102831A (ja) 情報提供装置、プログラム及び情報提供方法
JP2016024477A (ja) ソフトウェア欠陥予測装置、ソフトウェア欠陥予測方法、およびソフトウェア欠陥予測プログラム
Zhou et al. DRONE: a tool to detect and repair directive defects in Java APIs documentation
Edmunds et al. Using the Event-B formal method for disciplined agile delivery of safety-critical systems
JP2016143106A (ja) 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置
JP6546569B2 (ja) データ処理プログラム及びデータ処理方法
Muhamad et al. Visual GUI testing in continuous integration environment
US9158504B2 (en) Method and system to automatically generate use case sequence diagrams and class diagrams
JP7446789B2 (ja) 情報提供装置、情報提供方法、及びプログラム
JP6873936B2 (ja) 分析モデル構築支援装置および分析モデル構築支援方法
Anders Comprehensive and Targeted Access to and Visualization of Decision Knowledge
JP2009104336A (ja) ソフトウェア成果物管理システム、方法及びそのプログラム
WO2014045554A1 (ja) プロセスデータベース、プロセス管理装置、プロセスデータベース作成方法、プロセスデータベース検索方法、および、プログラム
Gomes et al. Mining Reuse Processes.
Abid Resolving traceability issues in product derivation for software product lines

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100709

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20110404