JP2005190330A - ソースプログラムのレビュー支援システム - Google Patents

ソースプログラムのレビュー支援システム Download PDF

Info

Publication number
JP2005190330A
JP2005190330A JP2003433107A JP2003433107A JP2005190330A JP 2005190330 A JP2005190330 A JP 2005190330A JP 2003433107 A JP2003433107 A JP 2003433107A JP 2003433107 A JP2003433107 A JP 2003433107A JP 2005190330 A JP2005190330 A JP 2005190330A
Authority
JP
Japan
Prior art keywords
source program
position information
checked
check
location
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.)
Pending
Application number
JP2003433107A
Other languages
English (en)
Inventor
Kenichi Shibata
憲壱 柴田
Shinji Hamai
信二 濱井
Chiyoko Matsumi
知代子 松見
Junji Yoshida
順二 吉田
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003433107A priority Critical patent/JP2005190330A/ja
Publication of JP2005190330A publication Critical patent/JP2005190330A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ソースプログラムのレビューにかかる手間を軽減すると共に、チェックすべき箇所のチェック漏れを防止することを目的とする。
【解決手段】抽出部100が、ソースプログラム2の中からレビューでチェックすべき箇所を抽出してその位置情報を出力する。保管部200は、チェックすべき箇所の位置情報を格納した位置フィールド220と、「未チェック状態」としたチェックフラグフィールド230からなるレコード240として保管する。チェック結果入力部800でユーザからチェック結果と位置情報を受け取ると、保管部200は該当する位置情報を含むレコード240のチェックフラグフィールド230の状態を「チェック済み状態」に変更する。
【選択図】図1

Description

