(57)【要約】【課題】ソースコードの検閲ツールを使用する際にプログラム言語に依存しない検閲結果を提供し、検閲担当者の作業効を向上させる。【解決手段】検閲ツール切り替え装置102、検閲ツール情報保持DB103、検閲結果106を出力するJava用検閲ツール104、検閲結果107を出力するVB.NET用検閲ツール105、ツール毎の検閲結果106、107を正規化する検閲結果正規化装置108、検閲情報DB109を備えて実施される。検閲ツール切り替え装置102は、検閲担当者101に検閲対象のプログラム言語や検閲ツールへの情報の入力を促し、検閲ツールを起動する。検閲ツール情報保持DB103は、検閲ツールを起動するために必要な入力情報や起動する検閲ツールを保持している。検閲ツール切り替え装置102は、検閲担当者が入力した情報を基に、プログラム言語に適した検閲ツールを起動する。検閲結果正規化装置108は、検閲情報DB109に保持されている情報を参照し、各検閲ツールからの検閲結果106、107を正規化して検閲結果110として出力する。【選択図】      図１
2006318104.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードの検閲方法において、検閲ツールを判定する情報を保存する検閲ツール情報保持データベースから検閲対象とするソースコードのプログラム言語を判定して、検閲を実行する検閲ツールを切り替えることを特徴とするソースコード検閲方法。
【請求項２】
各プログラム言語に対応した検閲ツールによる検閲処理結果を、ユーザが判別可能に正規化して表示することを特徴とする請求項１記載のソースコード検閲方法。
【請求項３】
前記正規化は、各プログラム言語に対応した検閲ツールによる検閲処理結果から情報を抽出することにより、プログラム言語に依存しない検閲結果を生成する処理であることを特徴とする請求項２記載のソースコード検閲方法。
【請求項４】
前記プログラム言語に依存しない検閲結果の生成は、検閲情報データベースを利用して行われることを特徴とする請求項３記載のソースコード検閲方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード検閲方法に係り、特に、プログラムのソースコードの品質を検閲するために用いて好適でプログラム言語に依存することのないソースコード検閲方法に関する。
【背景技術】
【０００２】
従来、ソフトウェア開発者は、机上デバッグと呼ばれるソースコードの内容を１行ずつ追いかける目視確認による作業を行うことによりソースコードの処理のミスを摘出していた。このような机上デバッグ時の目視確認による検閲は、担当者がソースコードの内容の論理を追い続ける作業を行うため、担当者が意識していないミスに気付かず、実際のプログラムを動かしたときに、動作不正が発覚することが多い。
【０００３】
前述したような問題を解決することのできる従来技術として、例えば、特許文献１等に記載された技術が知られている。この従来技術は、ソースコードの論理構造を利用、解析することができるコーディングミス等を検出するソースコード検閲ツールを使用するというものである。このような検閲ツールは、この検閲ツールを使用することにより、短時間で多くのソースコードの検閲を行うことを可能にすることができるため、今日では、このようなソースコードの検閲の技術は、ソフトウェアのバグを発見することを目的とする以外に、ソフトウェアの開発プロジェクトを管理するプロジェクトマネージャや、他企業に開発業務を委託したとき等に、大量のソースコードの品質の一括検閲にも利用されつつある。
【０００４】
また、一般に、１つのソフトウェア開発プロジェクトで使用されるプログラム言語が１つの言語だけということはまれである。なぜならば、プログラム言語には、それぞれ特徴、得意とする処理があるため、適材適所で選択されるからである。
【０００５】
ここで、特許文献２に記載された方法を利用すると、入力されるソースコードの言語を判断して、利用する検閲ツールを選択し実行することができる。しかし、この特許文献２に記載の方法は、入力データのプログラミング言語を判断し、ソースコードのステップ数という単純な事柄を計測するに過ぎないものである。
【特許文献１】特開２００２−３４２１１０号公報
【特許文献２】特開２００３−３１６５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献２に示される従来技術でのステップ数の計測は、計測ツールや計測対象言語が何であろうとも、出力結果に誤りが発生することはない。
【０００７】
しかし、この従来技術は、複数のプログラム言語に対する検閲作業を行う場合、各検閲ツールでの入出力情報を検閲作業者が把握して作業をしなければならないため、言語の数だけの検閲作業をしなければならず、使用方法を覚えなければならないという作業工数の増大を理由として検閲が行われないことや、検閲結果を誤って認識してしまい、検閲結果を有効に利用できていないという問題を発生させている。
【０００８】
また、特許文献２に記載の従来技術は、各言語毎にそれぞれ検閲ツールが備えられるため、プロジェクトマネージャや委託作業の発注者等の検閲作業を行う者が、プログラム言語毎に、入力データや検閲結果の見方を意識的に変更する必要があり、前述したような問題を誘発する可能性が大きいという問題点を有している。
【０００９】
本発明の目的は、前述した従来技術の問題点を解決し、ソースコードの検閲ツールを使用する際にプログラム言語に依存しない検閲結果を提供することができ、検閲担当者の作業効率を向上させることができるソースコード検閲方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明によれば前記目的は、ソースコードの検閲方法において、検閲ツールを判定する情報を保存する検閲ツール情報保持データベースから検閲対象とするソースコードのプログラム言語を判定して、検閲を実行する検閲ツールを切り替えることにより達成される。
【００１１】
より、具体的には、本発明は、プログラム言語に合った検閲ツールを判定するために利用する情報を保持する「ツール情報保持データベース」と、入力された情報を基にプログラム言語に適した検閲ツールを起動する「検閲ツール切り替え装置」と、プログラム言語に依存しない検閲結果を生成するための情報を保持する「検閲情報データベース」と、検閲情報データベースとプログラム言語毎の検閲結果とを基に、プログラム言語に依存しない検閲結果を生成し、出力したり表示したりする「検閲結果正規化装置」とを備えて実行される。
【発明の効果】
【００１２】
本発明によれば、検閲担当者は、本発明によるソースコード検閲方法を利用することにより、多種多様なプログラム言語を用いて開発されるソフトウェアであっても、開発対象となっている全領域に対する検閲を行うことが可能になる。また、プログラム言語毎に見方を変える必要もなく、効率よくソースコードの検閲を行うことができるようになる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明によるソースコード検閲方法の実施形態を図面により詳細に説明する。
【００１４】
図１は本発明の一実施形態によるソースコード検閲方法を実行する装置の構成を示すブロック図である。図１において、１００はソースコード検閲装置、１０１は検閲担当者、１０２は検閲ツール切り替え装置、１０３は検閲ツール情報保持データベース、１０４はＪａｖａ（登録商標、以下、全てについて同様）用検閲ツール、１０５はＶＢ．ＮＥＴ用検閲ツール、１０６、１０７はツール毎の検閲結果、１０８は検閲結果正規化装置、１０９は検閲情報データベース、１１０は正規化した検閲結果である。
【００１５】
本発明の一実施形態による方法を実行するソースコード検閲装置１００は、検閲ツール切り替え装置１０２と、検閲ツール情報保持データベース１０３と、検閲結果１０６を出力するＪａｖａ用検閲ツール１０４と、検閲結果１０７を出力するＶＢ．ＮＥＴ用検閲ツール１０５と、ツール毎の検閲結果１０６、１０７を正規化する検閲結果正規化装置１０８と、検閲情報データベース１０９とにより構成される。検閲担当者１０１は、このように構成されるソースコード検閲装置１００を使用して、ソースコードの検閲を行う。
【００１６】
前述において、検閲ツール切り替え装置１０２は、検閲担当者１０１に検閲対象のプログラム言語や検閲ツール１０４、１０５への入力情報の入力を促したり、検閲ツール１０４、１０５を起動する。検閲ツール情報保持データベース１０３は、検閲ツール１０４、１０５を起動するために必要な入力情報や起動する検閲ツールを保持している。
【００１７】
検閲ツール切り替え装置１０２は、検閲担当者１０１が入力した情報を基に、プログラム言語に適した検閲ツールを起動する。図１に示している検閲ツールは、Ｊａｖａ用検閲ツール１０４、ＶＢ．ＮＥＴ用検閲ツール１０５の２つであるが、他のプログラム言語のツールであってもよい。
【００１８】
Ｊａｖａ用検閲ツール１０４、ＶＢ．ＮＥＴ用検閲ツール１０５は、それぞれ、Ｊａｖａ用検閲ツール１０４の検閲結果１０６、ＶＢ．ＮＥＴ用検閲ツール１０５の検閲結果１０７を出力する。検閲結果正規化装置１０８は、検閲情報データベース１０９に保持されている情報を参照して、Ｊａｖａ用検閲ツール１０４の検閲結果１０６やＶＢ．ＮＥＴ用検閲ツール１０５の検閲結果１０７を正規化した検閲結果１１０として出力する。
【００１９】
図２は検閲担当者がソースコード検閲装置１００を使用して検閲作業を行う場合の作業処理の動作を説明するフローチャートであり、次に、これについて説明する。
【００２０】
ステップ２０１の処理において、まず、検閲担当者１０１は、検閲対象とするプログラミング言語を、検閲ツール切り替え装置１０２に対して指定する。この処理の一番簡単な方法は、検閲ツール切り替え装置１０２の起動時にパラメータとして与える方法である。例えば、ソフトウェアがＷｅｂアプリケーションで構成されているならば、ＵＲＬ（Uniform Resource Locator）の最後にプログラム言語を指定してアクセスすることにより行うことが可能である。具体的には、検閲ツール切り替え装置１０２のＵＲＬが「ｈｔｔｐ：／／ｓａｍｐｌｅ／ｉｎｓｐｅｃｔｉｏｎ」で、プログラム言語が「Ｊａｖａ」で、その指定方法が「ＬＡＮＧ＝Ｊａｖａ」である場合には、Ｗｅｂブラウザ等のＷｅｂアプリケーションを利用できるアプリケーションを使用して、「ｈｔｔｐ：／／ｓａｍｐｌｅ／ｉｎｓｐｅｃｔｉｏｎ？ＬＡＮＧ＝ｊａｖａ」と指定し、Ｗｅｂアプリケーションにアクセスすればよい。
【００２１】
図３は検閲ツール切り替え装置１０２の処理動作を説明するフローチャートであり、ここで、前述したステップ２０１での処理の詳細を説明する。なお、ここで説明する検閲ツール切り替え装置１０２の処理動作は、検閲担当者１０１によりプログラム言語情報が入力されてから、各プログラム言語に対応した検閲ツールを起動するために必要な情報の入力を促すユーザインタフェースを表示するまでの処理動作である。
【００２２】
ステップ３０１の処理において、検閲ツール切り替え装置１０２は、検閲担当者１０１により入力されたプログラム言語情報を取得する。
【００２３】
次に、ステップ３０２の処理で、検閲ツール切り替え装置１０２は、ステップ３０１の処理で取得したプログラム言語を使用して、ツール情報保持データベース１０３の内容を検索し、各プログラム言語に対応した検閲ツールを使用するために必要な情報を取得する。
【００２４】
図４はツール情報保持データベース１０３に保持されている情報の内容を説明する図であり、ここで、ツール情報保持データベース１０３に保持されている情報について説明する。
【００２５】
ツール情報保持データベース１０３に保持されている情報４００は、複数のレコードにより構成され、各レコードには、ＩＤ４０１、プログラム言語４０２、カテゴリ４０３、ツール４０７、説明４０４の各項目が記述されている。
【００２６】
そして、ＩＤ４０１は、レコードを一意に判別するために割り振られた記号である。図４に示す例では、数値を割り当てているが、一意に判別可能であればどのような形式で割り当てられてもよい。
【００２７】
プログラム言語４０２は、検閲担当者１０１が、検閲ツール切り替え装置１０２に対して指定するプログラミング言語である。図４に示す例では、「Ｊａｖａ」と「ＶＢ．ＮＥＴ」とを示しているが、どのような言語でもよい。仮に検閲ツールが存在しないプログラム言語であっても、検閲を行わないだけなので問題は発生しない。
【００２８】
カテゴリ４０３は、検閲ツール切り替え装置１０２が検閲担当者１０１に対して、要求する入力データの形式である。図４に示す例では、「Ｆｉｌｅ」と「Ｔｅｘｔ」とで表現されている。Ｆｉｌｅは、検閲ツール切り替え装置１０２がファイル形式で受け取り、それを処理して各プログラム言語に対応した検閲ツールに渡すことを表している。また、Ｔｅｘｔは、検閲ツール切り替え装置１０２が文字列形式で受け取り、それを処理して各プログラム言語に対応した検閲ツールに渡すことを表している。図４に示す例では、ＦｉｌｅとＴｅｘｔとだけであるが、例えば、数字形式やメール形式で受け取り、各プログラム言語に対応した検閲ツールを起動するようにしてもよい。
【００２９】
説明４０４は、検閲担当者が検閲ツール切り替え装置１０２に情報を入力する際に促すメッセージを保持する領域である。メッセージを表示することにより、検閲担当者は、間違えることなく情報を入力することができる。
【００３０】
ツール４０７は、起動するべき検閲ツールを表している。図４に示す例の場合、プログラム言語４０２がＪａｖａのとき、Ａという検閲ツール、ＶＢ．ＮＥＴのとき、Ｂという検閲ツールを使用することを表している。
【００３１】
レコード４０５は、前述したステップ３０１で検閲担当者１０１がプログラム言語として「Ｊａｖａ」を指定したとき、検閲担当者１０１に対し送信する情報の１つを表している。このレコード４０５では、検閲担当者からファイルとして受け取ること、入力を促す際に表示するメッセージは、「ｓｒｃフォルダを作成し、その中にソースコード全てを入れてｚｉｐ形式に圧縮して送信してください」であることを表している。
【００３２】
また、前述したステップ３０２の処理では、ステップ３０１で取得したプログラム言語を使用して、検閲担当者１０１に入力を促すため表示する情報を取得する。具体的には、ツール情報保持データベース１０３のプログラム言語を検索し、対応するすべてのレコードを取得する。例えば、ツール情報保持データベース１０３が、リレーショナルデータベースで構築されているとき、リレーショナルデータベースを操作することができるＳＱＬ（Structured Query Language）という言語を使用することにより取得することができる。そして、ツール情報保持データベース１０３からＪａｖａに関係する情報を取得するためのＳＱＬは、「ｓｅｌｅｃｔ  ＩＤ，カテゴリ，説明  ｆｒｏｍ  ツール情報保持データベース  ｗｈｅｒｅ  プログラム言語＝‘Ｊａｖａ’」４０８となる。
【００３３】
このＳＱＬについて説明すると、「ｓｅｌｅｃｔ」、「ｆｒｏｍ」、「ｗｈｅｒｅ」は、ＳＱＬの命令語である。「ｓｅｌｅｃｔ」は、リレーショナルデータベースからレコードを取得することを意味する。また、「ｆｒｏｍ」直後の「ツール情報保持データベース」４０９は、対象となるデータベースを表す。また、「ｗｈｅｒｅ」の後は抽出条件を表し、本発明の実施形態での意味は、「プログラム言語」４１０が「Ｊａｖａ」４１１であるレコードを対象にすることである。また、「ｓｅｌｅｃｔ」直後の「ＩＤ，カテゴリ，説明」４１２は、抽出条件により対象となったレコードの中で、処理のために必要な項目を指定している。説明している本発明の実施形態の場合、検閲ツール切り替え装置１０２は、ＩＤとカテゴリと説明との情報を使用するため、これら３つの項目を取得することを示している。
【００３４】
次に、具体的にＳＱＬを実行したときに取得する情報についての説明をする。ツール情報保持データベース１０２に対して、前述したＳＱＬを実行すると、ツール情報保持データベース１０２に保存されている情報４００のうち、対象となるレコードとしては、「プログラム言語」が「Ｊａｖａ」であるレコードなので、具体的には、ＩＤが「０００１」、「０００２」、「０００３」の３つのレコードである。また、対象レコードから取得する情報は、「ＩＤ」、「カテゴリ」、「説明」の３つの項目である。ＳＱＬを実行した具体的な結果は、図４の中に４１３に示す通りのものとなる。
【００３５】
検閲ツール切り替え装置１０２は、ＳＱＬにより取得した情報から、ＩＤ４０１とカテゴリ４０３と説明４０４との領域に記憶されているツールを起動するために必要な情報を取得する。本発明の実施形態の場合は、ＳＱＬにより３つのレコードが取得されており、検閲ツールを起動するために必要な情報として、「０００１」と「Ｆｉｌｅ」と「ｓｒｃフォルダを作成し、その中にソースコード全てを入れてｚｉｐ形式に圧縮して送信してください」との組み合わせ、「０００２」と「Ｆｉｌｅ」と「ｌｉｂフォルダを作成し、その中にコンパイルに必要なライブラリを入れてｚｉｐ形式に圧縮して送信してください」との組み合わせ、「０００３」と「Ｔｅｘｔ」と「ＪＤＫのバージョン名を指定してください」との組み合わせの合計３つを取得することができる。検閲ツール切り替え装置１０２は、ここで取得した３つの組み合わせを、ツールを起動するために検閲担当者１０１に対し入力を促す情報として、また、入力された情報により検閲ツールを切り替えるために使用する。
【００３６】
前述まででステップ３０２での処理が終了したことになり、次に、ステップ３０３の処理を行う。ステップ３０３の処理では、ステップ３０２の処理で取得した情報を、検閲担当者に対して表示する処理を行う。検閲担当者に対しては、情報の入力を促す画面が表示され、このステップ３０３での処理が終了すると、ステップ２０２の処理を実行する。
【００３７】
図５は前述のステップ３０３の処理で検閲担当者に対して表示した表示画面の一例を示す図であり、ステップ２０２の処理では、検閲担当者が、この表示画面に従って必要な情報の入力を行うことになる。次に、図５に示す表示画面を用いて情報の入力を行う操作について説明する。ここで説明している本発明の実施形態は、検閲ツール切り替え装置１０２は、Ｗｅｂアプリケーションであるとしているので、表示画面をＨＴＭＬ（Hyper Text Markup Language）として生成しＷｅｂブラウザを使用して検閲担当者に表示する。
【００３８】
図５において、文字列Ｊａｖａ５０１は、前述したステップ２０１の処理で、プログラミング言語としてＪａｖａが指定されたことを表している。
【００３９】
入力領域５０２は、メッセージ５０３に従って情報の入力を行う領域であり、メッセージ５０３に従うと、ソースコードをｚｉｐ形式に圧縮したファイルを指定することになる。検閲ツール切り替え装置１０２は、Ｗｅｂブラウザが、ファイルを送信するための入力欄を表示すると共に、ファイルを送信するためのＨＴＭＬとして、ＨＴＭＬで定義されているｉｎｐｕｔタグを使用し、属性として、ファイルを扱うことを表すｔｙｐｅ＝“ｆｉｌｅ”と、検閲ツール切り替え装置１０２が処理中に、どの項目なのかを識別するｎａｍｅ＝“０００１”を使ったＨＴＭＬとをＷｅｂブラウザに送り表示する。属性のｔｙｐｅには、取得したカテゴリを、また、ｎａｍｅにはＩＤを使用する。そして、そのすぐ次には、取得した説明「ｓｒｃフォルダを作成し、その中にソースコード全てを入れてｚｉｐ形式に圧縮して送信してください」を表示する。ここで説明している実施形態では、後の説明のためにｓｏｕｒｃｅ．ｚｉｐを指定したことにする。
【００４０】
同様に、入力領域５０４には、コンパイルをする際に必要になるライブラリをｚｉｐ形式でまとめたファイルを指定することを促すメッセージに従った情報を入力する。説明している例では、識別するための文字列として、ＩＤ使うので「０００２」とする。また、この入力領域には、後の説明のためにｌｉｂｒａｒｙ．ｚｉｐを指定したことにする。
【００４１】
同様に、入力領域５０５には、ＪＤＫ（Java Development Kit）のバージョンを指定することを促すメッセージに従った情報を入力する。検閲ツール切り替え装置１０２は、Ｗｅｂブラウザが、文字列を送信するための入力欄を表示すると共に、文字列を送信するためのＨＴＭＬとして、ＨＴＭＬで定義されているｉｎｐｕｔタグを使用し、属性として、ｔｙｐｅ＝“ｔｅｘｔ”であり、どの項目なのかを識別するための属性として、ｎａｍｅ＝“０００３”を使用したＨＴＭＬをＷｅｂブラウザに送り表示する。また、同様に、説明「ＪＤＫのバージョン名を指定してください」を表示する。ここで説明している例では、後の説明のために、バージョン１．４を指定したことにする。
【００４２】
検閲担当者は、検閲ツール切り替え装置により促された情報を入力した後、送信ボタン５０６を押下する。するとＷｅｂブラウザの機能により、検閲ツール切り替え装置に入力された情報が送信される。
【００４３】
前述で説明したステップ２０２での処理が終了すると、検閲ツール切り替え装置１０２は、ステップ２０２の処理で入力された情報に従ってプログラム言語に対応した検閲ツールを起動し、検閲結果を取得する処理を実行することになる。
【００４４】
図６は検閲ツール切り替え装置１０２が各プログラム言語に対応した検閲ツールを起動し、検閲結果を取得するまでの処理動作を説明するフローチャートであり、次に、これについて説明する。
【００４５】
まず、ステップ６０１の処理において、ステップ２０２の処理で検閲担当者が入力した情報を取得する。説明している実施形態の場合、ソース、ライブラリをそれぞれ含んだ２つのｚｉｐ形式のファイルとＪＤＫのバージョンを表す文字列とを取得する。具体的には、すでに説明したように、ソースファイルは、ｚｉｐ形式のｓｏｕｒｃｅ．ｚｉｐであり、検閲ツール切り替え装置１０２は、識別するための文字列「０００１」で取得し、同様にライブラリは、ｚｉｐ形式のｌｉｂｒａｒｙ．ｚｉｐであり、これを識別するための文字列「０００２」で取得し、同様にＪＤＫのバージョンは、１．４であり、これを識別するための文字列「０００３」で受け取る。
【００４６】
ステップ６０１の処理が終了すると、ステップ６０２の処理に進み、ステップ６０２の処理において、ステップ６０１の処理で取得した情報に基づいて、各プログラム言語に対応した検閲ツールを起動するために、起動する検閲ツールと引き数の順序とを取得する処理を行う。
【００４７】
具体的には、ツール情報保持データベース１０３からプログラム言語４０２を使用して起動するべきツールを取得し、検閲担当者により入力された情報を渡す順序を取得する。すでに説明したように、ＳＱＬ文を使用することにより「ツール情報保持データベース１０３」から必要な情報を取得することができる。本発明の実施形態では、引き数の順序をＩＤの順とすることとする。すると、ＳＱＬ文は、図４に４１４として示すように、「Ｓｅｌｅｃｔ  ＩＤ，ツール  ｆｒｏｍ  ツール情報保持データベース  ｗｈｅｒｅ  プログラム言語＝“Ｊａｖａ”  ｏｒｄｅｒ  ｂｙ  ＩＤ」となる。
【００４８】
ＳＱＬ文４１４の意味は、「ツール情報保持データベース」から条件として「プログラム言語」が「Ｊａｖａ」であるレコードを対象レコードとし、取得する情報が「ＩＤ」と「ツール」とであることを表している。ここの処理では、それに加えて、引き数の順序を正確に取得する必要があるため、「ｏｒｄｅｒ  ｂｙ  ＩＤ」４１６という並べ替えのための処理命令を付け加えることにより順序性を保証している。「ｏｒｄｅｒ  ｂｙ  ＩＤ」は、ＳＱＬの命令であり、本発明の実施形態では、ＩＤの並び替えを意味している。
【００４９】
ＳＱＬ４１４によりツール情報保持データベース１０３から取得した結果４１５は、「プログラム言語」が「Ｊａｖａ」であるレコードの「ＩＤ」と「ツール」とを「ＩＤ」の順序に取り出したときのものである。本発明の実施形態の場合、起動するツールは、Ａであることがわかり、また、取得したレコードの順序を引き数の順序としているので、引き数は「０００１」、「０００２」、「０００３」の順であることが判る。
【００５０】
すでに説明したように、検閲担当者が入力したデータを識別するために、ＩＤを識別文字列として使用しているので、検閲ツール切り替え装置１０２は、検閲担当者が入力したデータを間違えることなく引き数として使用することができる。説明している実施形態の場合、「０００１」は「ソース」、「０００２」は「ライブラリ」、「０００３」は「ＪＤＫのバージョン」を入力するようになっているため、引き数の順番と対応する情報とが判る。
【００５１】
前述したステップ６０２での処理により、プログラム言語に対応する検閲ツールと引き数の順序とを取得した後、ステップ６０３の処理に進む。ステップ６０３の処理では検閲ツールを実際に起動する処理を行う。
【００５２】
本発明の実施形態は、Ｊａｖａの検閲ツールにＡ、引き数は、ソース、ライブラリ、バージョンの順序で起動することが判るので、検閲ツール切り替え装置１０２は、例えば、「Ａ  ｓｏｕｒｃｅ．ｚｉｐ  ｌｉｂｒａｒｙ．ｚｉｐ  １．４  ｃ：￥ｉｎｓｐｅｃｔｉｏｎ￥ｊａｖａ￥ｄａｔａ．ｃｓｖ」として検閲ツールを起動する。
【００５３】
本発明の実施形態は、検閲ツールが、コンピュータ上のどこででも実行可能であるように予めコンピュータの設定がされているとしているが、そうでない場合、検閲ツール情報保持データベース１０３のツールに、実行先を指定しておけばよい。
【００５４】
ここで指定する検閲ツールは、必要十分な情報を出力する検閲ツールを指定することになる。なぜならば、検閲ツールが出力する検閲項目に不足があると、プロジェクトマネージャ等が成果物を正当に検閲することができないからである。
【００５５】
また、各検閲ツールの検閲結果の出力先等を指定する必要があれば、コンピュータの設定や引き数等により予め指定しておけばよい。なぜなら、検閲担当者は、各プログラム言語に対応した検閲結果を意識する必要はないためである。説明している実施形態では、４番目の引き数で「ｃ：  ￥ｉｎｓｐｅｃｔｉｏｎ￥ｊａｖａ￥ｄａｔａ．ｃｓｖ」と指定している。ここでは、Ｊａｖａ言語の説明なので、「ｃ：  ￥ｉｎｓｐｅｃｔｉｏｎ￥ｊａｖａ」と言語用にディレクトリを分けている。仮に、ＶＢ．ＮＥＴの場合、「ｃ：  ￥ｉｎｓｐｅｃｔｉｏｎ￥ｖｂ．ｎｅｔ」等と言語別に用意すればよい。
【００５６】
前述までが検閲ツール切り替え装置１０２の処理動作の説明であり、次に、検閲結果正規化装置１０８が各プログラム言語の検閲結果を正規化する処理動作について説明する。
【００５７】
検閲担当者が検閲処理を行ってから検閲結果の確認を行うのは、検閲処理からある程度時間が経過した後となる。なぜなら、確認検閲ツールが検閲処理を行うための処理時間が必要だからである。そのため、検閲担当者の作業フロー中のステップ２０２からステップ２０３の間には、ある程度の時間があるため、本発明の実施形態に対しては、別途処理開始の指示が行われることになる。
【００５８】
すなわち、検閲担当者は、ステップ２０２での情報の入力のしばらくの後にステップ２０３の処理を行い、検閲結果の確認のため、検閲結果正規化装置１０８にアクセスする。本発明の実施形態は、Ｗｅｂアプリケーションにより検閲結果正規化装置１０８を構成しているものとするため、検閲担当者は、検閲ツール切り替え装置１０２を起動するときと同様に、Ｗｅｂブラウザを使用し、ＵＲＬを使用して検閲結果正規化装置１０８にアクセスする。
【００５９】
例えば、検閲結果正規化装置１０８へのＵＲＬが「ｈｔｔｐ：／／ｓａｍｐｌｅ／ｖｉｅｗ」であるとすると、検閲担当者は、Ｗｅｂブラウザを使用して前述のＵＲＬへアクセスをする。なお、以下の説明では、過去の履歴や複数プロジェクトを考慮する点の説明については、説明が複雑になるため割愛する。しかし、検閲結果正規化装置１０８が履歴やプロジェクト情報を保持することにより、例えば、検閲ツール切り替え装置１０２の起動時と同じように、ＵＲＬに特定の記号をつけてアクセスすることで対応可能である。
【００６０】
図７は検閲結果正規化装置１０８の処理動作を説明するフローチャートであり、次に、これについて説明する。
【００６１】
まず、ステップ７０１の処理において、各プログラム言語に対応した検閲ツールの検閲結果を取得する処理を行う。例えば、各プログラム言語に対応した検閲ツールの検閲結果が特定のディレクトリに保存されるのであれば、そのファイルを取得すればよい。説明している本発明の実施形態では、すでに説明済みのｃ：￥ｉｎｓｐｅｃｔｉｏｎ￥ｊａｖａ￥ｄａｔａ．ｃｓｖファイルを処理対象とする。仮に、ＶＢ．ＮＥＴの検閲を行った場合には、「ｃ：￥ｉｎｓｐｅｃｔｉｏｎ￥ｖｂ．ｎｅｔ」のディレクトリのデータも処理対象とする。
【００６２】
図８は各プログラミング言語に対応した検閲ツールの検閲結果の一例を示す図であり、ここで、今後の処理の説明のため、図８を参照して各プログラム言語に対応した検閲ツールの検閲結果の例を説明する。
【００６３】
図８において、８０１はＶＢ．ＮＥＴ用検閲ツール１０５により出力された検閲結果の一例であり、ＣＳＶ（Comma Separated Values）形式のフォーマットで検閲結果を出力している。そして、８０３はＣＳＶ形式フォーマットの検閲結果の１つのエラーメッセージを表している。ＣＶＳとは、文字「，」を区切りとして一行に情報を列挙する書式である。
【００６４】
一方、８０２はＪａｖａ用検閲ツール１０４から出力された検閲結果の一例であり、ＸＭＬ（Extensible Markup Lauguage）形式のフォーマットで検閲結果を出力している。図８には、Ｊａｖａ用の検閲ツール１０４が、３つのエラーを発見して出力した例を示している。そして、８０４はＸＭＬ形式フォーマットの検閲結果の１つのエラーメッセージを表している。ＸＭＬは、タグが階層構造を成している書式である。例えば、＜ＴｏｏｌＡ＞タグのすぐ子供の要素として＜Ｒｅｓｕｌｔ＞があり、＜Ｒｅｓｕｌｔ＞のすぐ子供の要素として、＜ＲｕｌｅＮａｍｅ＞、＜Ｍｅｓｓａｇｅ＞、＜ＳｏｕｒｃｅＣｏｄｅ＞、＜ＬｉｎｅＮｕｍｂｅｒ＞、＜ＵｓｅｒＮａｍｅ＞の５つがあると言うように階層構造を成している。また、ＸＭＬは、開始タグから終了タグまでを１つのまとまりのあるデータとして扱うことができる。例えば、開始タグが＜ＡＡＡ＞のとき、終了タグ＜／ＡＡＡ＞までの文字列や終了タグ＜／ＡＡＡ＞以外のタグは、＜ＡＡＡ＞の値として扱うことができる。
【００６５】
ステップ７０１の処理の終了後、ステップ７０２の処理に進み、ステップ７０２の処理において、複数のプログラム言語の検閲ツールの検閲結果を正規化するための変換条件を、検閲情報データベース１０９から取得する処理を行う。
【００６６】
図９は検閲情報データベース１０９の構成例を示す図であり、ここで、図９を参照して、検閲情報データベース１０９について説明する。
【００６７】
検閲情報データベース１０９は、複数のレコードにより構成され、各レコードには、ＩＤ９０１、種別９０２、ツール９０３、形式９０４、抽出条件９０５の各項目が記述されている。
【００６８】
そして、ＩＤ９０１は、レコードを一意に判別するための数値であり、種別９０２は、検閲結果に必要な情報のカテゴリを表している。本発明の実施形態では、検閲結果として、「ファイルパス」、「行番号」、「ルール」、「メッセージ」の４つの情報を必要としている。図示の検閲情報データベース１０９では、それぞれを、ＦｉｌｅＰａｔｈ、Ｌｉｎｅ、Ｒｕｌｅ、Ｍｅｓｓａｇｅという文字列でで表現している。
【００６９】
ツール９０３は、各プログラム言語に対応した検閲ツールを表しており、形式９０４は、各プログラム言語に対応した検閲結果の出力形式を表している。また、抽出条件９０５は、各プログラム言語に対応した検閲結果から検閲結果正規化装置１０８が検閲結果を生成するために必要な情報をどのように取得すればよいかを記述している。
【００７０】
本発明の実施形態では、ＣＳＶ形式のフォーマットのとき、正規表現を使用することを表している。一方、ＸＭＬ形式のフォーマットのとき、ＸＰａｔｈを利用して必要な情報を取得することを示している。ＸＰａｔｈとは、ＸＭＬ形式のファイルに存在する任意のタグを、ＸＭＬと同じ階層構造をもっているファイルシステム上のファイルパスのような形で指し示すことができる言語である。
【００７１】
前述において、レコード９０６は、Ｊａｖａ用検閲ツールＡが出力したＸＭＬ形式の検閲結果から、ＦｉｌｅＰａｔｈの情報を抽出する条件が「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／ＳｏｕｒｃｅＣｏｄｅ」であることを示している。具体的にＪａｖａ用の検閲ツールの出力である図８に示して説明したＪａｖａ用検閲ツール１０４から出力された検閲結果であるＸＭＬ８０２を参照して説明すると、すでに説明したように、＜ＴｏｏｌＢ＞と＜Ｒｅｓｕｌｔ＞と＜ＳｏｕｒｃｅＣｏｄｅ＞とは階層構造を成している。そして抽出条件が「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／ＳｏｕｒｃｅＣｏｄｅ」なので、＜ＳｏｕｒｃｅＣｏｄｅ＞タグの値として扱われる「Ｉｎｐｕｔ．ｊａｖａ」８０５を抽出することができる。
【００７２】
本発明の実施形態の場合、Ｊａｖａ用検閲ツール１０４が生成した検閲ファイルに対しては、ＸＰａｔｈを使い、「ＦｉｌｅＰａｔｈ」は「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／ＳｏｕｒｃｅＣｏｄｅ」で、「Ｌｉｎｅ」は「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／ＬｉｎｅＮｕｍｂｅｒ」で、「Ｒｕｌｅ」は「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／ＲｕｌｅＮａｍｅ」で、「Ｍｅｓｓａｇｅ」は「／ＴｏｏｌＡ／Ｒｅｓｕｌｔ／Ｍｅｓｓａｇｅ」で抽出することが分かる。具体的には、先に説明した抽出条件で、検閲結果正規化装置１０８は、ＦｉｌｅＰａｔｈとして「Ｉｎｐｕｔ．ｊａｖａ」のほかに、Ｌｉｎｅとして「１２」、Ｒｕｌｅとして「ＥｘｃｅｐｔｉｏｎＥｒｒｏｒ」、Ｍｅｓｓａｇｅとして「例外処理を実装してください。」を取得することができる。
【００７３】
一方、ＶＢ．ＮＥＴ用検閲ツール１０５が生成した検閲ファイルに対しては、正規表現で、「ＦｉｌｅＰａｔｈ」は「３，１＋ｘ」で、「Ｌｉｎｅ」は「４，１＋ｘ」で、「Ｒｕｌｅ」は「１，１＋ｘ」で、「Ｍｅｓｓａｇｅ」は「２，１＋ｘ」で抽出することが分かる。正規表現とは、処理の対象とする文字列から、特定のパターンにあった部分を取り出すためのパターンを指定する表記法である。
【００７４】
本発明の実施形態の場合、検閲情報データベース１０９の情報から、ＶＢ．ＮＥＴの検閲結果は、ＣＶＳ形式で出力されることが判る。例えば、抽出条件「２，１＋ｘ」は、区切り文字「，」で区切られた一行のうち、２番目の「，」から次の「，」の間の文字列を取得することを表すものとする。具体的に図８に示す行８０３を参照して説明すると、まず、一行を区切り文字「，」で分けると、１番目は「ＤｅｓｉｇｎＥｒｒｏｒ」、２番目は「メソッドの処理が長すぎます」、３番目は「ｄａｔａ．ｖｂ」、４番目は「８」、５番目は「ｄｅｓｉｇｎ」となる。そして、２番目の文字列「メソッドの処理が長すぎます」が抽出対象となり、これを検閲結果正規化装置１０８が取得することとなる。
【００７５】
ステップ７０２の処理が終了すると、ステップ７０３の処理に進み、ステップ７０３の処理において、検閲結果正規化装置１０８が複数のツールが出力した検閲結果を正規化した検閲結果を生成する処理を行う。
【００７６】
すなわち、ステップ７０３の処理において、検閲結果正規化装置１０８は、Ｊａｖａ用検閲ツール１０４が出力した検閲結果１０６における図８に８０４として示される検閲結果から情報を抽出し、取得した抽出条件を使用することにより、「ＦｉｌｅＰａｔｈ」は「Ｉｎｐｕｔ．ｊａｖａ」であり、「Ｌｉｎｅ」は「１２」であり、「Ｒｕｌｅ」は「ＥｃｅｐｔｉｏｎＥｒｒｏｒ」であり、「Ｍｅｓｓａｇｅ」は「例外処理を実装してください。」であるとして取得することができる。
【００７７】
一方、検閲結果正規化装置１０８は、ＶＢ．ＮＥＴ用検閲ツール１０５が出力した検閲結果１０７における図８に８０３として示される検閲結果から情報を抽出し、ステップ７０３の処理で取得した抽出条件を使用することにより、「Ｒｕｌｅ」は「ＤｅｓｉｇｎＥｒｒｏｒ」であり、「Ｍｅｓｓａｇｅ」は「メソッドの処理が長すぎます」であり、「ＦｉｌｅＰａｔｈ」は「ｄａｔａ．ｖｂ」であり、「Ｌｉｎｅ」は「８」であるとして取得することができる。
【００７８】
本発明の実施形態では、Ｊａｖａ用検閲ツール１０４が出力した検閲結果には、「ＵｓｅｒＮａｍｅ」の情報が、また、ＶＢ．ＮＥＴ用検閲ツール１０５が出力した検閲結果には、「ｃａｔｅｇｏｒｙ」が欠落するが、すでに説明しているように、ある検閲ツールに存在し、他の検閲ツールに存在しない項目は、検閲担当者にとっては不要な項目であるので問題はない。
【００７９】
ステップ７０３の処理が終了すると、ステップ７０４の処理に進み、ステップ７０４の処理において、ステップ７０３の処理で取得した検閲結果を検閲担当者に報告する画面を生成する処理を行う。
【００８０】
図１０はステップ７０３の処理で生成された検閲結果を表示した表示画面の例を示す図であり、次に、これについて説明する。
【００８１】
検閲結果は、エラー名１００１、ソース名１００２、行番号１００３、メッセージ１００４を持つレコードを１つのエラーに対応付け、エラー毎のレコードの複数により構成されて表示される。
【００８２】
前述において、エラー名１００１は、検閲処理の結果、発覚した問題のカテゴリを表示しており、ソース名１００２は、検閲処理の結果、問題があると判断されたソースファイル名を表示している。行番号１００３は、問題が発覚したソースファイルの行番号を表している。また、メッセージ１００４は、検閲結果の検閲担当者へ向けた各プログラム言語の検閲ツールが出力するメッセージである。図１０に示す例の場合、検閲情報データベースの種別のままでは、検閲担当者が判りづらいため、Ｒｕｌｅを「エラー名」、ＦｉｌｅＰａｔｈを「ソース名」、Ｌｉｎｅを「行番号」、Ｍｅｓｓａｇｅを「メッセージ」と対応つけて表示した例で示している。
【００８３】
図１０に示す例の場合、レコード１００５には、Ｊａｖａ用検閲ツール１０４による検閲結果を、レコード１００６には、ＶＢ．ＮＥＴ用検閲ツール１０５による検閲結果を表示している。
【００８４】
具体的には、レコード１００５には、Ｊａｖａ用検閲ツール１０４が出力した検閲結果８０２から、検閲結果正規化装置１０８が抽出条件により取得したＲｕｌｅとして「ＥｘｃｅｐｔｉｏｎＥｒｒｏｒ」、Ｍｅｓｓａｇｅとして「例外処理を実装してください。」、ＦｉｌｅＰａｔｈとして「Ｉｎｐｕｔ．ｊａｖａ」、Ｌｉｎｅとして「１２」が表示されている。また、レコード１００６には、ＶＢ．ＮＥＴ用検閲ツール１０５が出力した検閲結果８０１から、検閲結果正規化装置１０８が抽出条件により取得したＲｕｌｅとして「Ｄｅｓｉｇｎ」、Ｍｅｓｓａｇｅとして「メソッドの処理が長すぎます」、ＦｉｌｅＰａｔｈとして「ｄａｔａ．ｖｂ」、Ｌｉｎｅとして「８」が表示されている。
【００８５】
前述した本発明の実施形態での各処理は、プログラムとして構成して本発明による方法を実行する装置内に備えられているプロセッサに実行させることができ、また、このプログラムは、ＦＤ、ＣＤ、ＭＯ、ＤＶＤＲＯＭ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【００８６】
前述した本発明の実施形態によれば、検閲担当者は、本発明の実施形態によるソースコード検閲装置を利用することにより、多種多様なプログラム言語を用いて開発されるソフトウェアであっても、開発対象となっている全領域に対する検閲を行うことが可能になる。また、プログラム言語毎に見方を変える必要もなく、効率よくソースコードの検閲を行うことが可能となる。
【図面の簡単な説明】
【００８７】
【図１】本発明の一実施形態によるソースコード検閲方法を実行する装置の構成を示すブロック図である。
【図２】検閲担当者がソースコード検閲装置を使用して検閲作業を行う場合の作業処理の動作を説明するフローチャートである。
【図３】検閲ツール切り替え装置の処理動作を説明するフローチャートである。
【図４】ツール情報保持データベースに保持されている情報の内容を説明する図である。
【図５】図３に示すステップ３０３の処理で検閲担当者に対して表示した表示画面の一例を示す図である。
【図６】検閲ツール切り替え装置が各プログラム言語に対応した検閲ツールを起動し、検閲結果を取得するまでの処理動作を説明するフローチャートである。
【図７】検閲結果正規化装置の処理動作を説明するフローチャートである。
【図８】各プログラミング言語に対応した検閲ツールの検閲結果の一例を示す図である。
【図９】検閲情報データベースの構成例を示す図である。
【図１０】図７に示すステップ７０３の処理で生成された検閲結果を表示した表示画面の例を示す図である。
【符号の説明】
【００８８】
１００  ソースコード検閲装置
１０１  検閲担当者
１０２  検閲ツール切り替え装置
１０３  検閲ツール情報保持データベース
１０４  Ｊａｖａ用検閲ツール
１０５  ＶＢ．ＮＥＴ用検閲ツール
１０６、１０７  ツール毎の検閲結果
１０８  検閲結果正規化装置
１０９  検閲情報データベース
１１０  正規化した検閲結果
【図１】
2006318104.tif 000003
【図２】
2006318104.tif 000004
【図３】
2006318104.tif 000005
【図４】
2006318104.tif 000006
【図５】
2006318104.tif 000007
【図６】
2006318104.tif 000008
【図７】
2006318104.tif 000009
【図８】
2006318104.tif 000010
【図９】
2006318104.tif 000011
【図１０】
2006318104.tif 000012