(57)【特許請求の範囲】
【請求項１】
オプション情報を取得するための代用外部ツールを提供する代用外部ツール部と、
オプション情報の取得対象である外部ツールに対して、外部ツールの代わりに前記代用外部ツールを使用してビルドを実行することにより、ビルドプロセス情報を出力するビルド実行部と、
オプション情報を取得する条件である判断情報を設定する判断情報設定部と、
前記ビルドプロセス情報から、前記判断情報で設定された条件を満たす情報を中間オプション情報として抽出するオプション情報抽出部と、
前記オプション情報抽出部により抽出した前記中間オプション情報を、ソースコード静的解析ツールに対応したコマンドライン情報に加工するオプション情報加工部と
を備え、
前記ビルドプロセス情報は、取得した前記オプション情報と、前記オプション情報と共に指定されたソースコードとの対応情報を保持する
オプション情報解析システム。
【請求項２】
請求項１に記載のオプション情報解析システムであって、
前記オプション情報加工部は、前記コマンドライン情報の形式を前記判断情報で設定された条件から決定する
オプション情報解析システム。
【請求項３】
請求項１又は２に記載のオプション情報解析システムであって、
前記中間オプション情報は、
前記外部ツールの実行により出力されるファイルごとに作成され、前記出力するファイルに対応するソースコード及びオプション情報は、タグによって識別及び管理される
オプション情報解析システム。
【請求項４】
代用外部ツール部が、オプション情報を取得するための代用外部ツールを提供するステップと、
ビルド実行部が、オプション情報の取得対象である外部ツールに対して、外部ツールの代わりに前記代用外部ツールを使用してビルドを実行することにより、ビルドプロセス情報を出力するステップと、
判断情報設定部が、オプション情報を取得する条件である判断情報を設定するステップと、
オプション情報抽出部が、前記ビルドプロセス情報から、前記判断情報で設定された条件を満たす情報を中間オプション情報として抽出するステップと、
オプション情報加工部が、前記オプション情報抽出部により抽出した前記中間オプション情報を、ソースコード静的解析ツールに対応したコマンドライン情報に加工するステップと
を含み、
前記ビルドプロセス情報は、取得した前記オプション情報と、前記オプション情報と共に指定されたソースコードとの対応情報を保持する
オプション情報解析方法。
【請求項５】
請求項４に記載のオプション情報解析方法であって、
前記オプション情報加工部が、前記コマンドライン情報の形式を前記判断情報で設定された条件から決定するステップを
更に含むオプション情報解析方法。
【請求項６】
請求項４又は５に記載のオプション情報解析方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発支援ツールに関する。
【背景技術】
【０００２】
ソフトウェア開発を効率的に進めるためのソフトウェア開発支援ツールに関する技術が知られている。例えば、特許４３２８３２８号公報（特許文献１）では、ソースコードをコンパイルして、実行モジュールを作成する際に、実行モジュールの作成に掛かる時間を短縮するソフトウェア開発ツールプログラムが記載されている。この発明では、ソースプログラムの更新状況や重要度等、ソースプログラムの状態に応じて、コンパイル時のコンパイルオプションを最適なものに変更することによって、実行モジュールの作成時間の短縮を実現している。
【０００３】
他のソフトウェア開発支援ツールに関する技術の例としては、ソースコード静的解析ツールが知られている。ソースコード静的解析ツールとは、プログラムをコンパイルして実際に試験をせずに、ソースコードの記載内容から、可能な範囲でプログラムの記述ミスや動作時の不具合を発見することができるツールである。
【０００４】
ソースコード静的解析ツールを使用する際には、ソースコードをコンパイルする際に指定するオプション情報が必要になる。従来から、ソースコード静的解析ツールの利用者は、ソースコード静的解析ツールにかけるソースコードをコンパイルする際のコンパイルオプションを、ソースコード全体をビルドする際にコンソール画面等に出力されるメッセージから摘出していた。しかし、近年のソースコード規模の肥大化、過去資産の追加開発により、ソースコードの開発者であっても、ソースコードと、ソースコードをコンパイルする際に指定するオプション情報の対応を上記の方法で、正確に摘出することが難しくなってきている。そのため、オプション情報を摘出するためには多大な作業コストが発生し、オプション情報を誤検出する課題が発生していた。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許４３２８３２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、ソースコード静的解析ツールを実行する際に、入力パラメータとして必要になるオプション情報を自動的に収集するオプション情報解析システムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のオプション情報解析システムは、オプション情報を取得するための代用外部ツールを提供する代用外部ツール部と、オプション情報の取得対象である外部ツールに対しては、外部ツールの代わりに代用外部ツールを使用してビルドを実行することにより、ビルドプロセス情報を出力するビルド実行部と、オプション情報を取得する条件である判断情報を設定する判断情報設定部と、ビルドプロセス情報から、判断情報で設定された条件を満たす情報を中間オプション情報として抽出するオプション情報抽出部と、オプション情報抽出部により抽出した中間オプション情報を加工して、ソースコード静的解析ツールの引数に、抽出したオプション情報を設定したコマンドライン情報を作成するオプション情報加工部とを備える。
【０００８】
本発明のオプション情報解析方法は、代用外部ツール部が、オプション情報を取得するための代用外部ツールを提供するステップと、ビルド実行部が、オプション情報の取得対象である外部ツールに対しては、外部ツールの代わりに代用外部ツールを使用してビルドを実行するステップと、ビルド実行部が、ビルドプロセス情報を出力するステップと、判断情報設定部が、オプション情報を取得する条件である判断情報を設定するステップと、オプション情報抽出部が、ビルドプロセス情報から、判断情報で設定された条件を満たす情報を抽出するステップと、オプション情報加工部が、判断情報で設定された条件を満たす情報を抽出するステップにより抽出した中間オプション情報を加工するステップと、オプション情報加工部が、ソースコード静的解析ツールの引数に、抽出したオプション情報を設定したコマンドライン情報を作成するステップとを含む。
【発明の効果】
【０００９】
本発明によれば、ソースコード静的解析ツールを実行する際に、入力パラメータとして必要になるオプション情報を自動的に収集できるオプション情報解析システムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１Ａ】図１Ａは、本発明の実施形態におけるオプション情報解析システム１００のブロック図である。
【図１Ｂ】図１Ｂは、本発明の実施形態におけるオプション情報解析システム１００のブロック図である。
【図２】図２は、本発明の実施形態におけるオプション情報解析システム１００のハードウェア構成図である。
【図３】図３は、本発明の実施形態のオプション情報解析システム１００におけるオプション情報解析方法のフローチャートである。
【図４】図４は、ビルドプロセスの進行時に、コンソール画面等に出力される情報の例である。
【図５】図５は、本発明の実施形態のオプション情報解析システム１００におけるコンフィグ情報３４０の例である。
【図６】図６は、本発明の実施形態のオプション情報解析システム１００における中間オプション情報３３０の例である。
【図７】図７は、本発明の実施形態のオプション情報解析システム１００におけるコマンドライン情報３５０の例である。
【発明を実施するための形態】
【００１１】
添付図面を参照して、本発明の実施形態によるオプション情報解析システムを以下に説明する。
【００１２】
［構成の説明］
はじめに、本実施形態におけるオプション情報解析システム１００の構成の説明を行う。図１Ａ、図１Ｂは、本発明の実施形態におけるオプション情報解析システム１００のブロック図である。本実施形態におけるオプション情報解析システム１００は、ビルド部１１０、代用外部ツール部１２０、オプション情報抽出部１３０、オプション情報加工部１４０及び判断情報設定部１５０を備える。
【００１３】
ビルド部１１０は、環境情報保存部１１１及びビルド実行部１１２を備える。
【００１４】
環境情報保存部１１１は、オプション情報解析システム１００の利用者が指定した、オプション情報解析対象の外部ツール名と、コマンドライン情報を作成するソースコード静的解析ツール名をコンフィグ情報３４０に保存する。
【００１５】
ビルド実行部１１２は、外部ツール２００と代用外部ツール提供部１２２の機能を利用して、入力されたビルド対象３１０のビルドを実行する。
【００１６】
代用外部ツール部１２０は、代用外部ツール追加部１２１、代用外部ツール提供部１２２及びビルドプロセス情報生成部１２３を備える。
【００１７】
代用外部ツール追加部１２１は、ビルド実行部１１２でビルド対象３１０をビルドする際に使用される代用外部ツールをビルド解析システム１００に追加する。
【００１８】
代用外部ツール提供部１２２は、ビルド実行部１１２がビルドを実行する際に使用する代用外部ツールを提供する。
【００１９】
ビルドプロセス情報生成部１２３は、ビルド実行時に、オプション情報取得対象の外部ツールのコマンドを、代用外部ツールで置換することによって取得したオプション情報と、外部ツール実行時に指定したソースコード等の引数との対応を保持するビルドプロセス情報３２０を生成する。
【００２０】
オプション情報抽出部１３０は、オプション情報判断部１３１及びデータ保管部１３２を備える。
【００２１】
オプション情報判断部１３１は、コンフィグ情報３４０を参照して、ビルドプロセス情報３２０の中から、ソースコード静的解析ツールの入力パラメータとして必要な情報を判断する。コンフィグ情報３４０は、全てのオプション情報のうち、ソースコード静的解析ツールの入力パラメータとして、必要な情報を識別することができる情報を含む。
【００２２】
データ保管部１３２は、オプション情報判断部１３１が出力したデータを、中間オプション情報３３０として生成する。中間オプション情報３３０は、コンフィグ情報３４０に基づいて、ビルドプロセス情報３２０から特定のオプション情報を抜き出した情報である。
【００２３】
オプション情報加工部１４０は、重複データ削除部１４１、データマージ部１４２及びコマンドライン情報作成部１４３を備える。
【００２４】
重複データ削除部１４１は、中間オプション情報３３０のうち、同様の情報が複数存在する場合に、重複しているデータを削除する。
【００２５】
データマージ部１４２は、ソースコード静的解析ツールに指定するソースコードをグルーピングする。
【００２６】
コマンドライン情報作成部１４３は、コンフィグ情報３４０、重複データ削除部１４１及びデータマージ部１４２が出力した情報に基づいて、ソースコード静的解析ツールを実行する際のコマンドライン情報３５０を作成する。
【００２７】
判断情報設定部１５０は、ビルドプロセス情報取得部１５１及び判断情報保存部１５２を備える。
【００２８】
ビルドプロセス情報取得部１５１は、ビルドプロセス情報３２０を取得する。取得したビルドプロセス情報３２０は、抽出対象となるオプション情報を利用者に選択させるために取得する。
【００２９】
判断情報保存部１５２は、利用者が選択したオプション情報をコンフィグ情報３４０として保存する。
【００３０】
次に、本実施形態におけるオプション情報解析システムのハードウェア構成についての説明を行う。図２は、本発明の実施形態におけるオプション情報解析システム１００のハードウェア構成図である。
【００３１】
オプション情報解析システム１００は、メモリ１０、表示部２０、入力部３０、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０、補助記憶装置５０及びシステムバス６０を備える。
【００３２】
メモリ１０は、オプション情報解析システム１００の主記憶装置である。利用者がオプション情報解析システム１００を利用する際には、本実施形態におけるオプション情報解析システム１００を実現するためのオプション情報解析システムプログラム１０１及び外部ツールが、メモリ１０上に展開される。表示部２０は、オプション情報解析システム１００の実行結果が表示される。入力部３０は、利用者がオプション情報解析システム１００を操作するためのインタフェースである。ＣＰＵ４０は、メモリ１０上に展開されたコンピュータプログラムを実行する制御装置である。補助記憶装置５０は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）及びアプリケーションプログラムが記憶されている装置である。補助記憶装置５０には、本実施形態におけるオプション情報解析システム１００を実現するためのオプション情報解析システムプログラム１０１及び外部ツールが記憶されている。システムバス６０は、メモリ１０、表示部２０、入力部３０、ＣＰＵ４０及び補助記憶装置５０とデータの送受信を行う通信路である。
【００３３】
［動作方法の説明］
次に、本実施形態におけるオプション情報解析システムにおいて、オプション情報解析方法の説明を行う。図３は、本発明の実施形態のオプション情報解析システムにおけるオプション情報解析方法のフローチャートである。
【００３４】
（ステップＳ１０）
はじめに、オプション情報解析システム１００の利用者は、オプション情報解析対象の外部ツールを指定する。ビルド部１１０は、環境情報保存部１１１により、利用者が指定したオプション情報解析対象の外部ツール名をオプション情報解析システム１００のコンフィグ情報３４０に設定する。外部ツールとは、例えば、ｇｃｃ（ＧＮＵ  Ｃｏｍｐｉｌｅｒ  Ｃｏｌｌｅｃｔｉｏｎ）やｂｃｃ（Ｂｏｒｌａｎｄ（登録商標）  Ｃ＋＋  Ｃｏｍｐｉｌｅｒ）等のビルド実行時に利用される外部コマンドである。
【００３５】
（ステップＳ２０）
次に、オプション情報解析システム１００の利用者は、コマンドライン情報を作成するソースコード静的解析ツールを指定する。ビルド部１１０は、環境情報保存部１１１により、利用者が指定したソースコード静的解析ツール名をコンフィグ情報に設定する。ソースコード静的解析ツールとは、例えば、ｓｐｌｉｎｔ（Ｓｅｃｕｒｅ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌｉｎｔ）等のソースコードを静的に解析するための外部コマンドである。
【００３６】
（ステップＳ３０）
次に、オプション情報解析システム１００の利用者は、ビルド対象３１０を指定する。ビルド対象３１０とは、ビルドの対象となるソースコードやビルドファイル等である。ビルド部１１０は、利用者が指定したビルド対象３１０を読み込む。
【００３７】
（ステップＳ４０）
次に、ビルド部１１０は、ビルド実行部１１２により、ビルド対象３１０のビルドを実行する。図４は、ビルドプロセスが進行する際に、コンソール画面等に出力される情報の例である。ビルド実行部１１２は、ビルド実行時に外部ツール２００を利用する。外部ツールとは、例えば、Ｌｉｎｕｘ（登録商標）環境でビルドを実行する場合には、ｇｃｃ、ｍａｋｅ、ｃｐ又はｍｖ等のコマンドである。ビルド実行部１１２は、ビルド実行前にコンフィグ情報３４０を参照し、利用者がオプション情報解析対象として指定した外部ツールを検出する。ビルド実行部１１２は、オプション情報解析対象として指定された外部ツールを、代用外部ツール提供部１２２によって提供される代用外部ツールに置き換えてビルドを実行する。
【００３８】
代用外部ツールとは、例えば、コマンドの引数の文字列を取得するためのコマンドを、代用外部ツール追加部１２１によって登録し、オプション情報解析システム１００で利用できるようにしたコマンド群である。登録するコマンドについては、コンパイル環境のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）で利用できる既存のコマンドであっても良いし、利用者が目的に応じてカスタマイズして作成したコマンドであっても良い。
【００３９】
例えば、オプション情報解析対象として指定された外部ツールがｇｃｃであり、コマンドの引数の文字列を取得するコマンドをｇｅｔｏｐｔとする。ビルド実行部１１２は、ビルド実行時に一律にｇｃｃをｇｅｔｏｐｔに置換して、実際にビルドプロセスを進行させることにより、オプション情報を取得する。ビルドプロセスを実際に動作させる過程において、自動的にオプション情報を取得することにより、オプション情報解析システム１００の利用者は、正確にオプション情報を取得することが可能となる。
【００４０】
ビルド実行部１１２がビルドを実行することにより、代用外部ツール部１２０のビルドプロセス情報生成部１２３は、ビルドプロセス情報３２０を生成する。ビルドプロセス情報３２０とは、取得したオプションと、取得したオプションと共に指定されていたソースコードとの関係を、オプション情報解析システム１００内の対応テーブル等で保持した情報である。
【００４１】
（ステップＳ５０）
次に、判断情報設定部１５０は、ビルドプロセス情報取得部１５１により、ビルドプロセス情報３２０を取得する。オプション情報解析システム１００の利用者は、ビルドプロセス情報３２０に基づいて出力されるオプション情報に対して、ソースコード静的解析ツールに指定するオプション情報を選択する。判断情報設定部１５０は、判断情報保存部１５２により、オプション情報解析システム１００の利用者が、選択したオプション情報を、ビルドプロセス情報３２０からオプション情報を抽出するための条件としてコンフィグ情報３４０に保存する。図５は、本発明の実施形態のオプション情報解析システム１００におけるコンフィグ情報３４０の例である。
【００４２】
（ステップＳ６０）
次に、オプション情報抽出部１３０は、オプション情報判断部１３１により、コンフィグ情報３４０を参照して、ビルドプロセス情報３２０から、オプション情報解析システム１００の利用者が選択したオプション情報を抽出する。オプション情報抽出部１３０のデータ保管部１３２は、オプション情報判断部１３１が抽出したオプション情報を中間オプション情報３３０として出力する。図６は、本発明の実施形態のオプション情報解析システム１００における中間オプション情報３３０の例である。
【００４３】
（ステップＳ７０）
最後に、オプション情報加工部１４０は、中間オプション情報３３０を読み込んでコマンドライン情報３５０を作成する。重複データ削除部１４１は、中間オプション情報３３０の中から、＜ｏｐｔ＞タグを参照してオプション情報を検出し、重複しているオプション情報を削除する。データマージ部１４２は、中間オプション情報３３０の中から、＜ｓｒｃ＞タグを参照してソースコードファイルを検出し、ソースコードをグルーピングする。コマンドライン情報作成部１４３は、コンフィグ情報３４０の−ｃｈｅｃｋｉｎｇ  ｔｏｏｌ項目、−ｏｕｔｐｕｔ  ｓｃｒｉｐｔ  ｔｙｐｅ項目を参照して、ソースコード静的解析ツールのコマンドライン情報の形式を確定し、コマンドライン情報３５０を作成する。図７は、本発明の実施形態のオプション情報解析システム１００におけるコマンドライン情報３５０の例である。
【００４４】
本実施形態のオプション情報解析システム１００によれば、ソースコード静的解析ツールを実行する際に、入力パラメータとして必要になるオプション情報を、オプション情報解析システム１００の利用者による任意の設定で、自動的に収集することができる。また、コンソール画面等に出力されるビルド実行結果を参照した手作業による解析コストを削減することができる。また、代用外部ツールを利用して、実際にビルドプロセスを進行させながら、オプション情報を取得するため、様々な場合において、本実施形態のオプション情報解析システム１００を適用することができ、汎用性において優れている。
【００４５】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００４６】
１０  メモリ
２０  表示部
３０  入力部
４０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
５０  補助記憶装置
１００  オプション情報解析システム
１０１  オプション情報解析システムプログラム
１１０  ビルド部
１１１  環境情報保存部
１１２  ビルド実行部
１２０  代用外部ツール部
１２１  代用外部ツール追加部
１２２  代用外部ツール提供部
１２３  ビルドプロセス情報生成部
１３０  オプション情報抽出部
１３１  オプション情報判断部
１３２  データ保管部
１４０  オプション情報加工部
１４１  重複データ削除部
１４２  データマージ部
１４３  コマンドライン情報作成部
１５０  判断情報設定部
１５１  ビルドプロセス情報取得部
１５２  判断情報保存部
２００  外部ツール
３１０  ビルド対象
３２０  ビルドプロセス情報
３３０  中間オプション情報
３４０  コンフィグ情報
３５０  コマンドライン情報
【図１Ａ】
0005621426.tif 000002
【図１Ｂ】
0005621426.tif 000003
【図２】
0005621426.tif 000004
【図３】
0005621426.tif 000005
【図４】
0005621426.tif 000006
【図５】
0005621426.tif 000007
【図６】
0005621426.tif 000008
【図７】
0005621426.tif 000009