本発明は、コンピュータに代表される情報処理システムを動作させる実行コードを生成するためのソースプログラムに対して、動作エラーやセキュリティ欠陥などを引き起こすことがないかどうかをチェックするレビュー作業を支援するシステムに関する。
ソフトウェアの開発工程において、プログラムが想定どおりに動作することを達成するために、ソースプログラムに対するレビュー作業が一般に行われる。このレビュー作業は、設計上の欠陥やコーディングミスを、プログラムを動作させる前の段階で発見して除去できる効果があり、プログラム品質を向上させる上で重要な作業になっている。
ソースプログラムに対するレビュー作業は、主にコンパイラが行う構文チェックや文法チェックでは検出できないエラーを発見して取り除くことを目的としている。すなわち、ソースプログラムはプログラムの文法上許される範囲で記述されているが、そのソースプログラムをコンパイルして実行した時に想定外の動作を引き起こしてしまうエラーの発生を防ぐためである。こうしたエラーの中には、コンピュータの動作を不安定にして機能不全に陥らせたり、データの漏洩や不正なコードの実行といったセキュリティ欠陥を引き起こすことがあるため、レビューを行ってこうしたエラーを取り除くことは重要である。
レビュー作業では、コンパイラで検出されないエラーを検査するために、人手によるソースプログラムの目視チェックが主体となる。このような人手によるエラー確認作業を軽減するために、コンパイラでは検出されないエラーを検出するコーディングチェック方法が、例えば、特許文献1に開示されている。
特開2002−342129号公報
ここで、レビュー作業における第1の問題として、ソースプログラムをレビューする時には、ソースプログラム全体を参照しなければならないという点がある。ソースプログラムには、コメント行など、生成される実行コードに影響を与えない部分を含むことがあり、このような場所は本来レビュー作業でチェックする必要は無い。しかしながら、それがソースプログラムのどの場所に出現するかはソースプログラム全体を参照しなければわからない。結果として、レビュー作業でチェックの対象とする箇所以外も目視するために、作業手間に多くの時間を費やしている。
上記特許文献1に記載の方法では、コンパイラでは検出されないエラーを自動検出することによって、人手による手間を軽減しようとしている。しかし、自動検出の方法や精度が問題となり、自動検出が困難なエラーについては、依然として人手でソースプログラム全体を見てチェックする必要がある。
第2の問題として、レビュー作業でチェックすべき箇所に対して、実際にチェックが行われたかどうかが分からないため、チェック漏れが生じるという点である。
第3の問題として、レビュー作業でチェックすべき箇所が分ったとしても、チェック判断をするためには前記箇所のソースプログラムを人手で参照しなければならないため、手間がかかってしまう点である。
第4の問題として、一度レビューを行ったソースプログラムが修正された時には、修正の影響がどの箇所に及ぶかが分らないので、最初からレビューし直さなければならないという点がある。ソースプログラムの修正者が影響される場所を判断してレビューする範囲を限定したとしても、人的ミスによりチェック漏れが発生する恐れがある。
特許文献1では、エラーを修正したソースプログラムが入力された場合に、修正前のソースプログラムでエラーとなった場所を調べ、その場所に対して限定的にエラー検出を行うとしている。しかし、修正の影響は、前回エラー検出された箇所以外にも波及する可能性があるため、チェックが十分であるとはいえない。
本発明は、前記の課題を解決するために、レビュー作業の手間を軽減し、レビュー対象箇所のチェック漏れを防ぎ、ソースプログラムの修正が行われた場合でも最初からレビューする必要がないことを実現するためのレビュー支援システムを提供することを目的とする。
本発明は、ソースプログラムの検査を目的とするレビュー作業を支援するレビュー支援システムであって、前記ソースプログラムの特定箇所を抽出する抽出手段と、データを保管する保管手段とを備え、前記抽出手段は、前記ソースプログラムをレビューしてチェックすべき箇所を、前記特定箇所として抽出すると共にその特定箇所の位置情報を前記保管手段に出力し、前記保管手段は、前記特定個所の位置情報を保管し、前記保管手段に保管された位置情報が示す特定箇所のソースプログラム内容を閲覧可能にしたことを特徴とするソースプログラムのレビュー支援システムである。
また、上記のレビュー支援システムにおいて、前記保管手段は、前記位置情報をソースプログラム中の位置を記録する位置フィールドと、前記位置フィールドが示す箇所のチェック結果を記録するチェックフラグフィールドを持つレコードとして保管し、前記チェックフラグフィールドは、少なくとも「未チェック状態」もしくは「チェック済み状態」のうちのいずれかの状態を取り、前記保管手段は、初期状態では前記チェックフラグフィールドを「未チェック状態」で保管し、かつ、チェック結果の入力によって、前記チェックフラグフィールドを「チェック済み状態」に変更することを特徴とするソースプログラムのレビュー支援システムである。
さらに、前記保管手段に保管された1つまたは複数の位置情報を出力するチェックリスト出力手段と、前記位置情報を選択して被選択位置情報とする位置選択手段と、ソースプログラムを出力するソースプログラム出力手段と、ユーザがチェック結果と被チェック位置情報を入力するチェック結果入力手段とを備え、前記位置選択手段は、前記被選択位置情報を前記ソースプログラム出力手段に渡し、前記ソースプログラム出力手段は、前記位置選択手段から前記被選択位置情報を受け取ると、その被選択位置情報に対応するソースプログラムの内容を出力し、前記チェック結果入力手段は、入力された前記チェック結果と被チェック位置情報を前記保管手段に渡し、前記保管手段は、前記チェック結果入力手段から前記チェック結果と被チェック位置情報を受け取ると、その被チェック位置情報を持つレコードのチェックフラグフィールドを「チェック済み状態」に変更することを特徴とするソースプログラムのレビュー支援システムである。
また、上記において、前記ソースプログラムの内容を修正したものを修正ソースプログラムとし、前記抽出手段が抽出する、前記修正ソースプログラムにおけるレビューでチェックすべき箇所の位置情報を修正ソースプログラム位置情報とし、前記保管手段がすでに保管済みの位置情報を既保管位置情報とし、前記保管手段は、前記修正ソースプログラム位置情報の入力によって前記修正ソースプログラム位置情報と前記既保管位置情報を比較し、前記保管手段は、前記修正ソースプログラム位置情報が前記既保管位置情報に含まれなければ前記修正ソースプログラム位置情報を保管し、前記保管手段は、前記修正ソースプログラム位置情報が前記既保管位置情報に含まれていれば前記修正ソースプログラム位置情報を前記抽出手段に渡し、前記抽出手段は、前記修正ソースプログラム位置情報の入力によって前記修正ソースプログラムの修正内容が前記修正ソースプログラム位置情報が示す箇所へ及ぼす影響を検査し、かつその検査結果により修正ソースプログラム位置情報と前記チェックフラグフィールドの状態を「未チェック状態」もしくは「チェック済み状態」に変更を指示するフラグ変更命令を前記保管手段に出力し、前記保管手段は、前記フラグ変更命令によって、前記修正ソースプログラムの修正内容が前記修正ソースプログラム位置情報が示す箇所へ影響がある場合に修正ソースプログラム位置情報を持つレコードのチェックフラグフィールドを「未チェック状態」に変更することを特徴とするソースプログラムのレビュー支援システムである。
さらに、本発明はソースプログラムの検査を目的とするレビュー作業を支援するレビュー支援システムであって、前記ソースプログラムの位置情報を特定位置情報として保管する保管手段と、前記保管手段に保管された1つまたは複数の前記特定位置情報を出力するチェックリスト出力手段と、前記特定位置情報を選択して被選択特定位置情報とする位置選択手段と、前記ソースプログラムの内容を出力するソースプログラム出力手段と、ユーザがチェック結果と被チェック特定位置情報を入力するチェック結果入力手段とを備え、前記保管手段は、前記特定位置情報について、前記ソースプログラム中の位置を記録する位置フィールドと前記位置フィールドが示す箇所のチェック結果を記録するチェックフラグフィールドを持つレコードとして保管し、前記チェックフラグフィールドは、少なくとも「未チェック状態」もしくは「チェック済み状態」のうちのいずれかの状態を取り、前記位置選択手段は、前記被選択特定位置情報を前記ソースプログラム出力手段に渡し、前記ソースプログラム出力手段は、前記位置選択手段から前記被選択特定位置情報を受け取ると、その被選択特定位置情報に対応するソースプログラムの内容を出力し、前記チェック結果入力手段は、前記チェック結果と前記被チェック特定位置情報を前記保管手段に渡し、前記保管手段は、前記チェック結果入力手段から前記チェック結果と前記被チェック特定位置情報を受け取ると、その被チェック特定位置情報を持つレコードのチェックフラグフィールドを「チェック済み状態」に変更することを特徴とするソースプログラムのレビュー支援システムである。
本発明のソースプログラムのレビュー支援システムは、レビューでチェックすべき箇所を抽出することによって、ソースプログラム全体を見ることなくレビューを行うことができる。また、チェックすべき箇所に対応するチェックフラグを設けることによって、チェックフラグの状態を参照してチェックの有無を知ることができ、チェック漏れを防ぐことができる。また、チェックすべき箇所のソースプログラム内容を、関連するソースプログラム内容と共に出力させることによって、ソースプログラムを参照する手間が軽減できる。
また、ソースプログラムに修正を加えた時に、新たにレビューすべき箇所が増えた場合はそれを提示し、すでにレビューすべき箇所として抽出されている箇所については、修正の影響の有無を調べ、影響があった箇所を未チェック状態とすることで、レビューで見直す箇所を知ることができ、修正ソースプログラムに対するレビューの手間を軽減することができる。
以下、本発明の実施の形態について、図面を参照して説明する。
(実施例1)
図1は、本発明の実施例1におけるソースプログラムのレビュー支援システムの構成を示すブロック図である。
この実施例1におけるレビュー支援システムは、ソースプログラムの解析を行って特定箇所を抽出する抽出部100と、前記抽出部100から渡されたデータを保管する保管部200を持っている。前記保管部200はハードディスクやメモリ等の記憶装置を用いて実現される。
前記ソースプログラムは、プログラムの処理内容を記述したステートメントと、そのステートメントを構成する識別子で構成される。この識別子は、プログラム中にその値を変化させる可変数(変数、配列変数、ポインタ変数等)と、それ以外の予約語、関数名、定数、演算子等である。また、ステートメントは、さらに別のステートメントを含む場合もある。ソースプログラムは、一つまたは複数のソースファイル2に記述される。図2で示すソースファイル21は、ソースプログラムを記載したソースファイル2の一例である。
前記抽出部100は、図3に示すようにソースプログラムが書かれたソースファイル2を読み取って、ソースプログラム中で用いられているステートメントと識別子がどのような処理を示しているかを解析して解析符号を割り当てるソース解析部110と、解析符号を使って特定のステートメントや識別子などを抽出する特定箇所抽出部120で構成されている。前記ソース解析部110は、ソースファイル2を読み取って、解析符号を割りあてたステートメント及び識別子を特定箇所抽出部120に渡す。特定箇所抽出部120は、抽出したステートメント及び識別子の位置情報(後述)を保管部200へ出力する。
前記ソース解析部110で行う処理は、コンパイラが中間コードを生成するために行う処理の一部と同等であり、ソースプログラム中のステートメントと識別子に解析符号を割り付ける。例えば、変数を表わす識別子であれば「variable」、配列変数を表わす識別子であれば「array」、ポインタ変数を表わす識別子であれば「pointer」等の解析符号を割り付ける。ステートメントに対しても、変数宣言のステートメントであれば「declaration」、関数宣言のステートメントであれば「function」、代入式のステートメントであれば「assignment−expression」、関数呼び出し行うステートメントであれば「function−expression」等の解析符号を割り付ける。
図4は、図2のソースファイル21に記述されているソースプログラムのステートメントと識別子に、解析符号を割り当てた例である。白い四角で囲まれたものをステートメント、網掛け四角で囲まれたものを識別子とし、下線付き文字列が解析符号、下線無し文字列がソースプログラムの内容を示す。
前記特定箇所抽出部120では、解析符号を使って検索を行い、該当するステートメントや識別子の抽出を行う。例えば、代入式のステートメントを抽出する場合は、「assignment−expression」を解析符号に持つステートメントを検索し、マッチしたステートメントをすべて抽出する。変数iを使った代入文を抽出する時は、「variable」を解析符号に持つ識別子iを内包する「assignment−expression」を解析符号に持つステートメントを検索し、マッチしたステートメントをすべて抽出する。
例えば、レビューでバッファオーバーフローのバグをチェックする場合、バッファオーバーフローは配列変数またはポインタ変数への代入式で起こるので、これらを満たす代入文を抽出する。すなわち、配列変数を意味する解析符号「array」またはポインタ変数を意味する解析符号「pointer」を持つ識別子を含む解析符号「assignment−expression」を持つステートメントをチェックすべき箇所として抽出する。
また、特定箇所抽出部120は、抽出したステートメントや識別子の一つ一つに対して、ソースプログラム中のどの場所に存在するかを調べて、その位置を位置情報として出力する。この位置情報はステートメントや識別子の位置がソースプログラム内で一意に決まるもので表わされている。位置情報としては、行番号、処理ステップ番号、ファイルの先頭からのオフセット値等を使う。ソースプログラム2が複数のソースファイル2で構成されていた場合、位置情報はソースファイル名を組にして表わす。例えば、ソースファイル名と行番号、ソースファイル名とファイル先頭からのオフセット値等で表わす。図5に、ソースファイル名と行番号を使って表わした場合の位置情報の一例を示す。
次に、前記保管部200は、特定箇所抽出部120から受け取った位置情報を、位置フィールド220とチェックフラグフィールド230で構成されるレコード240として保管する。位置フィールド220は、位置情報を格納するためのフィールドである。チェックフラグフィールド230は、位置フィールド220に格納されている位置情報がチェックされたかどうかを記録するためのフィールドである。チェックフラグフィールド230の状態は、「未チェック状態」または「チェック済み状態」のいずれかを取る。保管部200は、特定箇所抽出部120から位置情報が渡された時、その位置情報を格納した位置フィールド220と、「未チェック状態」としたチェックフラグフィールド230からなるレコード240として保管する。特定箇所抽出部120から渡された位置情報が複数である時は、位置情報の個数分のレコードを保管する。
また、このレビュー支援システムは、保管部200に保管された位置情報を出力するチェックリスト出力部500、位置情報を選択する位置選択部600、位置選択部600によって選択された位置情報に対応するソースプログラムの内容を出力するソースプログラム出力部700、ユーザからチェック結果と位置情報の入力を受け取るチェック結果入力部800を有している。
前記チェックリスト出力部500は、保管部200から一つまたは複数の位置情報を受け取り、これら位置情報をモニタやプリンタなどの出力装置900へ出力する。この時チェックリスト出力部500は、位置情報をユーザが認知しやすいように、所定の文字や図形を含むチェックリストに加工して出力することもある。図6(a)に示すチェックリスト510aは、保管部200から読み取った3つの位置情報(以下、位置情報P1〜P3とする)をチェックリストで出力した時の一例である。項目511a〜513aは、位置情報P1〜P3の出力例である。また、チェックフラグフィールド230の状態を合わせて受け取り、その状態をチェックリストに含めて出力してもよい。図6(b)に示すチェックリスト510bは、チェックフラグフィールド230の状態を含めて出力した場合のチェックリストの一例である。チェックボックス521は、項目511bが示す位置情報を含むレコード240のチェックフラグフィールド230の状態を示す。チェックボックス522、523も同様である。図6(b)において、□で表わされたチェックボックス521および523は「未チェック状態」であることを示し、〇で表わされたチェックボックス522は「チェック済み状態」であることを示す。
前記位置選択部600は、ユーザによるマウスやキーボードの入力を受けて、チェックリスト出力部500が出力した位置情報を選択する。位置選択部600は出力装置900に出力されたチェックリストの一部がマウスで選択されたり、位置情報そのものをキーボードで入力されたりすることによって、どの位置情報が選択されたかを識別する。位置選択部600は識別した位置情報をソースプログラム出力部700に渡す。
前記ソースプログラム出力部700は、位置選択部600から位置情報を受け取ると、ソースファイル2を読み込み、その位置情報が示す箇所のソースプログラム内容をその周辺の内容とともに出力装置900へ出力する。
また、チェック結果入力部800は、ユーザからチェック結果と位置情報を受け取り、チェック結果と位置情報を保管部200に出力する。この時保管部200は、位置情報を位置フィールド220に格納しているレコード240を検索し、そのレコード240に含まれるチェックフラグフィールド230の内容をチェック結果に応じて変更する。
次に、処理工程について説明する。
ソースプログラムのレビューでチェックすべき箇所を抽出して保管部200に保管する工程(S1)を、図7のフローを用いて説明する。レビュー支援システムにソースファイル2が入力されると(S101)、ソース解析部110によってソースファイル2に記述されたソースプログラムの解析が行われ、ソースプログラム中に含まれるステートメントと識別子に対して解析符号を割り付ける(S102)。次に、特定箇所抽出部120が、解析符号を検索してレビューでチェックすべきステートメントや識別子を抽出する(S103)。前記抽出処理が終了すると、特定箇所抽出部120は抽出したチェックすべきステートメントや識別子のソースプログラム2上での位置を調べ、この位置を位置情報として出力する(S104)。保管部200は、位置情報を受け取ると、位置情報を位置フィールド220に格納してチェックフラグフィールド230を「未チェック状態」としたレコード240として保管する(S105)。
次に、ユーザがチェックしたい箇所のソースプログラム内容を出力する工程(S2)を、図8のフローを用いて説明する。
チェックリスト出力部500は、保管部200の保管する位置情報を一つまたは複数読み出し、出力装置900にチェックリストを出力する(S201)。位置選択部600によって、位置情報が選択されると(S202)、位置選択部600は、選択された位置情報をソースプログラム出力部700に渡す(S203)。ソースプログラム出力部700は、ソースファイル2を読み取り、位置情報の示す箇所のソースプログラム内容を出力装置900に出力する(S204)。図9は、ソースプログラムを出力装置900で出力した出力例である。ここでは、line13を選択した場合のものであり、line13周辺のソースプログラムが表示され、line13のステートメントが反転表示されている。
次に、チェックすべき箇所に対するチェック結果を記録する処理工程(S3)を、図10を用いて説明する。
チェック結果入力部800は、ユーザからチェック結果と位置情報を受け取ると(S301)、チェック結果と位置情報を保管部200に渡す(S302)。保管部200は、位置情報を位置フィールド220に格納しているレコード240を検索し(S303)、そのレコード240のチェックフラグフィールド230を「チェック済み状態」に変更する(S305)。
なお、このレビュー支援システムに、キーボードなどを使ってソースプログラムそのものが入力された時は、入力されたソースプログラムを一時ファイルに保存し、その一時ファイルをソースファイル2として扱ってもよい。
また、ソース解析部110が、ステートメントや識別子がソースプログラムのどの場所にあるかを示す位置情報を割り当ててもよい。この場合、特定箇所抽出部120は、抽出したステートメントや識別子の位置情報を調べる必要はなく、ステートメントや識別子に割り当てられている位置情報を読み出して出力してもよい。
また、特定箇所抽出部120に、どのステートメントや識別子を抽出するかという情報を与えて処理を行わせてもよい。この場合、抽出するステートメントや識別子を任意に設定することができる。
また、チェックフラグフィールド230は、「未チェック状態」および「チェック済み状態」以外の状態が存在してもよく、チェック済みかそうでないかがわかればよい。
また、ソースプログラム出力部700の機能を、抽出部100が兼ねてもよい。この場合抽出部100は、位置選択部600から位置情報を受け取ると、ソースファイル2を読み込み、その位置情報が示す箇所のソースプログラム内容を出力装置900へ出力する。
また、チェック結果入力部800が受け付けるチェック結果として、未チェックに戻す旨の入力を受け付けてもよい。この場合、処理ステップS303において、チェックフラグフィールド230を「未チェック状態」に変更する。
さらに、チェック結果入力部800の機能を、位置選択部600が兼ねてもよい。この場合、位置選択部600がチェック結果と位置情報を受け取った時は、位置選択部600はそのチェック結果と位置情報を保管部200に渡し、処理ステップS303以降の処理を行う。位置選択部600が位置情報だけを受け取った時は、処理ステップS303以降と同様である。
(実施例2)
次に、本発明の実施例2におけるレビュー支援システムを、図11を用いて説明する。
この実施例2におけるレビュー支援システムは、ソースプログラムの解析を行って特定箇所を抽出する抽出部150、抽出部150から渡されたデータを保管する保管部250、保管部250に保管された位置情報を出力するチェックリスト出力部500、位置情報を選択する位置選択部600、位置選択部600によって選択された位置情報に対応するソースプログラムの内容を出力するソースプログラム出力部700、ユーザからチェック結果と位置情報の入力を受け取るチェック結果入力部800を有している。前記チェックリスト出力部500、位置選択部600、ソースプログラム出力部700、チェック結果入力部800での処理内容は、図1の実施例1と同様である。抽出部150は、図12に示すように、ソース解析部111、特定箇所抽出部121、解析データ記憶部160、データ比較部170を有している。
前記ソース解析部111は、上記実施例1のソース解析部110と同様の処理を行い、ソースプログラム内のステートメントと識別子に解析符号を割り当て、特定箇所抽出部121に渡す。さらに、解析符号を割り当てたステートメントと識別子のデータを、解析データ161として解析データ記憶部160に出力する。
前記特定箇所抽出部121は、特定箇所抽出部120と同様の処理を行い、位置情報を保管部250に出力する。また、チェックフラグフィールド230の状態を変更するためのチェックフラグ変更命令を、位置情報と組にして保管部250に出力する。さらに特定箇所抽出部121は、保管部250から位置情報を受け取り、解析データ記憶部160から解析データ161を読み込み、位置情報の示すステートメントや識別子を抽出する。また、抽出したステートメントや識別子の集合を比較部170に渡し、さらにデータ比較部170から比較結果を受け取る。
前記解析データ記憶部160は、ソース解析部111から解析データ161を受け取り、これを記憶する。データ比較部170は、特定箇所抽出部121からステートメントや識別子の集合を受け取り、さらに特定箇所抽出部121からステートメントや識別子の集合を受け取り、両者を比較して比較結果を特定箇所抽出部121に渡す。
また、保管部250は、実施例1における保管部200と同様の機能を持ち、さらに保管部250は、特定箇所抽出部121から渡された位置情報を持つレコード240が既に存在した場合は、前記位置情報を抽出部150に返答する。また保管部250は、特定箇所抽出部121から位置情報と共にフラグ変更命令180を受け取ると、保管しているレコード240の中からこの位置情報を含むものを探し、このレコード240のチェックフラグフィールド230の状態をフラグ変更命令180に従って変更する。
以上のような構成からなり、その処理動作について説明する。
最初にソースプログラムを記述したソースファイル2を入力した場合の処理工程S4を、図13を用いて説明する。ソースファイル2が入力されると(S401)、ソース解析部111はソースファイル2を読み取って、ソースプログラム中に含まれるステートメントと識別子に対して解析符号を割り付ける(S402)。この時ソース解析部111は、解析データ161を解析データ記憶部に渡し、解析データ部160が解析データ161を記憶する(S403)。次に、特定箇所抽出部121が、解析符号を検索してレビューでチェックすべきステートメントや識別子を抽出する(S404)。抽出処理が終了すると、特定箇所抽出部121は抽出したチェックすべきステートメントや識別子のソースプログラム上での位置を調べ、この位置を位置情報として出力する(S405)。保管部250は、位置情報を受け取ると、位置情報を位置フィールド220に格納してチェックフラグフィールド230を「未チェック状態」としたレコード240として保管する(S406)。
次に、上記ソースファイル2が入力されて処理工程S4が行なわれた後、ソースファイル2の内容を修正した修正ソースファイル4が入力された場合の処理工程S5を、図14を用いて説明する。この場合は、解析データ記憶部160には、ソースプログラムの解析データ161が記憶されており、保管部250には、ソースプログラムにおけるチェックすべき位置情報が、位置情報の個数分のレコード240で保管されている。保管部250に保管されている位置情報をそれぞれ位置情報P4−1、位置情報P4−2、・・・位置情報P4−nとし、そして、位置情報P4−1〜P4−n全体を位置情報群PS4とする。
レビュー支援システムに修正ソースファイル4が入力された時(S501)、処理ステップS402と同様に解析が行われ(S502)、修正ソースファイル4に記述されたソースプログラムの解析データ162が解析データ記憶部160に記憶される(S503)。そして処理ステップS404〜S405と同様に、チェックすべきステートメントや識別子の位置情報が、保管部250に出力される(S504)。処理ステップS504で渡された位置情報をそれぞれ位置情報P5−1、位置情報P5−2、・・・位置情報P5−mとし、位置情報P5−1〜P5−nの組を位置情報群PS5とする。
保管部250は、位置情報群PS5を受け取ると、位置情報群PS4にあって位置情報群PS5に存在しない位置情報をすべて取り出す(この時取り出した位置情報をP6−1、位置情報P6−2、・・・P6−kとする)。そして、位置情報P6−1〜P6−kのいずれかを位置フィールド220に格納するレコード240を削除する(S505)。
次に、保管部250は、位置情報群PS4の中から位置情報を一つ取り出し(S506)、以下の処理を実行する。保管部250は、取り出した位置情報(以下、位置情報P7とする)を位置フィールド220に格納しているレコード240が存在するか確認し(S507)、もし存在していなければ、処理ステップS104と同様の処理を行い(S508)、後述する処理ステップS526に移る。処理ステップS507において、位置情報P7を持つレコード240が存在していれば、保管部250はその位置情報P7を抽出部150の特定箇所抽出部121に返す(S509)。
前記特定箇所抽出部121に保管部250から位置情報P7が返されると、この特定箇所抽出部121は解析データ162を読み込み(S510)、位置情報P7が示すステートメントまたは識別子を抽出する(S511)。このとき、抽出がステートメントであれば(S512)その中で使われている識別子を再帰的に抽出する(S513)。そして、抽出した識別子のうち、可変数のものを、解析符号を用いて抽出する(S514)。次に特定箇所抽出部121は、解析データ162から、先ほど抽出した可変数を含むすべてのステートメントを抽出する(S515)。抽出したステートメントが可変数を含んでいる場合は(S516)、再帰的にその可変数を含むステートメントを抽出する(S517)。そして、抽出したステートメントの組を、ステートメントデータ163として、データ比較部170に渡す(S518)。次に特定箇所抽出部121は、解析データ161を読み込み、処理ステップS511〜S516と同様にして、ステートメントを抽出する(S520)。こうして抽出したステートメントの組を、ステートメントデータ164として、データ比較部170に渡す(S521)。
前記データ比較部170は、ステートメントデータ163とステートメントデータ164を受け取ると、ステートメントデータ163とステートメントデータ164を比較する(S522)。そして、その比較結果が不一致であれば(S523)、特定箇所抽出部121は、修正の影響があるとして、位置情報P7と共にチェックフラグ変更命令180を保管部250に渡す(S524)。そして、保管部250は、位置情報P7を位置フィールド220に格納しているレコード240のチェックフラグフィールド230を「未チェック状態」に変更し(S525)、後述する処理ステップS526に移る。
上記処理ステップ522において、ステートメントデータ163とステートメントデータ164の比較結果が一致した場合は、後述する処理ステップS526に移る。また、処理ステップS508を行った後も、処理ステップS526に進む。
前記処理ステップS526では、保管部250が、位置情報PS4の組の中を全て取り出したかどうかを確認し、全て取り出していれば処理を終了する。一方、位置情報PS4の組を全て取り出していなければ、処理ステップS506に戻って処理を続ける。
なお、上記の説明において、ソース解析部111は、処理ステップS402における処理結果を特定箇所抽出部121に渡さなくてもよい。この場合は、処理ステップS404において、特定箇所抽出部121は解析データ記憶部160から解析データ161を読み込み、この解析データ161を使って抽出を行う。
なお、処理ステップS515およびS517において、可変数の有効範囲を調べて、ステートメントを検索する範囲を限定してもよい。
本発明のソースプログラムのレビュー支援システムは、作成したソースプログラムのレビュー作業の手間を軽減し、チェック漏れを防ぐことができ、ソースプログラムに動作エラーやセキュリティ欠陥などを引き起こすことがないかをチェックする作業等に有用である。
本発明の実施例1におけるソースプログラムのレビュー支援システムの構成を示すブロック図 本発明の実施例1におけるソースファイルの一例を示す図 本発明の実施例1における、抽出部の構成を示すブロック図 本発明の実施例1におけるソースプログラムの解析例を示す図 本発明の実施例1における位置情報の例を示す図 本発明の実施例1におけるチェックリストの出力例を示す図 本発明の実施例1におけるソースファイルからレビューでチェックすべき場所を抽出する処理工程のフロー図 本発明の実施例1におけるチェックしたい箇所のソースプログラム内容を出力する処理工程のフロー図 本発明の実施例1におけるソースプログラムの内容を出力した例を示す図 本発明の実施例1におけるチェックすべき箇所のチェック結果を記録する処理工程のフロー図 本発明の実施例2におけるソースプログラムのレビュー支援システムの構成を示すブロック図 本発明の実施例2における抽出部の構成を示すブロック図 本発明の実施例2におけるソースファイルからレビューでチェックすべき場所を抽出する処理工程のフロー図 本発明の実施例2における修正ソースファイルからレビューでチェックすべき箇所を抽出する処理工程のフロー図
符号の説明
2、21 ソースファイル
100、150 抽出部
110、111 ソース解析部
120、121 特定箇所抽出部
170 データ比較部
200、250 保管部
220 位置フィールド
230 チェックフラグフィールド
240 レコード
500 チェックリスト出力部
600 位置選択部
700 ソースプログラム出力部
800 チェック結果入力部
900 出力装置

