(57)【要約】【課題】コンパイルエラー時の対応において、人の手を介さずにコンピュータによって、正確かつスピーディにエラー訂正をするコンパイルエラー処理システムを提供する。【解決手段】コンパイルエラーが発生した場合に、原因プログラムをコンパイルリストを解析して特定し、更新が必要なプログラムをコンパイルエリアに取り込んで再度コンパイルを実施するコンパイルエラー処理システムであって、予めソフトウェアのコンパイルに必要な全てのプログラムソースを収納するライブラリと、コンパイルの結果を出力したコンパイルリストから、コンパイルエラーが発生すると書き込まれる文字列の有無を検出する手段と、コンパイルエラーで前記文字列の後に書き込まれるエラー発生個所の文字列から入れ替えを必要とするプログラムを特定する手段と、特定されたプログラムをプログラム保管ライブラリ中の同一名称の新規プログラムと入れ替える手段と、を備える。【選択図】図１
2011053948.tif 000002
【特許請求の範囲】
【請求項１】
プログラミングのソースコードをコンパイラによりオブジェクトコードに変換する際に、コンパイルエラーが発生した場合にその原因となるプログラムをコンパイルリストを解析することで特定し、更新が必要なプログラムをコンパイルエリアに取り込んで再度コンパイルを実施するコンパイルエラー処理システムであって、
予めソフトウェアのコンパイルに必要な全てのプログラムソースを収納するプログラムソース保管ライブラリと、
前記コンパイラによるコンパイルの実行結果を出力したコンパイルリストから、コンパイルエラーが発生すると書き込まれる文字列の有無を検出する手段と、
コンパイルエラーが発生した場合に前記文字列の後に書き込まれるエラー発生個所の文字列から入れ替えを必要とするプログラムを特定する手段と、
特定された前記プログラムと同一名称の新規プログラムを前記プログラム保管ライブラリから取り出して前記コンパイルエリア中の入れ替えを必要とするプログラムと入れ替える手段と、を備え、
前記コンパイルエラーの解析から再コンパイルに至る動作をコンピュータで実行することを特徴とするコンパイルエラー処理システム。
【請求項２】
プログラミングのソースコードをコンパイラによりオブジェクトコードに変換する際に、コンパイルエラーが発生した場合にその原因となるプログラムをコンパイルリストを解析することで特定し、更新が必要なプログラムをコンパイルエリアに取り込んで再度コンパイルを実施するコンパイルエラー処理プログラムであって、
予めソフトウェアのコンパイルに必要な全てのプログラムソースをプログラムソース保管ライブラリに収納するステップと、
前記コンパイラによるコンパイルの実行結果を出力したコンパイルリストから、コンパイルエラーが発生すると書き込まれる文字列の有無を検出するステップと、
コンパイルエラーが発生した場合に前記文字列の後に書き込まれるエラー発生個所の文字列から入れ替えを必要とするプログラムを特定するステップと、
特定された前記プログラムと同一名称のプログラムを前記プログラム保管ライブラリから取り出して前記コンパイルエリア中の入れ替えを必要とするプログラムと入れ替えるステップと、をコンピュータに実行させることを特徴とするコンパイルエラー処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高級言語で記述されたソースコードをコンパイラにより機械語であるオブジェクトコードに変換する際に、変換処理が行われないことにより発生するコンパイルエラーについて、人の手を介することなく機械的にエラー訂正して再コンパイルによりリカバリすることができる方法である。
【背景技術】
【０００２】
従来、ソースコードをオブジェクトコードに変換する際にコンパイルエラーが発生した場合、人がコンパイルリストを参照して、エラーの原因を解析し、原因となるプログラムを特定し、そしてコンパイルエリア内のプログラムを入れ替えてコンパイルを再実行している。このエラーを解析し、コンパイルエリアのプログラムを入れ替えて、そしてコンパイルを再実行する作業は、人の手作業で行われている。
このコンパイルエラーを処理する技術に関連する公知例としては、下記の公報が開示されている（特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−４８０７２号公報
【特許文献２】特開平０５−２７４１７９号公報
【特許文献３】特開平０７−２８１８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した先行技術において、特許文献１は、コンパイルのための必要な情報を記述したメイクファイル（makefile）を自動生成させ、当該makefileによって、エラー訂正のための新旧プログラムの入れ替えを機械的に行う技術を開示しているが、それにはmakefileを自動生成させるためのパラメタ情報の定義が事前に必要なものであった。
また、特許文献２は、コンパイルエラー発生時の対処を目的とする技術を開示しているが、その目的達成の方法は修正用エディタの自動表示等であり、修正用エディタを介して手作業にて再コンパイル等の後続の作業を行わなければならないという問題があった。
そして、特許文献３は、変更の発生したプログラムを機械的に検出して当該変更プログラムを入れ換える技術について開示しているが、必要のないプログラムまでコンパイルエリアに入れることから、別途、不要なプログラムをコンパイルエリアから手作業で削除しなければならないという問題があった。
【０００５】
本発明の目的は、これら従来技術の課題を解決し、コンパイルエラー発生時の対応において、人の手を介さず機械的なコンピュータ処理によって、正確かつスピーディにエラー訂正してリカバリすることで、システムインテグレーション（SI）作業の品質と効率を向上させるものである。
【課題を解決するための手段】
【０００６】
上記解決課題に鑑みて鋭意研究の結果、一般にコンパイルエラーの原因は多岐にわたるものであるが、コンパイル対象プログラムが自動生成されたプログラムの場合には、エラーの原因が一律であることから、人手を介さずにコンピュータでの機械的なコンパイルエラーの判断及び対処が可能であることに着目し、本発明者は、コンパイルエラー発生時のエラー訂正作業の効率向上に適したリカバリの方法を案出した。
【０００７】
上記課題を解決すべく、本発明のコンパイルエラー処理システムは、プログラミングのソースコードをコンパイラによりオブジェクトコードに変換する際に、コンパイルエラーが発生した場合にその原因となるプログラムをコンパイルリストを解析することで特定し、更新が必要なプログラムをコンパイルエリアに取り込んで再度コンパイルを実施するコンパイルエラー処理システムであって、予めソフトウェアのコンパイルに必要な全てのプログラムソースを収納するプログラムソース保管ライブラリと、前記コンパイラによるコンパイルの実行結果を出力したコンパイルリストから、コンパイルエラーが発生すると書き込まれる文字列の有無を検出する手段と、コンパイルエラーが発生した場合に前記文字列の後に書き込まれるエラー発生個所の文字列から入れ替えを必要とするプログラムを特定する手段と、特定された前記プログラムと同一名称の新規プログラムを前記プログラム保管ライブラリから取り出して前記コンパイルエリア中の入れ替えを必要とするプログラムと入れ替える手段と、を備え、前記コンパイルエラーの解析から再コンパイルに至る動作をコンピュータで実行することを特徴とする。
【０００８】
また、本発明のコンパイルエラー処理プログラムは、プログラミングのソースコードをコンパイラによりオブジェクトコードに変換する際に、コンパイルエラーが発生した場合にその原因となるプログラムをコンパイルリストを解析することで特定し、更新が必要なプログラムをコンパイルエリアに取り込んで再度コンパイルを実施するコンパイルエラー処理プログラムであって、予めソフトウェアのコンパイルに必要な全てのプログラムソースをプログラムソース保管ライブラリに収納するステップと、前記コンパイラによるコンパイルの実行結果を出力したコンパイルリストから、コンパイルエラーが発生すると書き込まれる文字列の有無を検出するステップと、コンパイルエラーが発生した場合に前記文字列の後に書き込まれるエラー発生個所の文字列から入れ替えを必要とするプログラムを特定するステップと、特定された前記プログラムと同一名称のプログラムを前記プログラム保管ライブラリから取り出して前記コンパイルエリア中の入れ替えを必要とするプログラムと入れ替えるステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【０００９】
以上説明したように、本発明によれば、コンパイルエラーが発生した時の対応において、これまで手作業で行っていたエラー訂正のための処理をコンピュータにて瞬時に実行できるため、コンパイルエラー対応に係る部分のSI作業効率が向上するとともに、機械的に実施することにより、人的ミスを回避でき、SI作業の品質が向上するものである。
【図面の簡単な説明】
【００１０】
【図１】本発明のコンパイルエラー処理システムの全体構成図である。
【図２】本発明のコンパイルエラー処理システムの概略フローチャートである。
【図３】コンパイルリスト（エラー有りの場合）を示す図である。
【図４】コンパイルリスト（エラー無しの場合）を示す図である。
【図５】本発明のコンパイルエラー処理システムにおける入れ換え対象プログラム名の抽出処理フローを示す図である。
【図６】本発明のコンパイルエラー処理システムにおける入れ換え対象プログラム名の抽出結果リストを示す図である。
【図７】本発明のコンパイルエラー処理システムにおけるプログラム追加処理フローを示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、本発明を実施するための形態を詳細に説明する。図１〜図７は、本発明の実施の形態を例示する図であり、これらの図において、同一の符号を付した部分は同一物を表し、基本的な構成及び動作は同様であるものとする。
【００１２】
＜全体構成＞
図１は、本発明のコンパイルエラー処理システムの全体構成を示す図である。
本構成では、コンパイル指示を出すためのクライアントＰＣ（１０１）と、コンパイルを実行するサーバＰＣ（１０２）とをネットワーク回線によって接続している。
コンパイルの実施者は、クライアントＰＣ（１０１）にて、コンパイルの実行指示を行う。この実行指示は、ネットワーク回線に接続されたサーバＰＣ（１０２）に伝達される。
このサーバＰＣ（１０２）の構成は、クライアントＰＣ（１０１）からの指示を受けて、被コンパイルプログラム群及びコンパイラが存在するコンパイルエリア（１０３）に存在するプログラムに対して、コンパイルを実行して、そのコンパイルの実行結果をコンパイルリスト（１０５）に出力するコンパイル処理部（１０４）と、コンパイルリスト（１０５）を入力し、エラーの有無の解析を行い、エラーがある場合は、エラーの原因となるプログラム名を抽出結果リスト（１０７）に出力する入れ換え対象プログラム名抽出処理部（１０６）と、抽出結果リスト（１０７）を入力し、そのリストに示されるプログラムをプログラムソース保管ライブラリ（１０９）から取り出し、取り出したプログラム（１１０）を再度コンパイルエリア（１０３）に追加するプログラム追加処理部（１０８）とを備えている。
尚、プログラムソース保管ライブラリ（１０９）には、当座のコンパイル実行対象／対象外を問わず、プロジェクトの全プログラムソースが保管されている。
【００１３】
＜コンパイル処理の概略＞
図２は、本発明のコンパイルエラー処理システムの概略を示すフローである。
予め、プログラムソースは、自動生成によって作成しておく。生成用パラメタ（２５１）を入力し当該生成処理にて生成した被コンパイルプログラム（２５２）をコンパイルエリアに配置する（２０１〜２０３）。
プログラム配置後、コンパイル処理部１０４は、コンパイルを実行する（２０４）。
コンパイル終了後、出力したコンパイルリスト（２５３）を基に、エラーがあるかどうかコンパイル実行結果の確認を行う（２０５）。
コンパイルエラーが無ければ（２０６）、処理は終了する（２０９）。コンパイルエラーがある場合（２０６）、コンパイルリスト（２５３）を基に、入れ換えが必要なプログラムの名称を抽出し（２０７）、その抽出結果を抽出結果リスト（２５４）に出力する。
抽出結果リスト（２５４）を基に、追加プログラム（２５５）をコンパイルエリアに入れ（２０８）、再度コンパイルを実行する（２０４）。
【００１４】
＜コンパイルエラーが有る場合のコンパイルリストの例＞
図３は、コンパイルエラーが有る場合のコンパイルリストの出力例である（３０１）。
コンパイルエラーが有ると、リスト中に文字列「シンボルを解決できません。」（３０２）が存在する。
この場合、次の行において、文字列「シンボル：クラス」（３０３）、または文字列「シンボル：メソッド」（３０５）が存在する。さらに、その次の行に、プログラム名が「aaa.bbb.ccc.XXXX」（３０４）の書式で存在する。「XXXX」の部分が、コンパイルエラーの原因となっている、つまり、再コンパイルのために入れ換えが必要なプログラムの名称である。
コンパイルエラーが有ると、コンパイルリストの終わりに文字列「BUILD FAILED」が存在する（３０６）。
【００１５】
＜コンパイルエラーが無い場合のコンパイルリストの例＞
図４は、コンパイルエラーが無い場合のコンパイルリストの出力例である（４０１）。
コンパイルエラーが無いと、コンパイルリストの終わりに文字列「BUILD SUCCESSFUL」の文字列が存在する（４０２）。
また、コンパイルエラーが無い場合は、図３における（３０２）〜（３０６）の文字列は存在しない。
【００１６】
＜入れ換え対象プログラム名抽出処理＞
図５は、入れ換え対象プログラム名抽出処理を示すフローである。
入れ換え対象プログラム名抽出処理部１０６は、プログラム名抽出処理をスタートする（５０１）と、コンパイルリスト（５５１）を入力し１行ずつ読み込んでいく（５０２）。
読み込んだ行に文字列「BUILD FAILED」または「BUILD SUCCESSFUL」が存在する場合（５０３）は、抽出処理を終了し（５１２）、それ以外の場合は処理を続行する。
読み込んだ行に文字列「シンボルを解決できません。」が存在する場合（５０４）〜（５０５）、次の行に文字列「シンボル：クラス」を探し（５０６）、当該文字列が存在する場合（５０７）は、さらに、次の行に文字列パターン「場所    : xx.xx.xx.PPPPPP の クラス」を探す（５１０）。「PPPPPP」の部分がプログラム名である。当該文字列パターンからプログラム名部分を抽出し、プログラム名の最後に拡張子「.java」を付加した形で、抽出結果リスト（５５２）に出力する（５１１）。
読み込んだ行に文字列「シンボルを解決できません。」が存在する場合（５０４）〜（５０５）で、次の行に文字列「シンボル：クラス」を探し（５０６）、当該文字列が存在しない場合（５０７）は、文字列「シンボル：メソッド」を検索する（５０８）。文字列「シンボル：メソッド」があれば（５０９）、文字列「シンボル：クラス」があった場合と同様、さらに、次の行に文字列パターン「場所    : xx.xx.xx.PPPPPP の クラス」を探し（５１０）、当該文字列パターンからプログラム名部分を抽出し、プログラム名の最後に拡張子「.java」を付加した形で、抽出結果リスト（５５２）に出力する（５１１）。
【００１７】
＜抽出結果リストの例＞
図６は、抽出結果リストの例である（６０１）。
リストには、入れ換えのためにコンパイルエリアに追加する対象のプログラム名が記載されている（６０２）。
【００１８】
＜プログラム追加処理＞
図７は、プログラム追加処理を示すフローである。
プログラム追加処理部１０８は、プログラム追加処理をスタートすると（７０１)、まず、抽出結果リスト（７５１）を入力する（７０２）。
抽出リストを１行読み込み、プログラム名が無ければ（７０３）、処理を終了する（７０５）。プログラム名がある（７０３）と、当該プログラム名に該当する対象プログラム（７５２）をプログラムソース保管ライブラリからコンパイルエリアにコピーする（７０４）。
そして、コンパイル処理部１０４は、再度コンパイルを実行する（２０４）。
【産業上の利用可能性】
【００１９】
１．クライアント・サーバ型のシステムにおける、３層構造のシステム開発において、データアクセス層のプログラムソースコードは、現状、１００％自動生成が可能となっている。このプログラムソースコードが１００％自動生成が可能な環境では、本発明の利用が可能である。その理由として、本発明においては、コンパイルエラーの原因が限定的であることを前提に、当該限定された原因をコンピュータによって条件化・対処することにより、処理の網羅性を確保するものである点が挙げられる。１００％自動生成のプログラムにおいては、通常ではコンパイルエラーは発生しないため、コンパイルエラーが発生しうる限られたケースを事前に洗い出し、当該ケースを網羅するようにコンピュータ処理上規定しておくことで、本発明を利用することが可能である。
２．本発明を利用できる場合には、コンパイルエラーにあたり、ライブラリから再度適合するプログラムを手作業で追加し再コンパイルを行うというような人手を介する必要がなく、ひとたびコンパイル実行を開始すれば、後は正常終了を待つのみである。従って、コンパイルエラー対応等の煩雑な作業に工数をとられることがなく、より整理された形でのSI運用が可能である。
【符号の説明】
【００２０】
１０１  クライアントＰＣ
１０２  コンパイルエラー処理システムサーバ
１０３  コンパイルエリア
１０４  コンパイル処理部
１０５  コンパイルリスト
１０６  入れ換え対象プログラム名抽出処理部
１０７  抽出結果リスト
１０８  プログラム追加処理部
１０９  プログラムソース保管ライブラリ
１１０  追加プログラム
３０１  コンパイルリスト（エラー有りの場合）
４０１  コンパイルリスト（エラー無しの場合）
【図１】
2011053948.tif 000003
【図２】
2011053948.tif 000004
【図３】
2011053948.tif 000005
【図４】
2011053948.tif 000006
【図５】
2011053948.tif 000007
【図６】
2011053948.tif 000008
【図７】
2011053948.tif 000009