(57)【特許請求の範囲】
【請求項１】
ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力する情報処理部と、
関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一する初期処理部と、
ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する指摘判定処理部と
を具備する
判定作業支援システム。
【請求項２】
請求項１に記載の判定作業支援システムであって、
前記初期処理部は、
前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成する指摘抽出部と、
ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供するツール連携部と、
前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成する関数一覧作成部と、
前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定するクローンコード判定部と、
前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うルール自動判定部と
を具備する
判定作業支援システム。
【請求項３】
請求項２に記載の判定作業支援システムであって、
前記指摘判定処理部は、
前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出する変数抽出部と、
前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成する関連処理抽出部と、
前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との２つの情報を基に、前記指摘一覧情報中の同じルールで検証された２つの指摘の類似チェックを実施し、前記２つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加する類似指摘判定部と、
前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得するユーザ報告部と、
を具備し、
前記類似指摘判定部は、前記ユーザによる精査結果を反映して前記指摘一覧情報を更新する
判定作業支援システム。
【請求項４】
ソースコード検証ツールによる判定作業を支援するために、計算機により実施される判定作業支援方法であって、
前記ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力することと、
関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一することと、
ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減することと
を含む
判定作業支援方法。
【請求項５】
請求項４に記載の判定作業支援方法であって、
前記検証結果の類似指摘を事前に統一する際に、
前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成することと、
ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供することと、
前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成することと、
前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定することと、
前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うことと
を更に含む
判定作業支援方法。
【請求項６】
請求項５に記載の判定作業支援方法であって、
前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する際に、
前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出することと、
前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成することと、
前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との２つの情報を基に、前記指摘一覧情報中の同じルールで検証された２つの指摘の類似チェックを実施し、前記２つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加することと、
前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得することと、
前記ユーザによる精査結果を反映して前記指摘一覧情報を更新することと
を更に含む
判定作業支援方法。
【請求項７】
ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力するステップと、
関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、前記ソースコード検証ツールの検証結果の指摘の各々において、問題発生に係る代入処理および条件分岐処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、前記検証結果の類似指摘を事前に統一するステップと、
ユーザが指摘を精査した時に前記類似指摘の精査結果を同じにするための処理を行い、前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減するステップと
を計算機に実行させるための
プログラム。
【請求項８】
請求項７に記載のプログラムであって、
前記検証結果の類似指摘を事前に統一する際に、
前記ソースコード検証ツールにより指摘された内容に関するツール指摘情報を基に、指摘一覧情報を作成するステップと、
ソースファイルを前記関数情報抽出ツール及び前記クローンコード抽出ツールに提供するステップと、
前記関数情報抽出ツールから実行結果として取得した関数情報を基に、関数一覧情報を生成するステップと、
前記クローンコード抽出ツールから実行結果として取得した類似コード情報を基に、前記関数一覧情報に含まれる類似コードを持つ関数を判定するステップと、
前記ルール設定情報を参照して、前記指摘一覧情報のうち、精査の必要がない精査対象外の指摘の判定を行うステップと
を更に計算機に実行させるための
プログラム。
【請求項９】
請求項８に記載のプログラムであって、
前記類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する際に、
前記指摘一覧情報、及び前記関数一覧情報を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、問題となる変数、プログラムのプロセス上で問題となる変数に代入を行う変数、及び条件分岐に利用される変数、を抽出するステップと、
前記抽出された各変数の情報を基に、関数内で各変数が実施された処理と宣言位置とを特定し、変数、宣言位置、及び処理内容を一覧に集約して、指摘関連変数一覧情報を作成するステップと、
前記関数一覧情報の類似情報と、前記指摘関連変数一覧情報の宣言位置及び処理内容の情報との２つの情報を基に、前記指摘一覧情報中の同じルールで検証された２つの指摘の類似チェックを実施し、前記２つの指摘が類似であるか判定し、類似と判定された指摘について、前記指摘一覧情報に類似判定情報を追加するステップと、
前記指摘一覧情報と前記指摘関連変数一覧情報とを一覧表示してユーザに通知し、前記ユーザによる精査結果を取得するステップと、
前記ユーザによる精査結果を反映して前記指摘一覧情報を更新するステップと
を更に計算機に実行させるための
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、判定作業支援システムに関し、特にソースコード検証ツールが発見した指摘に対して精査を実施する作業を支援するシステムに関する。
【背景技術】
【０００２】
ソフトウェアの品質管理（ＱＣ：Ｑｕａｌｉｔｙ  Ｃｏｎｔｒｏｌ）の一環として、ソースコード（Ｓｏｕｒｃｅ  ｃｏｄｅ：原始プログラム）の品質を向上させるために、ソースコード検証システムが用いられる。
【０００３】
ソースコード検証システムとは、プログラムを実際に実行することなく、ソースコードを解析することで、ソースコード中の記述ミスや動作時の不具合を指摘することを可能とするシステムである。ソースコード検証システムは、主に、計算機等がソースコード検証ツールを実行することにより実現される。ソースコード検証ツールとは、ソースコードを検証する機能を提供するソフトウェア等のことである。
【０００４】
既存のソースコード検証システムでは、ソースコード中にクローンコード（Ｃｌｏｎｅ  Ｃｏｄｅ：類似コード、重複コード）や類似処理が多数存在する場合、類似の指摘が多数出力されるため、開発者や作業者が精査を実施するには、多大な作業工数を要していた。
【０００５】
精査とは、ソースコード検証ツールにより指摘された内容に関する情報（ツール指摘情報）について、別途チェックを行い、バグ、非バグの判定を行うことである。
【０００６】
また、類似の指摘に対して複数の作業者による精査を実施した場合、精査結果が個々の作業者のスキル（技能、熟練度）に依存し、作業者毎に異なる判定をしてしまうこともあった。これにより、バグの見逃しが発生する可能性があった。
【０００７】
関連する技術として、特許文献１（特開２００５−２５０９４６号公報）にソフトウェア開発支援装置が開示されている。このソフトウェア開発支援装置は、ソース格納部と、要求仕様格納部と、機能ツリー格納部と、リンク情報格納部と、ソフトウェア登録部と、変更ソース抽出部とを備える。ソース格納部は、ソフトウェアのソースを格納する。要求仕様格納部は、ソフトウェアの要求仕様書を格納する。機能ツリー格納部は、要求仕様書を基にソフトウェアの機能を分類した機能ツリーを格納する。リンク情報格納部は、ソースと機能の関係を含むリンク情報を格納する。ソフトウェア登録部は、流用元のソフトウェアのソースとこのソフトウェアに対応する要求仕様書を新たなソフトウェア用にコピーする。変更ソース抽出部は、コピーされた要求仕様書、機能ツリーとリンク情報の内容が更新された後に、新たなソフトウェア用と流用元のソフトウェアの要求仕様書から差分を抽出し、機能ツリーとリンク情報を用いて差分に関連するソースを抽出する。
【０００８】
また、特許文献２（特開２００９−１０４４８９号公報）にコードクローンのテスト装置および方法が開示されている。この関連技術では、サーバ内に、ソースコードファイル、コードクローン出力ファイル、テスト結果ファイル、コードクローンマージファイルを備え、またサーバ内のハードウェア資源により実現される、機能ブロックとしての、データ設定処理部、コードクローン検出・マージ処理部、テスト結果設定処理部を備える。コードクローン検出・マージ処理部は、ソースコードファイルに格納されたソフトウェアソースプログラムからコードクローンセットを検出し、マージする。テスト結果設定処理部は、検出したコードクローンセットの内１つのコードクローンをテストし、テストされたソースコード行にテストケース番号を設定してコードクローンセット全体がテストされたことを表示する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２５０９４６号公報
【特許文献２】特開２００９−１０４４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、ソースコード検証ツールにより発見されたソースコード中の記述ミスや動作時の不具合等の指摘に対して、作業者等のユーザが精査を実施する作業を支援し、作業効率を向上する判定作業支援システムを提供することである。
【課題を解決するための手段】
【００１１】
本発明に係る判定作業支援システムは、ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力する情報処理部と、関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、該ソースコード検証ツールの検証結果の指摘の各々における代入処理や条件分岐といった問題発生に関わる処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、該検証結果の類似指摘を事前に統一する初期処理部と、ユーザが指摘を精査した時に該類似指摘の精査結果を同じにするための処理を行い、該類似指摘に対する重複した精査作業を防ぎ、精査作業を削減する指摘判定処理部とを具備する。
【００１２】
本発明に係る判定作業支援方法は、ソースコード検証ツールによる判定作業を支援するために、計算機により実施される判定作業支援方法であって、該ソースコード検証ツールが確認しないルールの設定に関するルール設定情報を入力することと、関数情報抽出ツール及びクローンコード検出ツールと連携して動作し、クローンコードと推定されるコードの情報を基に、該ソースコード検証ツールの検証結果の指摘の各々における代入処理や条件分岐といった問題発生に関わる処理を抽出し、コードの類似性と問題発生に関わる処理を利用し、該検証結果の類似指摘を事前に統一することと、ユーザが指摘を精査した時に該類似指摘の精査結果を同じにするための処理を行い、該類似指摘に対する重複した精査作業を防ぎ、精査作業を削減することとを含む。
【００１３】
本発明に係るプログラムは、上記の判定作業支援方法における処理を、計算機に実行させるためのプログラムである。なお、本発明に係るプログラムは、記憶装置や記憶媒体に格納することが可能である。
【発明の効果】
【００１４】
ソースコード検証ツールに依存せず、コードの類似性と、ソースコード検証ツールの指摘における、関連変数の処理の類似性から高精度で類似となる指摘を抽出し、余計な精査作業を無くすことで、精査作業のコストが削減されるため、大規模なソースコードの検証結果の精査をすることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る判定作業支援システムの構成例を示す図である。
【図２】情報処理部の構成例の詳細について説明するための図である。
【図３】初期処理部の構成例の詳細について説明するための図である。
【図４】指摘判定処理部の構成例の詳細について説明するための図である。
【図５】初期処理の手順について説明するためのフローチャートである。
【図６】類似指摘を判定し、ユーザが精査作業をするまでの処理の手順について説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
＜実施形態＞
以下に、本発明の実施形態について添付図面を参照して説明する。
【００１７】
［システム構成］
図１を参照して、本発明に係る判定作業支援システムの構成例について説明する。
【００１８】
本発明に係る判定作業支援システムは、情報処理部１１０と、初期処理部１２０と、指摘判定処理部１３０を備える。
【００１９】
情報処理部１１０は、ユーザ入力情報１０１を入力し、ルール設定情報１０２を出力する。
【００２０】
初期処理部１２０は、関数情報抽出ツール２２０及びクローンコード検出ツール２３０と連携して動作する。初期処理部１２０は、ルール設定情報１０２と、ソースファイル１０３と、ツール指摘情報１０４を入力し、指摘一覧情報１０５と、関数一覧情報１０６を出力する。
【００２１】
指摘判定処理部１３０は、指摘一覧情報１０５と、関数一覧情報１０６を入力し、指摘関連変数一覧情報１０７を出力する。
【００２２】
ユーザ入力情報１０１は、ユーザからの入力操作に応じて入力される情報である。ユーザ入力情報１０１は、直接入力される情報に限らず、外部装置や記憶媒体等から読み出された情報でも良い。
【００２３】
ルール設定情報１０２は、ソースコード検証ツール２１０における検証ルールのうち、ユーザが精査を実施しないと決めた検証ルールの情報である。すなわち、ルール設定情報１０２は、ソースコード検証ツール２１０における精査対象外のルール情報である。
【００２４】
ソースファイル１０３は、ソースコード検証ツール２１０が検証を実施したソースコードのファイルの集合である。
【００２５】
ツール指摘情報１０４は、ソースコード検証ツール２１０により指摘された内容に関する情報の集合である。
【００２６】
指摘一覧情報１０５は、ツール指摘情報１０４を、予め決められたフォーマットへ変換し、ツール指摘情報１０４における指摘に対する作業者の精査情報を保持した指摘情報の一覧である。
【００２７】
関数一覧情報１０６は、関数情報抽出ツール２２０及びクローンコード抽出ツール２２０から取得した情報を基に作成される関数情報の一覧である。関数一覧情報１０６は、ソースファイルの名称、関数名称、関数の開始行、関数の終了行、類似している関数に付与された一意のＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ：識別情報）を保持する。
【００２８】
指摘関連変数一覧情報１０７は、指摘一覧情報１０５に存在する指摘に関連する変数情報の一覧である。指摘関連変数一覧情報１０７は、指摘１件毎について、該指摘に関係する変数名、宣言場所、プログラム中の処理内容を保持する。
【００２９】
なお、ルール設定情報１０２、指摘一覧情報１０５、関数一覧情報１０６、指摘関連変数一覧情報１０７は、本システムにおける中間情報である。
【００３０】
ソースコード検証ツール２１０は、既存のソースコード検証ツールである。
【００３１】
関数情報抽出ツール２２０及びクローンコード検出ツール２３０は、既に公知のツールとして世の中に存在する外部ツールである。例えば、「ｃｘｒｅｆ（関数情報抽出）」や「ＣＣＦｉｎｄｅｒＸ（クローンコード検出）」等が知られている。但し、実際には、これらの例に限定されない。本発明に係る判定作業支援システムは、これらの外部ツールと連携して動作するシステムである。
【００３２】
［ソースコード検証ツールとの連携の可能性］
なお、初期処理部１２０は、ソースコード検証ツール２１０と連携して動作しても良い。例えば、初期処理部１２０は、ソースコード検証ツール２１０からツール指摘情報１０４を受信し、ツール指摘情報１０４に応じて（ツール指摘情報１０４の受信を動作開始要求の受信と判断して）動作を開始する。このとき、初期処理部１２０は、ソースコード検証ツール２１０からツール指摘情報１０４と共に、ソースファイル１０３を受信しても良い。更に、初期処理部１２０は、ソースコード検証ツール２１０において設定された検証ルールを参照し、この検証ルールを基に、精査対象外のルール情報を特定し、この精査対象外のルール情報をルール設定情報１０２としても良い。或いは、初期処理部１２０は、ルール設定情報１０２とソースファイル１０３をソースコード検証ツール２１０に提供し、検証結果としてソースコード検証ツール２１０からツール指摘情報１０４を受信しても良い。
【００３３】
［情報処理部の構成］
図２を参照して、情報処理部１１０の構成例の詳細について説明する。
【００３４】
情報処理部１１０は、情報入力部１１１と、情報出力部１１２を備える。
【００３５】
情報入力部１１１は、ユーザ入力情報１０１を基に、ルール設定情報１０２の作成／変更（追加／削除等）を行い、ルール設定情報１０２を、初期処理部１２０に提供する。また、情報入力部１１１は、初期処理部１２０、指摘判定処理部１３０、又は外部装置や記憶媒体等から情報を入力し、変更等の処理を行った後、初期処理部１２０、指摘判定処理部１３０、又は外部装置や記憶媒体等に出力しても良い。例えば、情報入力部１１１は、必要に応じて、指摘一覧情報１０５を読み出して、指摘一覧情報１０５の変更を行い、指摘判定処理部１３０に提供する。
【００３６】
情報出力部１１２は、情報入力部１１１からの情報を入力し、初期処理部１２０、指摘判定処理部１３０、又はユーザ向けの出力装置に出力する。
【００３７】
［初期処理部の構成］
図３を参照して、初期処理部１２０の構成例の詳細について説明する。
【００３８】
初期処理部１２０は、情報取得部１２１と、指摘抽出部１２２と、ツール連携部１２３と、関数一覧作成１２４と、クローンコード判定部１２５と、ルール判定部１２６を備える。
【００３９】
情報取得部１２１は、ルール設定情報１０２、ソースファイル１０３、及びツール指摘情報１０４を入力する。なお、初期処理部１２０がソースコード検証ツール２１０と連携している場合、情報取得部１２１は、ソースコード検証ツール２１０からソースファイル１０３、及びツール指摘情報１０４を取得しても良い。
【００４０】
指摘抽出部１２２は、ツール指摘情報１０４を基に、指摘一覧情報１０５を生成する。
【００４１】
ツール連携部１２３は、関数情報抽出ツール２２０及びクローンコード抽出ツール２２０にソースファイル１０３と連携して動作する。ツール連携部１２３は、ソースファイル１０３を読み込み、関数情報抽出ツール２２０及びクローンコード抽出ツール２２０にソースファイル１０３を提供し、応答として取得した出力情報をそれぞれ、関数一覧作成部１２４、クローンコード判定部１２５に提供する。なお、関数情報抽出ツール２２０及びクローンコード抽出ツール２２０は、出力情報を、関数一覧作成部１２４、クローンコード判定部１２５に直接提供しても良い。
【００４２】
関数一覧作成部１２４は、関数情報抽出ツール２２０からの情報を基に、関数一覧情報１０６を生成する。
【００４３】
クローンコード判定部１２５は、クローンコード抽出ツール２２０からの情報を基に、関数一覧情報１０６に、類似関数の情報を追加する。
【００４４】
ルール判定部１２６は、ルール設定情報１０２を基に、指摘一覧情報１０５の自動精査を行い、指摘一覧情報１０５を更新する。すなわち、ルール判定部１２６は、指摘一覧情報１０５の自動精査の後、指摘一覧情報１０５の既存情報を精査情報に変更する。
【００４５】
［指摘判定処理部の構成］
図４を参照して、指摘判定処理部１３０の構成例の詳細について説明する。
【００４６】
指摘判定処理部１３０は、変数抽出部１３１と、関連処理抽出部１３２と、類似指摘判定部１３３と、ユーザ報告部１３４を備える。
【００４７】
変数抽出部１３１は、指摘一覧情報１０５の各指摘について、関数一覧情報１０６を基に、指摘が発生している関数内で指摘されている変数と、指摘されている変数の条件分岐に関わる変数を抽出し、抽出された変数に関する情報を関連処理抽出部１３２に提供する。
【００４８】
関連処理抽出部１３２は、変数抽出部１３１から受け取った情報（抽出された変数に関する情報）を基に、関数内で関係した変数で実施される代入処理と条件分岐処理を抽出し、指摘関連変数一覧情報１０７を生成する。
【００４９】
類似指摘判定部１３３は、指摘一覧情報１０５、関数一覧情報１０６、指摘関連変数一覧情報１０７から類似指摘を抽出し、指摘一覧情報１０５に反映する。また、類似指摘判定部１３３は、ユーザ報告部１３４からのユーザ判定情報から類似指摘へユーザ判定情報を自動的に追加する。
【００５０】
ユーザ報告部１３４は、指摘一覧情報１０５と指摘関連変数一覧情報１０７の情報を連結し、連結された指摘一覧情報１０５と指摘関連変数一覧情報１０７の情報を、情報処理部１１０に提供する。
【００５１】
このとき、情報処理部１１０において、情報入力部１１１は、連結された指摘一覧情報１０５と指摘関連変数一覧情報１０７の情報を入力する。情報出力部１１２は、連結された指摘一覧情報１０５と指摘関連変数一覧情報１０７の情報をユーザに通知する。情報入力部１１１は、ユーザ入力情報１０１として、連結された指摘一覧情報１０５と指摘関連変数一覧情報１０７に関する判定情報を入力する。情報出力部１１２は、入力された判定情報をユーザ報告部１３４に提供する。
【００５２】
ユーザ報告部１３４は、情報出力部１１２から取得した判定情報を、類似指摘判定部１３３に提供する。
【００５３】
［ハードウェアの例示］
以下に、本発明に係る判定作業支援システムを構成する具体的なハードウェアの例について説明する。
【００５４】
情報処理部１１０、初期処理部１２０、及び指摘判定処理部１３０の例として、ＰＣ（パソコン）、アプライアンス（ａｐｐｌｉａｎｃｅ）、シンクライアントサーバ、ワークステーション、メインフレーム、スーパーコンピュータ等の計算機を想定している。なお、情報処理部１１０、初期処理部１２０、及び指摘判定処理部１３０は、端末やサーバに限らず、中継機器や周辺機器でも良い。また、情報処理部１１０、初期処理部１２０、及び指摘判定処理部１３０は、計算機等に搭載される拡張ボードや、物理マシン上に構築された仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）でも良い。情報処理部１１０、初期処理部１２０、及び指摘判定処理部１３０は、車両や船舶、航空機等の移動体に搭載されていても良い。
【００５５】
また、本発明に係る判定作業支援システム自体が、単体の計算機等であっても良い。
【００５６】
図示しないが、上記のような計算機は、プログラムに基づいて駆動し所定の処理を実行するプロセッサと、当該プログラムや各種データを記憶するメモリと、ネットワークとの通信に用いられるインターフェースによって実現される。
【００５７】
上記のプロセッサの例として、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ネットワークプロセッサ（ＮＰ：Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ）、マイクロプロセッサ（ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ）、マイクロコントローラ、或いは、専用の機能を有する半導体集積回路（ＩＣ：Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等が考えられる。
【００５８】
上記のメモリの例として、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ等の半導体記憶装置、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の補助記憶装置、又は、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のリムーバブルディスクや、ＳＤメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  ｍｅｍｏｒｙ  ｃａｒｄ）等の記憶媒体（メディア）等が考えられる。また、バッファ（ｂｕｆｆｅｒ）やレジスタ（ｒｅｇｉｓｔｅｒ）でも良い。或いは、ＤＡＳ（Ｄｉｒｅｃｔ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＦＣ−ＳＡＮ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）、ＩＰ−ＳＡＮ（ＩＰ  −  Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等を用いたストレージ装置でも良い。
【００５９】
なお、上記のプロセッサ及び上記のメモリは、一体化していても良い。例えば、近年では、マイコン等の１チップ化が進んでいる。従って、電子機器等に搭載される１チップマイコンが、上記のプロセッサ及び上記のメモリを備えている事例が考えられる。
【００６０】
上記のインターフェースの例として、ネットワーク通信に対応した基板（マザーボード、Ｉ／Ｏボード）やチップ等の半導体集積回路、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）等のネットワークアダプタや同様の拡張カード、アンテナ等の通信装置、接続口（コネクタ）等の通信ポート等が考えられる。
【００６１】
また、ネットワークの例として、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、無線ＬＡＮ（Ｗｉｒｅｌｅｓｓ  ＬＡＮ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、バックボーン（Ｂａｃｋｂｏｎｅ）、ケーブルテレビ（ＣＡＴＶ）回線、固定電話網、携帯電話網、ＷｉＭＡＸ（ＩＥＥＥ  ８０２．１６ａ）、３Ｇ（３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ）、専用線（ｌｅａｓｅ  ｌｉｎｅ）、ＩｒＤＡ（Ｉｎｆｒａｒｅｄ  Ｄａｔａ  Ａｓｓｏｃｉａｔｉｏｎ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、シリアル通信回線、データバス等が考えられる。
【００６２】
なお、情報処理部１１０、初期処理部１２０、及び指摘判定処理部１３０内の各部（内部構成）は、モジュール（ｍｏｄｕｌｅ）、コンポーネント（ｃｏｍｐｏｎｅｎｔ）、或いは専用デバイス、又はこれらの起動（呼出）プログラムでも良い。
【００６３】
また、情報処理部１１０の情報入力部１１１の例として、ＫＶＭ（キーボード・ビデオ・マウス）、コンソール（ｃｏｎｓｏｌｅ）、キーパッド（ｋｅｙｐａｄ）、タッチパネル（ｔｏｕｃｈ  ｐａｎｅｌ）、タブレット（ｔａｂｌｅｔ）等の入力装置、又は、各種の情報伝達媒体の読取装置が考えられる。或いは、情報入力部１１１は、外部の入力装置や記憶装置等から情報を取得するためのインターフェース（Ｉ／Ｆ：ｉｎｔｅｒｆａｃｅ）でも良い。
【００６４】
また、情報処理部１１０の情報出力部１１２の例として、ＬＣＤ（液晶ディスプレイ）やＰＤＰ（プラズマディスプレイ）、有機ＥＬディスプレイ（ｏｒｇａｎｉｃ  ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ  ｄｉｓｐｌａｙ）等の表示装置、出力内容を用紙等に印刷するプリンタ等の印刷装置、又は、出力内容を壁やスクリーンに投影するプロジェクタ等の映写装置等が考えられる。或いは、情報出力部１１２は、外部の表示装置や記憶装置等に情報を出力するためのインターフェース（Ｉ／Ｆ）でも良い。すなわち、情報出力部１１２は、何らかの出力装置であれば良い。
【００６５】
但し、実際には、これらの例に限定されない。
【００６６】
［本発明における処理手順］
次に、本発明における初期処理の手順、及び、類似指摘の判定処理の手順の詳細について説明する。
【００６７】
［前提条件］
先に、本発明における各手順の前提条件について説明する。
【００６８】
ツール指摘情報１０４のデータフォーマットは、事前に本発明に係る判定作業支援システムに登録され、解析可能なものとする。
【００６９】
また、関数情報抽出ツール２２０、クローンコード抽出ツール２２０からの出力データのフォーマットや内容も、事前に本発明に係る判定作業支援システムに登録され、解析可能なものとする。
【００７０】
また、ユーザは、ソースコード検証ツール２１０を熟知しており、ルールの設定が可能なものとする。すなわち、ユーザは、ルール設定情報１０２の内容を記述できる。
【００７１】
［初期処理の手順］
図５を参照して、本発明における初期処理の手順について説明する。
【００７２】
（１）ステップＳ１０１
まず、情報処理部１１０において、情報入力部１１１は、ユーザ操作に応じてユーザ入力情報１０１を入力し、ユーザ入力情報１０１を基にルール設定情報１０２を出力する。情報出力部１１２は、情報入力部１１１からのルール設定情報１０２を入力し、初期処理部１２０に出力する。
【００７３】
（２）ステップＳ１０２
次に、初期処理部１２０において、初期処理部１２０の情報取得部１２１は、ルール設定情報１０２を取得する。なお、情報取得部１２１は、情報処理部１１０からユーザ入力情報１０１を受信し、ユーザ入力情報１０１を基にルール設定情報１０２を作成しても良い。また、情報取得部１２１は、ソースコード検証ツール２１０から、ルール設定情報１０２と、ソースファイル１０３と、ツール指摘情報１０４を受信しても良い。
【００７４】
（３）ステップＳ１０３
次に、指摘抽出部１２２は、ツール指摘情報１０４を読み取り、指摘一覧情報１０５を作成する。なお、指摘抽出部１２２は、ソースコード検証ツール２１０から出力されたツール指摘情報１０４を直接入力しても良い。
【００７５】
（４）ステップＳ１０４
次に、ツール連携部１２３は、ソースファイル１０３を読み込む。なお、ツール連携部１２３は、ソースコード検証ツール２１０から出力されたソースファイル１０３を直接入力しても良い。また、ツール連携部１２３は、ソースコード検証ツール２１０と同時に、ソースファイル１０３を読み込んでも良い。或いは、ツール連携部１２３は、ソースコード検証ツール２１０に、ソースファイル１０３を提供しても良い。
【００７６】
（５）ステップＳ１０５
次に、ツール連携部１２３は、ソースファイル１０３を関数情報抽出ツール２２０に提供し、関数情報抽出ツール２２０から実行結果（関数情報）を取得し、関数情報抽出ツール２２０の実行結果（関数情報）を、関数一覧作成部１２４に入力する。
【００７７】
（６）ステップＳ１０６
関数一覧作成部１２４は、関数情報抽出ツール２２０の実行結果（関数情報）を基に、関数一覧情報１０６を生成する。
【００７８】
（７）ステップＳ１０７
次に、ツール連携部１２３は、ソースファイル１０３をクローンコード抽出ツール２２０に提供し、クローンコード抽出ツール２２０から実行結果（類似コード情報）を取得し、クローンコード抽出ツール２２０の実行結果（類似コード情報）をクローンコード判定部１２５に入力する。
【００７９】
（８）ステップＳ１０８
次に、クローンコード判定部１２５は、クローンコード抽出ツール２２０の実行結果（類似コード情報）を基に、関数一覧情報１０６に含まれる類似コードを持つ関数を判定する。
【００８０】
（９）ステップＳ１０９
次に、ルール判定部１２６は、ルール設定情報１０２を参照して、指摘一覧情報１０５のうち、精査の必要がない指摘（精査対象外の指摘）の判定を行う。
【００８１】
これで、初期処理が完了する。
【００８２】
［類似指摘判定・ユーザ精査処理の手順］
図６を参照して、類似指摘を判定し、ユーザが精査作業をするまでの処理の手順について説明する。
【００８３】
（１）ステップＳ２０１
まず、指摘判定処理部１３０において、変数抽出部１３１は、指摘一覧情報１０５、関数一覧情報１０６を取得し、指摘箇所の関数内のソースコードを抽出し、指摘箇所から、「問題となる変数」、「プログラムのプロセス上、問題となる変数に代入を行う変数」、及び「条件分岐に利用される変数」を抽出し、抽出された各変数の情報を関連処理抽出部１３２に提供する。
【００８４】
（２）ステップＳ２０２
次に、関連処理抽出部１３２は、指摘判定処理部１３０により抽出された各変数の情報を基に、「関数内で各変数が実施された処理」と「宣言位置」を特定する。ここでは、関連処理抽出部１３２は、変数が実施された処理について、プログラム中で当該変数が利用された箇所を遡って全て抽出する。また、関連処理抽出部１３２は、ローカル変数（関数内で宣言）、関数の引数、グローバル変数の種別を判定し、各変数の宣言位置を特定する。なお、関連処理抽出部１３２は、対象となる変数が、ローカル変数、関数の引数のいずれでもない場合に、グローバル変数の宣言位置を特定する。
【００８５】
（３）ステップＳ２０３
次に、関連処理抽出部１３２は、上記の変数、宣言位置、処理内容を一覧にまとめて（集約・統合して）、指摘関連変数一覧情報１０７を作成する。
【００８６】
（４）ステップＳ２０４
次に、類似指摘判定部１３３は、指摘一覧情報１０５、関数一覧情報１０６、及び指摘関連変数一覧情報１０７を取得し、指摘一覧情報１０５中の同じルールで検証された２つの指摘の類似チェックを実施する。ここでは、類似指摘判定部１３３は、関数一覧情報１０６の類似情報と、指摘関連変数一覧情報１０７の情報の宣言位置及び処理内容の情報との２つの情報を基に、２つの指摘が類似であるか判定する。
【００８７】
（５）ステップＳ２０５
次に、類似指摘判定部１３３は、類似と判定された指摘について、指摘一覧情報１０５に類似判定情報を追加する。
【００８８】
（６）ステップＳ２０６
次に、ユーザ報告部１３４は、指摘一覧情報１０５と指摘関連変数一覧情報１０７を、情報処理部１１０の情報出力部１１２に提供し、ユーザ側の表示装置に一覧を表示する。
【００８９】
（７）ステップＳ２０７
次に、ユーザは、指摘一覧情報１０５と指摘関連変数一覧情報１０７の情報を基に、指摘の実バグ、非バグについて精査を実施する。このとき、情報処理部１１０の情報入力部１１１は、ユーザ操作に応じてユーザ入力情報１０１を入力し、ユーザ入力情報１０１を基に精査結果を作成する。情報処理部１１０の情報出力部１１２は、精査結果をユーザ報告部１３４に提供する。ユーザ報告部１３４は、精査結果を、類似指摘判定部１３３に提供する。
【００９０】
（８）ステップＳ２０８
次に、類似指摘判定部１３３は、ユーザ報告部１３４から受け取った情報（精査結果）と、指摘一覧情報１０５の類似フラグの情報を基に、精査された指摘と類似した指摘を、同じ精査結果に更新する。すなわち、類似指摘判定部１３３は、精査結果に応じて、指摘一覧情報１０５を更新する。
【００９１】
（９）ステップＳ２０９
類似指摘判定部１３３は、指摘一覧情報１０５の更新後、精査されていない指摘が存在するか確認する。類似指摘判定部１３３は、精査されていない指摘が存在する場合、ユーザ報告部１３４での作業を再開する。ユーザ報告部１３４は、再度、指摘一覧情報１０５と指摘関連変数一覧情報１０７を、情報処理部１１０の情報出力部１１２に提供し、ユーザ側の表示装置に一覧を表示する。また、類似指摘判定部１３３は、精査されていない指摘が存在しない（全て精査されている）場合、作業を完了する。
【００９２】
これで、類似指摘判定とユーザの精査作業が完了する。
【００９３】
上記のように処理することで、類似した指摘に対する重複した精査作業を防ぎ、精査作業を削減することができる。
【００９４】
また、精査結果を即時反映することにより、他者の精査結果との整合性も保たれるようになる。
【００９５】
＜本発明の特徴＞
以上のように、本発明に係る判定作業支援システムは、プログラムのソースコードの検証の際、ソースコード検証ツールが発見した指摘に対して精査を実施する作業を支援し、作業効率を向上するシステムである。
【００９６】
本発明に係る判定作業支援システムでは、検証結果の指摘についてクローンコードと推定されるコードの情報を基に、各指摘において代入処理や条件分岐といった問題発生に関わる処理を抽出する。また、コードの類似性と問題発生に関わる処理を利用し、検証結果の類似指摘を予めまとめておく（事前に統一しておく）。また、ユーザが指摘を精査した時に、類似指摘が同じ精査結果となるよう処理することで、類似指摘の重複精査作業の削減による精査作業の削減と、担当者による異なった精査の防止を支援する。
【００９７】
本発明に係る判定作業支援システムは、コードクローンツールの類似情報、指摘に関するプログラム処理内容の２点から、類似指摘を判別する。
【００９８】
また、本発明に係る判定作業支援システムは、類似指摘を判別し、内部に情報を保持することで随時ユーザの精査結果を指摘一覧に反映する。
【００９９】
本発明では、ソースコード検証ツールに依存せず、コードの類似性と、ソースコード検証ツールの指摘における、関連変数の処理の類似性から高精度で類似となる指摘を抽出し、余計な精査作業を無くすことを可能としている。
【０１００】
これにより、精査作業のコストが削減されるため、大規模なソースコードの検証結果の精査をすることが可能になる。
【０１０１】
＜備考＞
以上、本発明の実施形態を詳述してきたが、実際には、上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
【符号の説明】
【０１０２】
１０１…  ユーザ入力情報
１０２…  ルール設定情報
１０３…  ソースファイル
１０４…  ツール指摘情報
１０５…  指摘一覧情報
１０６…  関数一覧情報
１０７…  指摘関連変数一覧情報
１１０…  情報処理部
１１１…  情報入力部
１１２…  情報出力部
１２０…  初期処理部
１２１…  情報取得部
１２２…  指摘抽出部
１２３…  ツール連携部
１２４…  関数一覧作成
１２５…  クローンコード判定部
１２６…  ルール判定部
１３０…  指摘判定処理部
１３１…  変数抽出部
１３２…  関連処理抽出部
１３３…  類似指摘判定部
１３４…  ユーザ報告部
【図１】
0005757167.tif 000002
【図２】
0005757167.tif 000003
【図３】
0005757167.tif 000004
【図４】
0005757167.tif 000005
【図５】
0005757167.tif 000006
【図６】
0005757167.tif 000007