Claims (5)

  1. ソースプログラムの検査を目的とするレビュー作業を支援するソースプログラムのレビュー支援システムであって、
    前記ソースプログラムの特定箇所を抽出する抽出手段と、
    データを保管する保管手段とを備え、
    前記抽出手段は、前記ソースプログラムをレビューしてチェックすべき箇所を、前記特定箇所として抽出すると共にその特定箇所の位置情報を前記保管手段に出力し、
    前記保管手段は、前記特定個所の位置情報を保管し、
    前記保管手段に保管された位置情報が示す特定箇所のソースプログラム内容を閲覧可能にしたことを特徴とするソースプログラムのレビュー支援システム。
  2. 前記保管手段は、前記位置情報をソースプログラム中の位置を記録する位置フィールドと、
    前記位置フィールドが示す箇所のチェック結果を記録するチェックフラグフィールドを持つレコードとして保管し、
    前記チェックフラグフィールドは、少なくとも「未チェック状態」もしくは「チェック済み状態」のうちのいずれかの状態を取り、
    前記保管手段は、初期状態では前記チェックフラグフィールドを「未チェック状態」で保管し、かつ、チェック結果の入力によって、前記チェックフラグフィールドを「チェック済み状態」に変更することを特徴とする請求項1記載のソースプログラムのレビュー支援システム。
  3. 前記保管手段に保管された1つまたは複数の位置情報を出力するチェックリスト出力手段と、
    前記位置情報を選択して被選択位置情報とする位置選択手段と、
    ソースプログラムを出力するソースプログラム出力手段と、
    ユーザがチェック結果と被チェック位置情報を入力するチェック結果入力手段とを備え、
    前記位置選択手段は、前記被選択位置情報を前記ソースプログラム出力手段に渡し、
    前記ソースプログラム出力手段は、前記位置選択手段から前記被選択位置情報を受け取ると、その被選択位置情報に対応するソースプログラムの内容を出力し、
    前記チェック結果入力手段は、入力された前記チェック結果と被チェック位置情報を前記保管手段に渡し、
    前記保管手段は、前記チェック結果入力手段から前記チェック結果と被チェック位置情報を受け取ると、その被チェック位置情報を持つレコードのチェックフラグフィールドを「チェック済み状態」に変更することを特徴とする請求項2記載のソースプログラムのレビュー支援システム。
  4. 前記ソースプログラムの内容を修正したものを修正ソースプログラムとし、
    前記抽出手段が抽出する、前記修正ソースプログラムにおけるレビューでチェックすべき箇所の位置情報を修正ソースプログラム位置情報とし、
    前記保管手段がすでに保管済みの位置情報を既保管位置情報とし、
    前記保管手段は、前記修正ソースプログラム位置情報の入力によって前記修正ソースプログラム位置情報と前記既保管位置情報を比較し、
    前記保管手段は、前記修正ソースプログラム位置情報が前記既保管位置情報に含まれなければ前記修正ソースプログラム位置情報を保管し、
    前記保管手段は、前記修正ソースプログラム位置情報が前記既保管位置情報に含まれていれば前記修正ソースプログラム位置情報を前記抽出手段に渡し、
    前記抽出手段は、前記修正ソースプログラム位置情報の入力によって前記修正ソースプログラムの修正内容が前記修正ソースプログラム位置情報が示す箇所へ及ぼす影響を検査し、かつその検査結果により修正ソースプログラム位置情報と前記チェックフラグフィールドの状態を「未チェック状態」もしくは「チェック済み状態」に変更を指示するフラグ変更命令を前記保管手段に出力し、
    前記保管手段は、前記フラグ変更命令によって、前記修正ソースプログラムの修正内容が前記修正ソースプログラム位置情報が示す箇所へ影響がある場合に修正ソースプログラム位置情報を持つレコードのチェックフラグフィールドを「未チェック状態」に変更することを特徴とする請求項2または請求項3記載のソースプログラムのレビュー支援システム。
  5. ソースプログラムの検査を目的とするレビュー作業を支援するソースプログラムのレビュー支援システムであって、
    前記ソースプログラムの位置情報を特定位置情報として保管する保管手段と、
    前記保管手段に保管された1つまたは複数の前記特定位置情報を出力するチェックリスト出力手段と、
    前記特定位置情報を選択して被選択特定位置情報とする位置選択手段と、
    前記ソースプログラムの内容を出力するソースプログラム出力手段と、
    ユーザがチェック結果と被チェック特定位置情報を入力するチェック結果入力手段とを備え、
    前記保管手段は、前記特定位置情報について、前記ソースプログラム中の位置を記録する位置フィールドと前記位置フィールドが示す箇所のチェック結果を記録するチェックフラグフィールドを持つレコードとして保管し、
    前記チェックフラグフィールドは、少なくとも「未チェック状態」もしくは「チェック済み状態」のうちのいずれかの状態を取り、
    前記位置選択手段は、前記被選択特定位置情報を前記ソースプログラム出力手段に渡し、
    前記ソースプログラム出力手段は、前記位置選択手段から前記被選択特定位置情報を受け取ると、その被選択特定位置情報に対応するソースプログラムの内容を出力し、
    前記チェック結果入力手段は、前記チェック結果と前記被チェック特定位置情報を前記保管手段に渡し、
    前記保管手段は、前記チェック結果入力手段から前記チェック結果と前記被チェック特定位置情報を受け取ると、その被チェック特定位置情報を持つレコードのチェックフラグフィールドを「チェック済み状態」に変更することを特徴とするソースプログラムのレビュー支援システム。
