(57)【要約】【課題】コーディングスタイルに従ったソースプログラムの記述をプログラマに対して動的に促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法を提供する。【解決手段】コーディングスタイルチェックプログラム９０は、ソースプログラムを構成する文字、行又は関数等の構成要素の入力完了時点にて、記述済みのソースプログラムが予め設定ファイルに設定されたコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合にエラーメッセージを表示すると共に、入力された構成要素の補完を行う。また、ソースプログラムの記述がコーディングスタイルを満たしていない場合に、エラーメッセージを表示するのみでなく、修正候補を一覧表示して選択を受け付け、選択に応じて修正を行う。【選択図】図１
2010097426.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、ソースプログラムの入力を受け付けさせるコンピュータプログラムにおいて、
コンピュータに、
前記ソースプログラムを構成する一の構成要素の入力完了を判定させる入力完了判定ステップと、
一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定させる記述様式判定ステップと、
前記記述様式を満たしていないと判定した場合に、警告を行わせる警告ステップと、
前記一の構成要素に続く構成要素を補完することができるか否かを判定させる補完可否判定ステップと、
補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示させる補完候補表示ステップと、
前記補完候補の選択を受け付けさせる補完候補選択ステップと、
受け付けた補完候補により前記一の構成要素を補完させる補完ステップと
を有することを特徴とするコンピュータプログラム。
【請求項２】
コンピュータに、
前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示させる修正候補表示ステップと、
前記修正候補の選択を受け付けさせる修正候補選択ステップと、
受け付けた修正候補により前記一の構成要素を修正させる修正ステップと
を更に有することを特徴とする請求項１に記載のコンピュータプログラム。
【請求項３】
コンピュータに、
前記記述様式に係る複数の設定を受け付けさせるステップと、
受け付けた複数の設定の優先度を判定させるステップと
を更に有し、
前記記述様式判定ステップは、優先度が高いと判定された設定に係る記述様式に応じて判定を行わせること
を特徴とする請求項１又は請求項２に記載のコンピュータプログラム。
【請求項４】
前記一の構成要素は、文字であり、
コンピュータに、前記文字が変数の型を示す文字列の最後の文字であるか否かを判定させるステップを更に有し、
前記補完候補表示ステップは、前記文字が変数の型を示す文字列の最後の文字である場合に、前記変数の型に続く変数名の接頭字句を補完候補として表示させること
を特徴とする請求項１乃至請求項３のいずれか１つに記載のコンピュータプログラム。
【請求項５】
前記一の構成要素は、文字又は記号であり、
コンピュータに、前記文字又は記号が連続した２つの’？’記号に続く文字又は記号であるか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記文字又は記号が連続した２つの’？’記号に続く文字又は記号である場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項４のいずれか１つに記載のコンピュータプログラム。
【請求項６】
前記一の構成要素は、記号であり、
コンピュータに、前記記号が連続する２つ目の’／’記号であるか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記一の記号が連続する２つ目の’／’記号である場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項５のいずれか１つに記載のコンピュータプログラム。
【請求項７】
前記一の構成要素は、行であり、
コンピュータに、
前記一の行に変数宣言に係る記述が含まれているか否かを判定させるステップと、
前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句であるか否かを判定させるステップと
を更に有し、
前記記述様式判定ステップは、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句でない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項６のいずれか１つに記載のコンピュータプログラム。
【請求項８】
前記一の構成要素は、行であり、
コンピュータに、処理に係る記述が前記行に複数記述されているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、処理に係る記述が前記行に複数記述されている場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項７のいずれか１つに記載のコンピュータプログラム。
【請求項９】
前記一の構成要素は、行であり、
コンピュータに、
関数宣言に係る記述が前記行に含まれているか否かを判定させるステップと、
前記関数宣言に係る関数が引数を有さない関数であるか否かを判定させるステップと、
前記関数宣言に引数を有さない旨を示す記述が含まれているか否かを判定させるステップと
を更に有し、
前記記述様式判定ステップは、前記関数宣言に係る関数が引数を有さない関数であり、且つ、前記関数宣言に引数を有さない旨を示す記述が含まれていない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項８のいずれか１つに記載のコンピュータプログラム。
【請求項１０】
前記一の構成要素は、演算式であり、
コンピュータに、
前記演算式に複数の演算子が含まれているか否かを判定させるステップと、
各演算子の演算に係る優先順位が明示されているか否かを判定させるステップと
を更に備え、
前記記述様式判定ステップは、前記演算式に複数の演算子が含まれており、且つ、各演算子の演算に係る優先順位が明示されていない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項９のいずれか１つに記載のコンピュータプログラム。
【請求項１１】
前記一の構成要素は、条件の成立に応じて行われる処理に係る記述であり、
コンピュータに、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されていない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項１０のいずれか１つに記載のコンピュータプログラム。
【請求項１２】
前記一の構成要素は、演算式であり、
コンピュータに、複数の演算式がコンマで区切られて記述されているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、複数の演算式がコンマで区切られて記述されている場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項１１のいずれか１つに記載のコンピュータプログラム。
【請求項１３】
前記一の構成要素は、関数であり、
コンピュータに、前記関数が予め定められた行数を超えて記述されているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記関数が予め定められた行数を超えて記述されている場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項１２のいずれか１つに記載のコンピュータプログラム。
【請求項１４】
前記一の構成要素は、関数であり、
コンピュータに、前記関数の宣言の前にコメントが記述されているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記関数の宣言の前にコメントが記述されていない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項１３のいずれか１つに記載のコンピュータプログラム。
【請求項１５】
前記一の構成要素は、関数であり、
コンピュータに、前記関数に戻り値に係る記述が含まれているか否かを判定させるステップを更に有し、
前記記述様式判定ステップは、前記関数に戻り値に係る記述が含まれていない場合に、前記記述様式を満たしていないと判定させること
を特徴とする請求項１乃至請求項１４のいずれか１つに記載のコンピュータプログラム。
【請求項１６】
ソースプログラムの入力を受け付けるソースプログラム入力受付装置において、
前記ソースプログラムを構成する一の構成要素の入力完了を判定する入力完了判定手段と、
一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定する記述様式判定手段と、
前記記述様式を満たしていないと判定した場合に、警告を行う警告手段と、
前記一の構成要素に続く構成要素を補完することができるか否かを判定する補完可否判定手段と、
補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示する補完候補表示手段と、
前記補完候補の選択を受け付ける補完候補選択手段と、
受け付けた補完候補により前記一の構成要素を補完する補完手段と
を備えることを特徴とするソースプログラム入力受付装置。
【請求項１７】
前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示する修正候補表示手段と、
前記修正候補の選択を受け付ける修正候補選択手段と、
受け付けた修正候補により前記一の構成要素を修正する修正手段と
を更に備えることを特徴とする請求項１６に記載のソースプログラム入力受付装置。
【請求項１８】
ソースプログラムの入力を受け付けるソースプログラム入力受付方法において、
前記ソースプログラムを構成する一の構成要素の入力完了を判定し、
一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定し、
前記記述様式を満たしていないと判定した場合に、警告を行い、
前記一の構成要素に続く構成要素を補完することができるか否かを判定し、
補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示し、
前記補完候補の選択を受け付け、
受け付けた補完候補により前記一の構成要素を補完すること
を特徴とするソースプログラム入力受付方法。
【請求項１９】
前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示し、
前記修正候補の選択を受け付け、
受け付けた修正候補により前記一の構成要素を修正すること
を特徴とする請求項１８に記載のソースプログラム入力受付方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマによるソースプログラムの入力を支援し、定められた記述様式に則したソースプログラムの記述を促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法に関する。
【背景技術】
【０００２】
近年、ハードウェアの高機能化及び多機能化に伴って、このハードウェアにて動作するソフトウェア（プログラム）も高機能化及び多機能化している。このため１つのプログラムを一人のプログラマが作成することは困難化しており、１つのプログラムを関数、オブジェクト又はモジュール等の単位で分割して複数のプログラマが作成する場合が多い。複数のプログラマが共同で１つのプログラムを作成するためには、一のプログラマが作成したソースプログラムを他のプログラマが容易に理解できる必要がある。一のプログラマが作成したプログラムのバグ修正を他のプログラマが行う場合、及び、一のプログラマが作成したプログラムを再利用して他のプログラマが新たなプログラムを作成する場合等についても同様である。
【０００３】
このため、近年ではソースプログラムの記述様式（コーディングスタイル）の統一又は標準化が進められており、可読性が高く容易に理解できるソースプログラムが作成されている。コーディングスタイルとは、例えば関数の処理内容を説明するコメントの記述、行の開始位置などを揃えるインデント又は変数名の命名規則等のソースプログラムの可読性を高めるためのものであり、プログラミング言語の文法規則とは異なりコンパイラによってエラーとされるものではない。このため、コーディングスタイルに従ってソースプログラムを記述するか否かは各プログラマの判断に依存するという問題がある。
【０００４】
特許文献１においては、ソースプログラムのプログラミング言語の文法チェックのみでなく、コーディングスタイルのチェックを自動的に行うことができるプログラミング言語処理システムが提案されている。このプログラミング言語処理システムは、ソースプログラムがプログラミング言語の文法及びコーディングスタイルに合致しているか否かを解析し、ソースプログラムにエラーが検出されない場合にはソースプログラムによりオブジェクトプログラムを生成し、ソースプログラムにエラーが検出された場合にはエラーメッセージを出力する。
【特許文献１】特開平６−１４９５８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載のプログラミング言語処理システムは、プログラマがソースプログラムの記述を完了した後、例えばコンパイルの際などにコーディングスタイルのチェックを行う構成である。よって、プログラマはソースプログラムの記述を完了した後で、コーディングスタイルのエラーを修正するためにソースプログラムの記述に戻って作業を行う必要があるため、手間がかかるという問題がある。また、特許文献１に記載のプログラミング言語処理システムは、コーディングスタイルのエラーを検出した場合にエラーメッセージを出力するのみであるため、ソースプログラムの記述に係るプログラマの支援機能としては不十分である。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、プログラマによるソースプログラムの入力時に、入力されたソースプログラムの構成要素がコーディングスタイルを満たしているか否かを判定し、警告及び補完を行うことにより、動的にプログラマに対してコーディングスタイルに従ったソースプログラムの記述を促すことができるコンピュータプログラム、ソースプログラム入力受付装置及びソースプログラム入力受付方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係るコンピュータプログラムは、コンピュータに、ソースプログラムの入力を受け付けさせるコンピュータプログラムにおいて、コンピュータに、前記ソースプログラムを構成する一の構成要素の入力完了を判定させる入力完了判定ステップと、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定させる記述様式判定ステップと、前記記述様式を満たしていないと判定した場合に、警告を行わせる警告ステップと、前記一の構成要素に続く構成要素を補完することができるか否かを判定させる補完可否判定ステップと、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示させる補完候補表示ステップと、前記補完候補の選択を受け付けさせる補完候補選択ステップと、受け付けた補完候補により前記一の構成要素を補完させる補完ステップとを有することを特徴とする。
【０００８】
また、本発明に係るコンピュータプログラムは、コンピュータに、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示させる修正候補表示ステップと、前記修正候補の選択を受け付けさせる修正候補選択ステップと、受け付けた修正候補により前記一の構成要素を修正させる修正ステップとを更に有することを特徴とする。
【０００９】
また、本発明に係るコンピュータプログラムは、コンピュータに、前記記述様式に係る複数の設定を受け付けさせるステップと、受け付けた複数の設定の優先度を判定させるステップとを更に有し、前記記述様式判定ステップは、優先度が高いと判定された設定に係る記述様式に応じて判定を行わせることを特徴とする。
【００１０】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、文字であり、コンピュータに、前記文字が変数の型を示す文字列の最後の文字であるか否かを判定させるステップを更に有し、前記補完候補表示ステップは、前記文字が変数の型を示す文字列の最後の文字である場合に、前記変数の型に続く変数名の接頭字句を補完候補として表示させることを特徴とする。
【００１１】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、文字又は記号であり、コンピュータに、前記文字又は記号が連続した２つの’？’記号に続く文字又は記号であるか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記文字又は記号が連続した２つの’？’記号に続く文字又は記号である場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１２】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、記号であり、コンピュータに、前記記号が連続する２つ目の’／’記号であるか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記一の記号が連続する２つ目の’／’記号である場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１３】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、前記一の行に変数宣言に係る記述が含まれているか否かを判定させるステップと、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句であるか否かを判定させるステップとを更に有し、前記記述様式判定ステップは、前記変数宣言に係る変数の変数名に付された接頭字句が、変数の型に応じて予め定められた接頭字句でない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１４】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、処理に係る記述が前記行に複数記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、処理に係る記述が前記行に複数記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１５】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、行であり、コンピュータに、関数宣言に係る記述が前記行に含まれているか否かを判定させるステップと、前記関数宣言に係る関数が引数を有さない関数であるか否かを判定させるステップと、前記関数宣言に引数を有さない旨を示す記述が含まれているか否かを判定させるステップとを更に有し、前記記述様式判定ステップは、前記関数宣言に係る関数が引数を有さない関数であり、且つ、前記関数宣言に引数を有さない旨を示す記述が含まれていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１６】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、演算式であり、コンピュータに、前記演算式に複数の演算子が含まれているか否かを判定させるステップと、各演算子の演算に係る優先順位が明示されているか否かを判定させるステップとを更に備え、前記記述様式判定ステップは、前記演算式に複数の演算子が含まれており、且つ、各演算子の演算に係る優先順位が明示されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１７】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、条件の成立に応じて行われる処理に係る記述であり、コンピュータに、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記処理の範囲を示す一組の文字又は記号が、前記記述の最初及び最後に付されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１８】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、演算式であり、コンピュータに、複数の演算式がコンマで区切られて記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、複数の演算式がコンマで区切られて記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００１９】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数が予め定められた行数を超えて記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数が予め定められた行数を超えて記述されている場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００２０】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数の宣言の前にコメントが記述されているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数の宣言の前にコメントが記述されていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００２１】
また、本発明に係るコンピュータプログラムは、前記一の構成要素が、関数であり、コンピュータに、前記関数に戻り値に係る記述が含まれているか否かを判定させるステップを更に有し、前記記述様式判定ステップは、前記関数に戻り値に係る記述が含まれていない場合に、前記記述様式を満たしていないと判定させることを特徴とする。
【００２２】
また、本発明に係るソースプログラム入力受付装置は、ソースプログラムの入力を受け付けるソースプログラム入力受付装置において、前記ソースプログラムを構成する一の構成要素の入力完了を判定する入力完了判定手段と、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定する記述様式判定手段と、前記記述様式を満たしていないと判定した場合に、警告を行う警告手段と、前記一の構成要素に続く構成要素を補完することができるか否かを判定する補完可否判定手段と、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示する補完候補表示手段と、前記補完候補の選択を受け付ける補完候補選択手段と、受け付けた補完候補により前記一の構成要素を補完する補完手段とを備えることを特徴とする。
【００２３】
また、本発明に係るソースプログラム入力受付装置は、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示する修正候補表示手段と、前記修正候補の選択を受け付ける修正候補選択手段と、受け付けた修正候補により前記一の構成要素を修正する修正手段とを更に備えることを特徴とする。
【００２４】
また、本発明に係るソースプログラム入力受付方法は、ソースプログラムの入力を受け付けるソースプログラム入力受付方法において、前記ソースプログラムを構成する一の構成要素の入力完了を判定し、一の構成要素の入力が完了した場合に、前記一の構成要素の入力完了時点でのソースプログラムが、予め定められたソースプログラムの記述様式を満たしているか否かを判定し、前記記述様式を満たしていないと判定した場合に、警告を行い、前記一の構成要素に続く構成要素を補完することができるか否かを判定し、補完することができると判定した場合に、前記一の構成要素に続く構成要素の補完候補を表示し、前記補完候補の選択を受け付け、受け付けた補完候補により前記一の構成要素を補完することを特徴とする。
【００２５】
また、本発明に係るソースプログラム入力受付方法は、前記記述様式を満たしていないと判定した場合に、前記記述様式を満たす修正候補を表示し、前記修正候補の選択を受け付け、受け付けた修正候補により前記一の構成要素を修正することを特徴とする。
【００２６】
本発明においては、ソースプログラムを構成する構成要素の入力完了を判定する。構成要素とは、例えば文字、記号、字句、行、演算式、条件文、繰返文、変数又は関数等のソースプログラムに記述される様々なものである。構成要素の入力完了時点にて記述済みのソースプログラムが、予め定められたソースプログラムの記述様式（コーディングスタイル）を満たしているかを判定する。これにより、プログラマがソースプログラムをテキストエディタなどで記述しているときにコーディングスタイルのチェックを行うことができ、コーディングスタイルに違反する記述をプログラマが行った場合にはその時点で警告を与えることができる。
また、入力された構成要素に続く構成要素をコーディングスタイルに従って補完することができる場合には、一又は複数の補完候補を表示してプログラマに補完候補を選択させ、選択された補完候補により構成要素を補完する。これにより、プログラマが記述する前にコーディングスタイルを提示し、これに従った構成要素の入力を自動的に行うことができる。
【００２７】
また本発明においては、コーディングスタイルに違反する記述をプログラマが行った場合にこれを警告するのみでなく、この記述をコーディングスタイルを満たす記述に修正した一又は複数の修正候補を表示してプログラマに修正候補を選択させ、選択された修正候補により構成要素を修正する。これによりコーディングスタイルを満たす記述への修正を自動的に行うことができ、プログラマがコーディングスタイルに違反する記述を繰り返すことを防止できる。
【００２８】
また本発明においては、例えばコーディングスタイルに係る設定を設定ファイルなどにプログラマなどが予め記述しておき、これを読み込むことによって、コーディングスタイルの設定を受け付け、受け付けた設定に従ってソースプログラムの記述を判定する。これにより、プログラムを開発するグループ、プロジェクト、組織又は企業などに特有のコーディングスタイルを判定の条件に加えることができる。また、コーディングスタイルに係る複数の設定を受け付けた場合に、複数の設定の優先度を判定し、優先度の高い一の設定に従ってコーディングスタイルの判定を行う。これにより、例えば組織全体でコーディングスタイルを定め、この組織の各部署でそれぞれコーディングスタイルを定め、各部署の各プロジェクトでそれぞれコーディングスタイルを定めるなどして、複数のコーディングスタイルに従った判定を行うことができる。また、複数のコーディングスタイルに相反する内容が含まれる場合に、最も優先度の高いコーディングスタイルに従った判定を行うことができる。
【００２９】
また本発明においては、コーディングスタイルに従って構成要素の補完を行う場合、入力された文字が変数の型を示す文字列の最後の文字であるか否かを調べる。例えば変数型が”unsigned int”の場合、最後の’t’の文字の入力を調べればよい。変数の型を示す文字列の入力が完了した場合、変数型に対応付けて予め定められた接頭字句（例えば”unsigned int”の場合には”ui”又は”*ui”等）を補完候補として表示する。これにより、プログラマは補完候補から接頭字句を選択して自動入力し、その後に個別の変数名を入力することができ、変数名に関するコーディングスタイルを統一することができる。
【００３０】
また本発明においては、連続した２つの’?’記号に続く文字又は記号が入力された場合に、コーディングスタイルを満たしていないと判定する。これにより、Ｃ言語などにおいて’｛’に代えて”??<”を入力するトリグラフシーケンスの使用をコーディングスタイルとして禁止することができる。
【００３１】
また本発明においては、連続する２つ目の’/’記号が入力された場合に、コーディングスタイルを満たしていないと判定する。これにより、”//”を用いたコメントの記述をコーディングスタイルとして禁止することができる。この場合、”/*”及び”*/”を用いたコメントに自動的に修正してもよい。
【００３２】
また本発明においては、入力された一の行に変数宣言の記述が含まれているか否かを判定し、変数宣言に係る変数の変数名に付された接頭字句が、変数型に応じて定められた接頭字句でない場合に、コーディングスタイルを満たしていないと判定する。これにより、変数名に関するコーディングスタイルを統一することができる。
【００３３】
また本発明においては、処理に係る記述（所謂、ステートメント）が１行に複数記述されている場合に、コーディングスタイルを満たしていないと判定する。１行に複数のステートメントが記述されているとソースプログラムの可読性が低下するが、これを回避することができる。
【００３４】
また本発明においては、入力された一の行に関数宣言の記述が含まれているか否かを判定し、引数を有さない関数の宣言に、引数を有さない旨を示す記述（例えば、Ｃ言語などにおいて”void”のキーワード）がなされていない場合に、コーディングスタイルを満たしていないと判定する。関数の引数に関するコーディングスタイルを判定することによって、プログラマが引数の記載を忘れたか又は引数を有さない関数であるかを他のプログラマが迷うことなく判断できる。
【００３５】
また本発明においては、演算式に複数の演算子が含まれており、各演算子の優先順位が明示されていない場合に、コーディングスタイルを満たしていないと判定する。演算子の優先順位は、例えば’(’及び’)’のカッコを用いて明示することができる。これにより、複雑な演算式の可読性を高めることができる。
【００３６】
また本発明においては、条件が成立した場合に行う処理（例えばＣ言語のif文及びfor文など、条件が成立した場合に行う処理の記述に、処理の範囲を示す一組の文字又は記号（例えば、’(’及び’)’、又は”BEGIN”及び”END”等）が付されていない場合に、コーディングスタイルを満たしていないと判定する。これにより、条件分岐により行う処理又は繰り返し行う処理等の処理範囲を明示することができる。
【００３７】
また本発明においては、複数の演算式がコンマで区切られて記述されている場合、コーディングスタイルを満たしていないと判定する。例えばＣ言語においては、複数の演算式をコンマで区切って記述することができ（所謂、コンマ式）、記述量を減らすことができるが、プログラムが行う処理の理解が困難化する。そこで、コーディングスタイルとしてコンマ式の使用を禁止することによって、ソースプログラムの可読性を高めることができる。
【００３８】
また本発明においては、関数の記述が予め定められた行数を超えた場合に、コーディングスタイルを満たしていないと判定する。１つの関数の記述が極度に長い場合、この関数の可読性が低下する。そこで、コーディングスタイルとして関数を記述できる行数を制限することによって、ソースプログラムの可読性を高めることができる。
【００３９】
また本発明においては、関数宣言の前にコメントが記述されていない場合に、コーディングスタイルを満たしていないと判定する。関数に付されるコメントは、関数の処理内容を理解する上で貴重な情報であるため、コーディングスタイルとしてコメントの記述を必須とすることにより、関数のデバッグ及び再利用等に有効な情報をプログラマに確実に記載させることができる。コメントの記載内容についてもコーディングスタイルとして規定し、判定してもよい。
【００４０】
また本発明においては、関数の戻り値に係る記述が含まれていない場合に、コーディングスタイルを満たしていないと判定する。例えばＣ言語などにおいては、return文の有無を判定すればよい。関数の戻り値に関するコーディングスタイルを判定することによって、プログラマが戻り値の記載を忘れたか又は戻り値のない関数であるかを他のプログラマが迷うことなく判断できる。
【発明の効果】
【００４１】
本発明による場合は、ソースプログラムを構成する構成要素の入力完了時点にて、記述済みのソースプログラムが予め定められたソースプログラムのコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合に警告を行うと共に、入力された構成要素に続く補完候補を表示して補完を行う構成とすることにより、コーディングスタイルのチェックを動的に行ってプログラマへ警告を与えることができると共に、コーディングスタイルに応じたソースプログラムの入力を支援することができる。これにより、プログラマはコーディングスタイルに従ったソースプログラムの記述を容易且つ確実に行うことができ、コーディングスタイルの統一又は標準化を確実に行うことができ、ソースプログラムの可読性を高めることができる。よって、ソースプログラムの再利用又はデバッグ等を効率よく行うことができ、プログラムの開発期間の短縮などに貢献できる。
【発明を実施するための最良の形態】
【００４２】
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。図１は、本発明に係るソースプログラム入力受付装置の構成を示すブロック図である。図において１は、汎用のＰＣ（Personal Computer）であり、予めインストールされたコーディングスタイルチェックプログラム９０を実行することによって本発明に係るソースプログラム入力受付装置として動作するものである。ＰＣ１には、画像を表示するためのディスプレイ２と、ユーザが入力操作を行うためのキーボード３及びマウス４とが接続されている。
【００４３】
ＰＣ１は、ＣＰＵ（Central Processing Unit）１１、画像出力部１２、メモリ１３、入力部１４、ディスクドライブ１５及びハードディスク１６等を備えて構成されている。ＣＰＵ１１は、ハードディスク１６に予めインストールされた種々のプログラムを読み出して実行することによって、ＰＣ１内の各ハードウェア資源の制御処理及び種々の演算処理等を行うものである。
【００４４】
画像出力部１２は、画像信号の授受を行うケーブルを介してディスプレイ２に接続されており、ＣＰＵ１１のプログラム実行により生成された画像データをディスプレイ２の表示に適した画像信号に変換して出力することによって、ディスプレイ２に画像表示を行う。
【００４５】
メモリ１３は、ＳＲＡＭ（Static Random Access Memory）又はＤＲＡＭ（Dynamic Random Access Memory）等のデータ書き換え可能な大容量の記憶素子で構成されている。ＣＰＵ１１は、ハードディスク１６からメモリ１３にプログラムを読み出して実行すると共に、制御処理及び演算処理等の過程で生成されたデータをメモリ１３に記憶しながら処理を行うことができる。
【００４６】
入力部１４は、キーボード３及びマウス４をそれぞれ接続するための接続端子を有している。キーボード３及びマウス４は、ユーザによる入力操作を受け付け、入力操作に応じた信号をＰＣ１の入力部１４へ入力する。入力部１４は、キーボード３及びマウス４から与えられる入力信号に応じて、ユーザによる入力操作の発生及びその操作内容をＣＰＵ１１へ通知する。これによりＣＰＵ１１は、ユーザの入力操作に応じた処理を行うことができる。
【００４７】
ディスクドライブ１５は、ＣＤＲＯＭ及びＤＶＤＲＯＭ等の光ディスク５０からデータを読み出して、メモリ１３又はハードディスク１６へ記憶する。例えばディスクドライブ１５は、コーディングスタイルチェックプログラム９０などのプログラムが記録された光ディスク５０からこれを読み出してハードディスク１６へ記憶することによって、コーディングスタイルチェックプログラム９０などのプログラムをＰＣ１にインストールすることができる。
【００４８】
ハードディスク１６は、大容量の磁気記憶装置であり、ＯＳ（Operating System）７１、コンパイラ７２及びコーディングスタイルチェックプログラム９０等の種々のプログラムと、組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３等の種々のデータを記憶している。ＯＳ７１はＰＣ１のハードウェア資源の管理などを行うためのプログラムであり、コンパイラ７２はソースプログラムをＣＰＵ１１が実行可能なオブジェクトプログラムに変換するためのプログラムである。
【００４９】
コーディングスタイルチェックプログラム９０は、プログラマが作成するソースプログラムの記述が予め定められたコーディングスタイルを満たした記述であるかをチェックするプログラムである。コーディングスタイルチェックプログラム９０は、ソースプログラムを記述するためのテキストエディタなどと共に実行され、又は、テキストエディタなどの一機能として実現されるものであり、プログラマによるソースプログラムの入力が行われているときに動的にコーディングスタイルのチェックを行うことができる。
【００５０】
組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３は、コーディングスタイルチェックプログラム９０によるコーディングスタイルのチェック項目の設定などが記載されたテキストファイルである。コーディングスタイルチェックプログラム９０は、これらの設定ファイルを読み込み、設定ファイルにてチェックを行う設定がなされた項目についてコーディングスタイルのチェックを行う。
【００５１】
図２は、設定ファイルの一記述例を示す模式図である。図示の設定ファイルにおいては、例えば変数名の接頭字句に係るコーディングスタイルの設定が記述された”[PREFIX]”の項目と、ソースプログラムに付すコメントに係るコーディングスタイルの設定が記述された”[COMMENT]”の項目と、関数の記述に係るコーディングスタイルの設定が記述された”[FUNCTION]”の項目とが設けてある。
【００５２】
設定ファイルの”[PREFIX]”の項目には、変数の型と、この型の変数の変数名に付す接頭字句との対応が設定される。例えば、”VAR_UNSIGNED_INT_PREFIX, ui”の記述により、”unsigned int”型の変数には接頭字句として”ui”を付すというコーディングスタイルが設定されている。同様にして、”signed int”型の変数には接頭字句として”si”を付し、”unsigned long”型の変数には接頭字句として”ul”を付すという設定がなされている。また例えば、”VAR_GLOBAL_PREFIX, g_”の記述により、グローバル変数には接頭字句として”g_”を付すという設定がなされ、”VAR_ARRAY_PREFIX, a”の記述により、配列の変数には接頭字句として”a”を付すという設定がなされている（図２（１）参照）。
【００５３】
また、一の変数が上記の複数の条件に該当する場合（例えば”unsigned int”型のグローバル変数の配列など）、変数名には複数の接頭字句を付す必要があるが、このときの接頭字句の順序は”PREFIX_ORDER, SCOPE ARRAY TYPE”の記述により設定されている。この例では、変数のスコープ（グローバル変数であるか否か）、配列、変数型の順序で接頭字句が変数名に付される（図２（２）参照）。例えば、”unsigned int”型のグローバル変数の配列は、”g_aui”の接頭字句が付される。なお、これらの”[PREFIX]”の項目で設定された変数の接頭字句は、コーディングスタイルを満たすか否かの判定のみでなく、プログラマによる入力の補完処理を行う際にも用いられる。
【００５４】
設定ファイルの”[COMMENT]”の項目には、コメントに係るコーディングスタイルが設定される。例えば、”LINE_COMMENT_CHECK, TRUE”の記述により、”//”を使用したコメント（所謂、１行コメント）の記述が禁止され、このコメントの使用の有無をチェックする設定がなされている。また例えば、”FUNCTION_COMMENT_CHECK, TRUE”の記述により、関数定義の直前にヘッダとしてコメントを付すというコーディングスタイルが設定され、このコメントが記載されているか否かをチェックする設定がなされている。（図２（３）参照）。これらのチェックを行わない場合には、”TRUE”に代えて”FALSE”と記述すればよい。
【００５５】
設定ファイルの”[FUNCTION]”の項目には、関数の記述に係るコーディングスタイルのチェック内容が設定される。例えば、”MAX_FUNCTION_LINE, 100”の記述により、一つの関数の記述は１００行以内とするコーディングスタイルが設定されている。また例えば、”RETURN_CHECK, TRUE”の記述により、関数の戻り値を必ず記載するコーディングスタイルが設定され、”VOID_CHECK, TRUE”の記述により、引数のない関数の宣言にて”void”の記述の省略を禁止するコーディングスタイルが設定されている（図２（４）参照）。
【００５６】
組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３の記述は図２に示すものと同様であってよく、３つの設定ファイルに重複するコーディングスタイルの設定がなされていてもよく、更には相反するコーディングスタイルの設定がなされていてもよい。コーディングスタイルチェックプログラム９０は、組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３の３つの設定ファイルを読み込んでコーディングスタイルの設定を取得するが、３つの設定ファイルには予め優先度が付してあり、相反する設定がなされている場合には、優先度の高い設定ファイルに記述された設定を取得する。
【００５７】
例えば、組織設定ファイル９１は企業又は会社等の組織全体で統一されたコーディングスタイルを設定するためのファイルであり、プロジェクト設定ファイル９２は組織にて行われる一のプロジェクトに特化したコーディングスタイルを設定するためのファイルであり、個人設定ファイル９３はプロジェクトに参加するプログラマが個人用のコーディングスタイルを設定するためのファイルである。この場合に、個人設定ファイル９３を最も高い優先度とし、組織設定ファイル９１を最も低い優先度とすることができ、コーディングスタイルチェックプログラム９０は相反する設定がなされた場合には個人設定ファイル９３の設定を優先し、次いでプロジェクト設定ファイル９２の設定を優先することができる。
【００５８】
ＰＣ１において、プログラマはキーボード３又はマウス４を操作してテキストエディタなどを起動し、ソースプログラムの記述を行うことができる。プログラマによって記述されたソースプログラムは、コンパイラ７２の実行によってオブジェクトプログラムに変換（コンパイル）され、ＰＣ１のＣＰＵ１１にて実行することができる。本発明に係るコーディングスタイルチェックプログラム９０は、テキストエディタと共に起動して、プログラマによるソースプログラムの記述、即ちテキストエディタに対する文字及び記号等の入力を動的に監視し、入力されたソースプログラムの記述が３つの設定ファイルにより設定されたコーディングスタイルを満たしているか否かをチェックする。また、コーディングスタイルチェックプログラム９０は、プログラマによる入力を補完することができる場合には、コーディングスタイルに従った補完処理を行う。なお、３つの設定ファイルは、コーディングスタイルチェックプログラム９０の起動時に読み込まれる。
【００５９】
図３は、コーディングスタイルのチェック処理の概要を示すフローチャートであり、ＰＣ１のＣＰＵ１１がコーディングスタイルチェックプログラム９０を実行することによって行われる処理である。テキストエディタなどの起動に伴ってコーディングスタイルチェックプログラム９０を起動したＣＰＵ１１は、まず、ハードディスク１６に予め記憶された組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３の３つの設定ファイルを読み出して（ステップＳ１）、コーディングスタイルの設定を受け付ける。このときＣＰＵ１１は、各設定ファイルの優先度を判定して（ステップＳ２）、相反する設定については優先度の高い設定を受け付ける。
【００６０】
次いで、ＣＰＵ１１は、キーボード３による一の文字（記号などを含む）の入力が完了したか否かを判定する（ステップＳ３）。文字入力がなされていない場合（Ｓ３：ＮＯ）、ＣＰＵ１１は、例えばテキストエディタが終了されるなどでコーディングスタイルチェックプログラム９０を終了させる指示がテキストエディタ又はＯＳ７１等から与えられたか否かを調べる（ステップＳ４）。ＣＰＵ１１は、終了指示が与えられた場合（Ｓ４：ＹＥＳ）、コーディングスタイルチェックプログラム９０による処理を終了し、終了指示が与えられていない場合（Ｓ４：ＮＯ）、ステップＳ３へ戻り、文字入力又は終了指示がなされるまで待機する。
【００６１】
プログラマによる一の文字入力が完了した場合（Ｓ３：ＹＥＳ）、ＣＰＵ１１は、１文字毎のコーディングスタイルチェックを行う（ステップＳ５）、即ち文字入力が完了した時点におけるソースプログラムが、設定されたコーディングスタイルを満たしているか否かを一の文字の入力毎に行う。詳細は後述するが、文字の入力毎に行うコーディングスタイルのチェックには、例えば変数の接頭字句、トリグラフシーケンス及び１行コメント等のチェックがある。
【００６２】
次いで、ＣＰＵ１１は、文字入力の完了により１行の入力が完了したか否かを判定し（ステップＳ６）、１行の入力が完了していない場合には（Ｓ６：ＮＯ）、ステップＳ３へ戻り、上述の処理を繰り返し行う。１行の入力が完了した場合（Ｓ６：ＹＥＳ）、ＣＰＵ１１は、１行毎のコーディングスタイルチェックを行う（ステップＳ７）、即ち１行の入力が完了した時点におけるソースプログラムが、設定されたコーディングスタイルを満たしているか否かを１行の入力毎に行う。詳細は後述するが、１行の入力毎に行うコーディングスタイルのチェックには、例えば変数の接頭字句、１行当たりのステートメント数及び関数の引数等のチェックがある。
【００６３】
その後、ＣＰＵ１１は、１行の入力完了により一の関数の入力が完了したか否かを判定し（ステップＳ８）、一の関数の入力が完了していない場合には（Ｓ８：ＮＯ）、ステップＳ３へ戻り、上述の処理を繰り返し行う。一の関数の入力が完了した場合（Ｓ８：ＹＥＳ）、ＣＰＵ１１は、１関数毎のコーディングスタイルチェックを行う（ステップＳ９）。詳細は後述するが、関数の入力毎に行うコーディングスタイルのチェックには、例えば関数の行数、コメントの有無及び戻り値の有無等のチェックがある。
【００６４】
コーディングスタイルチェックプログラムを実行するＣＰＵ１１は、テキストエディタなどへのソースプログラムの入力が行われている間、上記のフローチャートのステップＳ３〜Ｓ９の処理を繰り返し行っており、文字、行又は関数の入力が完了する都度、コーディングスタイルのチェックを行っている。またＣＰＵ１１は、文字、行又は関数の入力毎にコーディングスタイルのチェックを行うと共に、可能であればコーディングスタイルを満たす入力の補完処理を行う。これらにより、ソースプログラムのコーディングスタイルのチェック及び補完が常時行われるため、プログラマがコーディングスタイルに反したソースプログラムの記述を行うことを防止できる。
【００６５】
次に、文字、行又は関数の入力完了毎に行われるコーディングスタイルチェック処理の詳細について、複数の簡単な例を用いて説明する。図４は、変数名の接頭字句の補完に係る処理を説明するための模式図であり、また図５は、変数名の接頭字句の補完処理の手順を示すフローチャートである。なお、図４及び図５に示す変数名の接頭字句の補完処理は、図３のステップＳ５に示した１文字毎のコーディングスタイルチェック処理の１つとして行われる。
【００６６】
例えば、プログラマが変数宣言として”unsigned int”の記述を入力するとき、この記述の最後の文字’t’の入力が完了した場合に（図４（ａ）参照）、コーディングスタイルチェックプログラム９０はこの変数型に対応する接頭字句がコーディングスタイルとして設定されているか否かを判定する。変数型に対応する接頭字句が設定されている場合、コーディングスタイルチェックプログラム９０は、設定された接頭字句の組み合わせから、使用される可能性がある接頭字句を補完候補として一覧表示する（図４（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された補完候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された補完候補の接頭字句をテキストエディタなどに挿入して補完を行う（図４（ｃ）参照）。
【００６７】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、変数名の接頭字句の補間処理において、まず、入力された一の文字が、変数宣言の記述の（最後の）入力であるか否かを判定し（ステップＳ２１）、変数宣言の記述の入力でない場合には（Ｓ２１：ＮＯ）、処理を終了する。入力された文字が変数宣言の記述である場合（Ｓ２１：ＹＥＳ）、ＣＰＵ１１は、入力された変数型に対応する接頭字句が設定ファイルにて設定されているか否かを調べることにより、接頭字句の補完候補が存在するか否かを更に判定する（ステップＳ２２）。補完候補が存在しない場合（Ｓ２２：ＮＯ）、ＣＰＵ１１は処理を終了する。
【００６８】
補完候補が存在する場合（Ｓ２２：ＹＥＳ）、ＣＰＵ１１は、補完候補の接頭字句を一覧表示し（ステップＳ２３）、キーボード３又はマウス４に対する入力操作によっていずれか１つの補完候補の選択を受け付けたか否かを調べる（ステップＳ２４）。補完候補の選択を受け付けていない場合（Ｓ２４：ＮＯ）、ＣＰＵ１１は、ステップＳ２３へ戻り、補完候補の一覧表示を継続して行う。補完候補の選択を受け付けた場合（Ｓ２４：ＹＥＳ）、ＣＰＵ１１は、選択された補完候補の接頭字句をソースプログラムに挿入することによって、変数の接頭字句を補完し（ステップＳ２５）、処理を終了する。
【００６９】
図６は、トリグラフシーケンスのチェック処理を説明するための模式図であり、また図７は、トリグラフシーケンスのチェック処理の手順を示すフローチャートである。なお、図６及び図７に示すトリグラフシーケンスのチェック処理は、図３のステップＳ５に示した１文字毎のコーディングスタイルチェック処理の１つとして行われる。
【００７０】
トリグラフシーケンスとは、連続した２つの’?’記号に続けて文字又は記号を入力するものであり、Ｃ言語などにおいて’｛’に代えて”??<”を入力することができる。コーディングスタイルチェックプログラム９０は、連続した”??”に続く３文字目の入力が完了した場合に（図６（ａ）参照）、トリグラフシーケンスの入力がなされたと判定してエラーメッセージを表示すると共に、これを修正するための修正候補を一覧表示する（図６（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された修正候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された修正候補に従ってテキストエディタに入力されたソースプログラムの修正を行う（図６（ｃ）参照）。
【００７１】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、トリグラフシーケンスのチェック処理において、まず、入力された一の文字が、連続した”??”に続く３文字目の入力であるか否かを判定し（ステップＳ３１）、”??”に続く３文字目でない場合には（Ｓ３１：ＮＯ）、処理を終了する。入力された文字が”??”に続く３文字目の場合（Ｓ３１：ＹＥＳ）、ＣＰＵ１１は、この入力を修正することができる修正候補が存在するか否かを更に判定する（ステップＳ３２）。修正候補が存在しない場合（Ｓ３２：ＮＯ）、ＣＰＵ１１は、エラーメッセージを表示して（ステップＳ３６）、処理を終了する。
【００７２】
修正候補が存在する場合（Ｓ３２：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージと共に修正候補を一覧表示し（ステップＳ３３）、キーボード３又はマウス４に対する入力操作によっていずれか１つの修正候補の選択を受け付けたか否かを調べる（ステップＳ３４）。修正候補の選択を受け付けていない場合（Ｓ３４：ＮＯ）、ＣＰＵ１１は、ステップＳ３３へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合（Ｓ３４：ＹＥＳ）、ＣＰＵ１１は、選択された修正候補に従ってソースプログラムの修正を行い（ステップＳ３５）、処理を終了する。
【００７３】
図８は、１行コメントのチェック処理を説明するための模式図であり、また図９は、１行コメントのチェック処理の手順を示すフローチャートである。なお、図８及び図９に示す１行コメントのチェック処理は、図３のステップＳ５に示した１文字毎のコーディングスタイルチェック処理の１つとして行われる。
【００７４】
１行コメントとは、Ｃ言語などにおいて、連続した２つの’/’記号に続けてコメントを入力するものであり、”//”からその行の最後までがコメントとして扱われる。コーディングスタイルチェックプログラム９０は、連続した２つの’/’の２文字目の入力が完了した場合に（図８（ａ）参照）、１行コメントの入力がなされたと判定してエラーメッセージを表示し（図８（ｂ）参照）、”/*”及び”*/”を用いたコメントへの修正を行う（図８（ｃ）参照）。
【００７５】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、１行コメントのチェック処理において、まず、入力された一の文字が、連続する’/’の２文字目の入力であるか否かを判定し（ステップＳ４１）、’/’の２文字目の入力でない場合には（Ｓ４１：ＮＯ）、処理を終了する。入力された文字が連続する’/’の２文字目の場合（Ｓ４１：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージを表示する（ステップＳ４２）と共に、ソースプログラムに記述された”//”のコメントを”/*”及び”*/”を用いたコメントに修正して（ステップＳ４３）、処理を終了する。
【００７６】
図１０は、変数名の接頭字句のチェック処理を説明するための模式図であり、また図１１は、変数名の接頭字句のチェック処理の手順を示すフローチャートである。なお、図１０及び図１１に示す変数名の接頭字句のチェック処理は、図３のステップＳ７に示した１行毎のコーディングスタイルチェック処理の１つとして行われる。
【００７７】
コーディングスタイルチェックプログラム９０は上述の図４及び図５の接頭字句の補完処理により変数名の補完を行うことができるが、プログラマが補完候補の選択を誤る又は補完後に変数名を変更する等の要因により、変数型に対応した変数名を付すというコーディングスタイルが満たされない場合がある。そこで、コーディングスタイルチェックプログラム９０は、ソースプログラムの変数宣言について１行の入力が完了した場合に（図１０（ａ）参照）、変数型と変数名の接頭字句とが予め定められた設定に違反していないかを判定する。変数型と変数名の接頭字句とが適切に対応していない場合、コーディングスタイルチェックプログラム９０は、エラーメッセージと共に変数名の修正候補を一覧表示する（図１０（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された修正候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された修正候補に従って変数名を修正する（図１０（ｃ）参照）。
【００７８】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、変数名の接頭字句のチェック処理において、まず、入力された１行に変数宣言が含まれているか否かを判定し（ステップＳ５１）、変数宣言が含まれていなければ（Ｓ５１：ＮＯ）、処理を終了する。変数宣言が含まれている場合（Ｓ５１：ＹＥＳ）、ＣＰＵ１１は、変数型に対して変数名の接頭字句が適切であるか否かを判定する（ステップＳ５２）。接頭字句が適切であれば（Ｓ５２：ＹＥＳ）、ＣＰＵ１１は処理を終了する。
【００７９】
変数名の接頭字句が適切でない場合（Ｓ５２：ＮＯ）、ＣＰＵ１１は、この変数名を修正するための修正候補が存在するか否かを更に判定する（ステップＳ５３）。修正候補が存在しない場合（Ｓ５３：ＮＯ）、ＣＰＵ１１は、エラーメッセージを表示して（ステップＳ５７）、処理を終了する。修正候補が存在する場合（Ｓ５３：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージと共に修正候補を一覧表示し（ステップＳ５４）、キーボード３又はマウス４に対する入力操作によっていずれか１つの修正候補の選択を受け付けたか否かを調べる（ステップＳ５５）。修正候補の選択を受け付けていない場合（Ｓ５５：ＮＯ）、ＣＰＵ１１は、ステップＳ５４へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合（Ｓ５５：ＹＥＳ）、ＣＰＵ１１は、選択された修正候補に従って変数名の修正を行い（ステップＳ５６）、処理を終了する。
【００８０】
図１２は、１行のステートメント数のチェック処理を説明するための模式図であり、また図１３は、１行のステートメント数のチェック処理の手順を示すフローチャートである。なお、図１２及び図１３に示す変数名の接頭字句のチェック処理は、図３のステップＳ７に示した１行毎のコーディングスタイルチェック処理の１つとして行われる。
【００８１】
ステートメントとは、一つの処理に関する記述であり、Ｃ言語などにおいては’;’記号により区切られる構成要素である。コーディングスタイルチェックプログラム９０は、ソースプログラムの１行の入力が完了した場合に（図１２（ａ）参照）、この行にステートメントが複数含まれているか否かを判定する。複数のステートメントが１行に含まれている場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを表示すると共に（図１２（ｂ）参照）、複数のステートメントを複数の行に分割する（図１２（ｃ）参照）。
【００８２】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、ステートメント数のチェック処理において、まず、入力された１行にステートメントが複数含まれているか否かを判定し（ステップＳ６１）、複数のステートメントが含まれていない場合（Ｓ６１：ＮＯ）、即ち１行に１つのステートメントが記述されている場合には、処理を終了する。１行にステートメントが複数含まれている場合（Ｓ６１：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージを表示する（ステップＳ６２）と共に、１行に含まれる複数のステートメントを、複数の行に分割する修正を行って（ステップＳ６３）、処理を終了する。
【００８３】
図１４は、引数のない関数のチェック処理を説明するための模式図であり、また図１５は、引数のない関数のチェック処理の手順を示すフローチャートである。なお、図１４及び図１５に示す引数のない関数のチェック処理は、図３のステップＳ７に示した１行毎のコーディングスタイルチェック処理の一つとして行われる。
【００８４】
コーディングスタイルチェックプログラム９０は、ソースプログラムの１行の入力が完了した場合に（図１４（ａ）参照）、この行に関数宣言が含まれているか否かを判定する。関数宣言が含まれているときに、コーディングスタイルチェックプログラム９０は、この関数の引数を調べ、引数がなく、且つ、”void”の記述がない場合にエラーメッセージと修正候補とを一覧表示する（図１４（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された修正候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された修正候補に従って関数宣言の記述を修正する（図１４（ｃ）参照）。
【００８５】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、引数のない関数のチェック処理において、まず、入力された１行に関数宣言が含まれているか否かを判定し（ステップＳ７１）、関数宣言が含まれていなければ（Ｓ７１：ＮＯ）、処理を終了する。関数宣言が含まれている場合（Ｓ７１：ＹＥＳ）、ＣＰＵ１１は、この関数の引数がなく、且つ、”void”の記述がないかを判定する（ステップＳ７２）。この関数に引数があるか、又は、引数がなく”void”の記述がある場合（Ｓ７２：ＮＯ）、ＣＰＵ１１は処理を終了する。
【００８６】
関数宣言に係る関数に引数がなく、且つ、”void”の記述がない場合（Ｓ７２：ＹＥＳ）、ＣＰＵ１１は、この関数宣言を修正するための修正候補が存在するか否かを更に判定する（ステップＳ７３）。修正候補が存在しない場合（Ｓ７３：ＮＯ）、ＣＰＵ１１は、エラーメッセージを表示して（ステップＳ７７）、処理を終了する。修正候補が存在する場合（Ｓ７３：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージと共に修正候補を一覧表示し（ステップＳ７４）、キーボード３又はマウス４に対する入力操作によっていずれか１つの修正候補の選択を受け付けたか否かを調べる（ステップＳ７５）。修正候補の選択を受け付けていない場合（Ｓ７５：ＮＯ）、ＣＰＵ１１は、ステップＳ７４へ戻り、エラーメッセージ及び修正候補の一覧表示を継続して行う。修正候補の選択を受け付けた場合（Ｓ７５：ＹＥＳ）、ＣＰＵ１１は、選択された修正候補に従って関数宣言の修正を行い（ステップＳ７６）、処理を終了する。
【００８７】
図１６は、関数の行数のチェック処理を説明するための模式図であり、また図１７は、関数の行数のチェック処理の手順を示すフローチャートである。なお、図１６及び図１７に示す関数の行数のチェック処理は、図３のステップＳ９に示した１関数毎のコーディングスタイルチェック処理の一つとして行われる。
【００８８】
コーディングスタイルチェックプログラム９０は、ソースプログラムの１つの関数の入力が完了した場合に（図１６（ａ）参照）、この関数が記述された行数をカウントする。カウントにより得られた行数が予め定められた制限数を超えている場合、コーディングスタイルチェックプログラム９０は、エラーメッセージの表示を行う（図１６（ｂ）参照）。
【００８９】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、関数の行数のチェック処理において、まず、入力された１つの関数の行数をカウントし（ステップＳ８１）、カウント結果の行数が予め定められた制限数を超えたか否かを判定し（ステップＳ８２）、関数の行数が制限数を超えない場合には（Ｓ８２：ＮＯ）、処理を終了する。関数の行数が制限数を超える場合（Ｓ８２：ＹＥＳ）、ＣＰＵ１１は、エラーメッセージを表示して（ステップＳ８３）、処理を終了する。
【００９０】
図１８は、関数のヘッダコメントのチェック処理を説明するための模式図であり、また図１９は、関数のヘッダコメントのチェック処理の手順を示すフローチャートである。なお、図１８及び図１９に示す関数のヘッダコメントのチェック処理は、図３のステップＳ９に示した１関数毎のコーディングスタイルチェック処理の一つとして行われる。
【００９１】
ヘッダコメントとは、関数の機能及び入出力データ等の情報を記述するコメントであり、関数記述の直前に記載される。コーディングスタイルチェックプログラム９０は、ソースプログラムの１つの関数の入力が完了した場合に（図１８（ａ）参照）、この関数記述の直前にヘッダコメントが記載されているか否かを判定する。ヘッダコメントが記載されていない場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを表示すると共に（図１８（ｂ）参照）、ヘッダコメントのひな型を関数記述の直前に追加する修正を行う（図１８（ｃ）参照）。
【００９２】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、関数のヘッダコメントのチェック処理において、まず、入力された１つの関数の記述の直前にヘッダコメントが記載されているか否かを判定し（ステップＳ９１）、ヘッダコメントが記載されている場合には（Ｓ９１：ＹＥＳ）、処理を終了する。ヘッダコメントが記載されていない場合には（Ｓ９１：ＮＯ）、ＣＰＵ１１は、エラーメッセージを表示する（ステップＳ９２）と共に、関数記述の直前にヘッダコメントのひな型を追加する修正を行って（ステップＳ９３）、処理を終了する。
【００９３】
図２０は、関数のreturn文のチェック処理を説明するための模式図であり、また図２１は、関数のreturn文のチェック処理の手順を示すフローチャートである。なお、図２０及び図２１に示す関数のreturn文のチェック処理は、図３のステップＳ９に示した１関数毎のコーディングスタイルチェック処理の一つとして行われる。
【００９４】
Ｃ言語などにおいてreturn文は、関数の処理を終了して呼び出し元の処理へ戻すと共に、戻り値を指定するための文である。コーディングスタイルチェックプログラム９０は、ソースプログラムの１つの関数の入力が完了した場合に（図２０（ａ）参照）、この関数にreturn文が含まれているか否かを判定する。return文が含まれていない場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを表示する（図２０（ｂ）参照）。
【００９５】
コーディングスタイルチェックプログラム９０を実行するＣＰＵ１１は、関数のreturn文のチェック処理において、まず、入力された１つの関数にreturn文が含まれているか否かを判定し（ステップＳ１０１）、return文が含まれている場合には（Ｓ１０１：ＹＥＳ）、処理を終了する。return文が含まれていない場合には（Ｓ１０１：ＮＯ）、ＣＰＵ１１は、エラーメッセージを表示して（ステップＳ１０２）、処理を終了する。
【００９６】
以上の構成のＰＣ１及びコーディングスタイルチェックプログラム９０においては、ソースプログラムを構成する文字、行又は関数等の構成要素の入力完了時点にて、記述済みのソースプログラムが予め設定ファイルに設定されたコーディングスタイルを満たしているかを判定し、コーディングスタイルを満たしていない場合にエラーメッセージを表示すると共に、入力された構成要素の補完を行う構成とすることにより、プログラマがソースプログラムを入力している際に動的にコーディングスタイルをチェックして警告を与えることができ、プログラマによるソースプログラムの入力を支援することができる。これにより、プログラマはコーディングスタイルに従ったソースプログラムの記述を容易且つ確実に行うことができ、コーディングスタイルの統一又は標準化を確実に行うことができ、ソースプログラムの可読性を高めることができる。
【００９７】
また、ソースプログラムの記述がコーディングスタイルを満たしていない場合に、エラーメッセージを表示するのみでなく、修正候補を一覧表示してプログラマに選択させ、選択に応じて修正を行うことにより、コーディングスタイルを満たす修正方法をプログラマに示すことができ、誤りの修正を確実に行うことができる。
【００９８】
また、組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３等の複数の設定ファイルにコーディングスタイルの設定を記述することができ、相反する設定がなされた場合には優先度の高い設定ファイルの設定に基づいてチェック及び補完等を行うことにより、組織毎、プロジェクト毎及び個人毎等の異なる単位でコーディングスタイルを決定して管理することができる。
【００９９】
なお、本実施の形態においては、汎用のＰＣ１にコーディングスタイルチェックプログラム９０をインストールして動作させることにより、ＰＣ１を本発明のソースプログラム入力受付装置とする構成としたが、これに限るものではなく、専用のハードウェアとしてソースプログラム入力受付装置を構成してもよい。また、コーディングスタイルチェックプログラム９０は、ソースプログラムを記述するためのテキストエディタと共に動作するか又はこのテキストエディタの一機能として動作する構成としたが、これに限るものではなく、例えばプログラムの統合開発環境などの一機能として動作する構成であってもよい。
【０１００】
また、コーディングスタイルチェックプログラム９０は、組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３の３つの設定ファイルに設定されたコーディングスタイルを取得する構成としたが、これに限るものではなく、２つ以下の設定ファイルを読み込んでもよく、４つ以上の設定ファイルを読み込んでもよい。また、組織設定ファイル９１、プロジェクト設定ファイル９２及び個人設定ファイル９３の優先順序も一例であって、これに限るものではない。
【０１０１】
また、図２に示した設定ファイルの記述は一例であって、これに限るものではない。また、図４及び図６等に示したソースプログラムの記述は一例であって、これに限るものではない。また、これらの図に示したエラーメッセージ、補完候補及び修正候補等も一例であって、これに限るものではない。また、これらの図に示したソースプログラムはＣ言語、Ｃ＋＋言語又はＪＡＶＡ（登録商標）言語等の記述であるが、これら以外のプログラミング言語で記述されるソースプログラムについても同様に本発明を適用することができる。
【０１０２】
また、ソースプログラムの１文字、１行及び１関数の入力毎にコーディングスタイルのチェックを行う構成としたが、これに限るものではなく、その他にカッコを閉じる記号（例えば’]’、’)’又は’}’等の記号）、又はステートメントの終端記号（例えば’;’などの記号）の入力毎にコーディングスタイルのチェックを行う構成としてもよい。また、図４〜図２１にコーディングスタイルのチェック、補完及び修正等の例を示したが、コーディングスタイルチェックプログラム９０が扱うコーディングスタイルはこれに限るものではなく、同様にしてその他様々なコーディングスタイルのチェックを行うことができる。
【０１０３】
（変形例）
以下に、その他のコーディングスタイルのチェック処理について例示する。ただし、コーディングスタイルチェックプログラム９０が扱うコーディングスタイルはこれに限るものではない。
図２２は、演算の優先順位のチェック処理を説明するための模式図である。Ｃ言語などのプログラミング言語においては演算子の優先順位が予め定められているが（例えば、加算’＋’より乗算’＊’を優先するなど）、論理演算など優先順位がわかりにくいものがあり、優先順位の高い演算をカッコ’(’及び’)’で括ることによって、優先順位を明確にすることができる。そこで、コーディングスタイルチェックプログラム９０は、複数の演算子を含む演算式には優先順位を示すカッコを付すコーディングスタイルを設定可能とし、優先順位を示すカッコの有無をチェックする。
【０１０４】
演算の優先順位のチェックは、演算式の入力毎に行うか、又は１行毎に行ってもよい。コーディングスタイルチェックプログラム９０は、演算式の入力が完了した場合に（図２２（ａ）参照）、入力された演算式の演算の優先順位が明確であるか否かを判定する。演算式に複数（Ｎ個）の演算子が含まれており、且つ、（Ｎ−１）個の演算子に係る演算がカッコでくくられていない場合に、優先順位が明確でないと判定することができる。優先順位が明確でないと判定した場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを表示すると共に、入力された演算子にカッコを付した修正候補を一覧表示する（図２２（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された修正候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された修正候補に従って演算式の修正を行う（図２２（ｃ）参照）。
【０１０５】
図２３は、if文のカッコのチェック処理を説明するための模式図である。Ｃ言語などのプログラミング言語においては、条件分岐のためのif文を記述することができる。例えば、if文では”if(条件式)”の記述の後に、この条件が成立した場合に行う処理の記述を行うが、条件成立時に行う処理が複数の場合には複数のステートメントを”{”及び”}”のカッコで括る必要がある。逆に、条件成立時に行う処理が１つのステートメントで記述できる処理であればカッコで括る必要はない。しかし、if文の後のステートメントがカッコで括られていない場合には、条件成立時に行う処理の範囲が明確でないため、ソースプログラムの可読性が低下する。そこで、コーディングスタイルチェックプログラム９０は、if文に続くステートメントがカッコで括られているか否かを判定する。
【０１０６】
if文のカッコのチェックは、例えばステートメントの終端を示す’;’記号の入力毎に行うことができる。コーディングスタイルチェックプログラム９０は、if文に続くステートメントの終端記号が入力された場合（図２３（ａ）参照）、このステートメントがカッコで括られているか否かを判定する。カッコで括られていない場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを出力し（図２３（ｂ）参照）、更にif文に続くステートメントをカッコで括る修正を行う（図２３（ｃ）参照）。
【０１０７】
図２４は、コンマ式のチェック処理を説明するための模式図である。Ｃ言語などのプログラミング言語においては、複数の演算式をコンマで区切るコンマ式を記載することができるが、コンマ式の使用はソースプログラムの可読性を低下させる。そこで、コーディングスタイルチェックプログラム９０は、コンマ式の使用をコーディングスタイルとして禁止し、コンマ式の使用を判定する。
【０１０８】
コンマ式のチェックは、例えばステートメントの終端を示す’;’記号の入力毎に行うことができる。コーディングスタイルチェックプログラム９０は、ステートメントの終端記号’;’が入力された場合（図２４（ａ）参照）、このステートメントにコンマ式が含まれているか否かを判定する。コンマ式が含まれている場合、コーディングスタイルチェックプログラム９０は、エラーメッセージを表示すると共に、コンマ式を使用しない記載に修正するための修正候補を一覧表示する（図２４（ｂ）参照）。プログラマはキーボード３又はマウス４を操作して一覧表示された修正候補からいずれか１つを選択することができ、コーディングスタイルチェックプログラム９０は選択された修正候補に従ってコンマ式を用いない記述に修正する（図２４（ｃ）参照）。
【図面の簡単な説明】
【０１０９】
【図１】本発明に係るソースプログラム入力受付装置の構成を示すブロック図である。
【図２】設定ファイルの一記述例を示す模式図である。
【図３】コーディングスタイルのチェック処理の概要を示すフローチャートである。
【図４】変数名の接頭字句の補完に係る処理を説明するための模式図である。
【図５】変数名の接頭字句の補完処理の手順を示すフローチャートである。
【図６】トリグラフシーケンスのチェック処理を説明するための模式図である。
【図７】トリグラフシーケンスのチェック処理の手順を示すフローチャートである。
【図８】１行コメントのチェック処理を説明するための模式図である。
【図９】１行コメントのチェック処理の手順を示すフローチャートである。
【図１０】変数名の接頭字句のチェック処理を説明するための模式図である。
【図１１】変数名の接頭字句のチェック処理の手順を示すフローチャートである。
【図１２】１行のステートメント数のチェック処理を説明するための模式図である。
【図１３】１行のステートメント数のチェック処理の手順を示すフローチャートである。
【図１４】引数のない関数のチェック処理を説明するための模式図である。
【図１５】引数のない関数のチェック処理の手順を示すフローチャートである。
【図１６】関数の行数のチェック処理を説明するための模式図である。
【図１７】関数の行数のチェック処理の手順を示すフローチャートである。
【図１８】関数のヘッダコメントのチェック処理を説明するための模式図である。
【図１９】関数のヘッダコメントのチェック処理の手順を示すフローチャートである。
【図２０】関数のreturn文のチェック処理を説明するための模式図である。
【図２１】関数のreturn文のチェック処理の手順を示すフローチャートである。
【図２２】演算の優先順位のチェック処理を説明するための模式図である。
【図２３】if文のカッコのチェック処理を説明するための模式図である。
【図２４】コンマ式のチェック処理を説明するための模式図である。
【符号の説明】
【０１１０】
１  ＰＣ（コンピュータ、ソースプログラム入力受付装置）
２  ディスプレイ（警告手段、補完候補表示手段）
３  キーボード（補完候補選択手段）
４  マウス（補完候補選択手段）
１１  ＣＰＵ（入力完了判定手段、記述様式判定手段、警告手段、補完可否判定手段、補完候補表示手段、補完候補選択手段、補完手段）
１２  画像出力部
１３  メモリ
１４  入力部
１５  ディスクドライブ
１６  ハードディスク
５０  光ディスク
７１  ＯＳ
７２  コンパイラ
９０  コーディングスタイルチェックプログラム（コンピュータプログラム）
９１  組織設定ファイル
９２  プロジェクト設定ファイル
９３  個人設定ファイル
【図１】
2010097426.tif 000003
【図２】
2010097426.tif 000004
【図３】
2010097426.tif 000005
【図４】
2010097426.tif 000006
【図５】
2010097426.tif 000007
【図６】
2010097426.tif 000008
【図７】
2010097426.tif 000009
【図８】
2010097426.tif 000010
【図９】
2010097426.tif 000011
【図１０】
2010097426.tif 000012
【図１１】
2010097426.tif 000013
【図１２】
2010097426.tif 000014
【図１３】
2010097426.tif 000015
【図１４】
2010097426.tif 000016
【図１５】
2010097426.tif 000017
【図１６】
2010097426.tif 000018
【図１７】
2010097426.tif 000019
【図１８】
2010097426.tif 000020
【図１９】
2010097426.tif 000021
【図２０】
2010097426.tif 000022
【図２１】
2010097426.tif 000023
【図２２】
2010097426.tif 000024
【図２３】
2010097426.tif 000025
【図２４】
2010097426.tif 000026