JP2003433107A 2003-12-26 2003-12-26 ソースプログラムのレビュー支援システム Pending JP2005190330A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003433107A JP2005190330A (ja) 2003-12-26 2003-12-26 ソースプログラムのレビュー支援システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003433107A JP2005190330A (ja) 2003-12-26 2003-12-26 ソースプログラムのレビュー支援システム

Publications (1)

Publication Number Publication Date
JP2005190330A true JP2005190330A (ja) 2005-07-14

Family

ID=34790591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003433107A Pending JP2005190330A (ja) 2003-12-26 2003-12-26 ソースプログラムのレビュー支援システム

Country Status (1)

Country Link
JP (1) JP2005190330A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008129619A1 (ja) * 2007-04-09 2008-10-30 Fujitsu Limited ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
JP2010191598A (ja) * 2009-02-17 2010-09-02 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2011070254A (ja) * 2009-09-24 2011-04-07 Fujitsu Toshiba Mobile Communications Ltd ソフトウェアミス検出ツール
JP2011164954A (ja) * 2010-02-10 2011-08-25 Exa Corp Cobolソースコードチェックプログラム、cobolソースコードチェックシステム
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP5732597B1 (ja) * 2014-07-03 2015-06-10 株式会社日立システムズ 静的テスト支援システム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008129619A1 (ja) * 2007-04-09 2008-10-30 Fujitsu Limited ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
CN101641678B (zh) * 2007-04-09 2012-03-21 富士通株式会社 源程序再次研究方法及源程序再次研究装置
JP5056849B2 (ja) * 2007-04-09 2012-10-24 富士通株式会社 ソースプログラム再検討プログラム、ソースプログラム再検討方法およびソースプログラム再検討装置
JP2010191598A (ja) * 2009-02-17 2010-09-02 Mitsubishi Electric Corp 情報処理装置及び情報処理方法及びプログラム
JP2011070254A (ja) * 2009-09-24 2011-04-07 Fujitsu Toshiba Mobile Communications Ltd ソフトウェアミス検出ツール
JP2011164954A (ja) * 2010-02-10 2011-08-25 Exa Corp Cobolソースコードチェックプログラム、cobolソースコードチェックシステム
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP5732597B1 (ja) * 2014-07-03 2015-06-10 株式会社日立システムズ 静的テスト支援システム
WO2016002056A1 (ja) * 2014-07-03 2016-01-07 株式会社日立システムズ 静的テスト支援システム

Similar Documents

Publication Publication Date Title
Yan et al. Just-in-time defect identification and localization: A two-phase framework
EP0785510A1 (en) Program debugging system for debugging a program having a graphical user interface
US20120331449A1 (en) Device, method and computer program product for evaluating a debugger script
US10261884B2 (en) Method for correcting violation of source code and computer readable recording medium having program performing the same
EP2073121A2 (en) Analyzer and analyzing system, and computer program product
JP5303795B2 (ja) アプリケーションの解析方法、解析システム及び解析プログラム
JP5845888B2 (ja) ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム
US20030088810A1 (en) Methods and apparatus for determining software component sizes associated with errors
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
JP2005190330A (ja) ソースプログラムのレビュー支援システム
US10216611B2 (en) Detecting mistyped identifiers and suggesting corrections using other program identifiers
US8434072B2 (en) Automatic retrieval of translated messages for interacting with legacy systems
JP5369565B2 (ja) プログラムのエラー情報出力装置、エラー情報出力方法およびエラー情報出力プログラム
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP2004126866A (ja) 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP2010198522A (ja) ソースコード解析方法およびソースコード解析支援システム
JP2006344012A (ja) データ入力システム、データ入力プログラム
US10402304B2 (en) Non-transitory computer-readable storage medium, correction support method and correction support device
JP2007199800A (ja) デグレート防止支援プログラムおよびデグレート防止支援方法
JP2009053767A (ja) プログラム解析装置、および、プログラム解析方法
CN117171043B (zh) 一种源代码智能检测方法、系统、设备及存储介质
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JP2005309917A (ja) レビュー支援装置
JP2006260053A (ja) 特定サブルーチン検索システムおよびこれに用いるプログラム
WO2012066635A1 (ja) テスト方法、テスト装置及びテスト実行用プログラム