(57)【要約】【課題】修正後のソースプログラムに存在するばらつきを低減する。【解決手段】情報処理装置１は、既存のソースプログラムを参照し、所定の構造部分における複数の規約要素の統計をそれぞれ算出する。情報処理装置１は、複数の規約要素のうち、算出された規約要素の統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する規約要素を特定する。【選択図】図１
2018156207.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ソースコード群を参照し、所定の構造部分における複数の記載ルールの統計をそれぞれ算出し、
複数の記載ルールのうち、算出された記載ルールの統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する記載ルールを特定する
処理を実行させるコーディング規約生成プログラム。
【請求項２】
該特定した記載ルールを纏めたコーディング規約候補を生成する
ことを特徴とする請求項１に記載のコーディング規約生成プログラム。
【請求項３】
前記特定する処理は、前記複数の記載ルールのうち、前記所定の基準としての第１の基準および第２の基準を満足する記載ルールをそれぞれ特定し、
前記生成する処理は、前記第１の基準を満足する記載ルールを纏めた第１のコーディング規約候補および前記第２の基準を満足する記載ルールを纏めた第２のコーディング規約候補を生成する
ことを特徴とする請求項２に記載のコーディング規約生成プログラム。
【請求項４】
前記生成する処理によって生成された複数のコーディング規約候補から最も修正率の低いコーディング規約候補をコーディング規約として選択する
ことを特徴とする請求項３に記載のコーディング規約生成プログラム。
【請求項５】
ユーザの要求に応じて、所定の記載ルールを、前記選択する処理によって選択されたコーディング規約に追加する
ことを特徴とする請求項４に記載のコーディング規約生成プログラム。
【請求項６】
ソースコード群を参照し、所定の構造部分における複数の記載ルールの統計をそれぞれ算出する算出部と、
複数の記載ルールのうち、算出された記載ルールの統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する記載ルールを特定する特定部と、
を有することを特徴とする情報処理装置。
【請求項７】
コンピュータが、
ソースコード群を参照し、所定の構造部分における複数の記載ルールの統計をそれぞれ算出し、
複数の記載ルールのうち、算出された記載ルールの統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する記載ルールを特定する
各処理を実行するコーディング規約生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コーディング規約生成プログラムなどに関する。
【背景技術】
【０００２】
ユーザがソースプログラムを作成する際、コーディング規約が存在する場合がある。かかる場合には、ユーザは、コーディング規約に基づいてソースプログラムをコーディングすることにより、ソースプログラムの解析が容易になり、ソースプログラムの品質やメンテナンスが向上する。
【０００３】
コーディング規約が存在する場合に、ソースプログラムがコーディング規約に即して記述されているかを解析する技術が開示されている（例えば、特許文献１参照）。かかる技術では、コーディングルールの重要度を、より後のフェーズのプログラム修正によって改善されたコーディングルールの重要度を上げるように、フェーズに応じた重み付けを行って変更する。
【０００４】
また、バージョン違いのコーディング規約が存在する場合に、ソースプログラムがコーディング規約に即して記述されているかを解析する技術が開示されている（例えば、特許文献２参照）。かかる技術では、既に解析したソースプログラムのバージョンと解析の際使用したコーディング規約のバージョンとを保持する。そして、既に解析したソースプログラムに追加または修正を行い、再度解析を行う場合、追加または修正を行ったソースプログラムに対する警告メッセージを出力装置に表示させる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１１７８９７号公報
【特許文献２】特開２０１１−１１３２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ユーザが、過去に作成したソースプログラムやプロトタイプ版のソースプログラムを修正する際、コーディング規約が生成されていなかったり、不明であったりする場合がある。かかる場合には、修正後のソースプログラムにばらつきがでてしまうという問題がある。
【０００７】
１つの側面では、ソースプログラムを修正する際のコーディング規約を生成することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、コーディング規約生成プログラムは、コンピュータに、ソースコード群を参照し、所定の構造部分における複数の記載ルールの統計をそれぞれ算出し、複数の記載ルールのうち、算出された記載ルールの統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する記載ルールを特定する、処理を実行させる。
【発明の効果】
【０００９】
１つの態様によれば、ソースプログラムを修正する際のコーディング規約を生成することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係る情報処理装置の構成を示す機能ブロック図である。
【図２】図２は、実施例に係る用途別規約要素情報の一例を示す図である。
【図３】図３は、実施例に係る定義情報の一例を示す図である。
【図４】図４は、実施例に係る規約候補生成処理の流れの一例を示す図である。
【図５】図５は、実施例に係る規約選択処理の流れの一例を示す図である。
【図６】図６は、実施例に係る規約要素追加処理の流れの一例を示す図である。
【図７】図７は、実施例に係る規約候補生成処理のフローチャートの一例を示す図である。
【図８】図８は、コーディング規約生成プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するコーディング規約生成プログラム、情報処理装置およびコーディング規約生成方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１２】
［情報処理装置の構成］
図１は、実施例に係る情報処理装置の構成を示す機能ブロック図である。図１に示す情報処理装置１は、既存のソースプログラムのコード記載に関する特徴を解析し、修正作業の厳しさが異なる複数のコーディング規約候補を生成して提示する。なお、ソースプログラムは、ソースコード群の一例である。
【００１３】
情報処理装置１は、制御部１０および記憶部２０を有する。
【００１４】
制御部１０は、ＣＰＵ（Central  Processing  Unit）などの電子回路に対応する。そして、制御部１０は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部１０は、例えば、統計算出部１１、規約要素特定部１２、規約候補生成部１３、規約選択部１４および規約要素追加部１５を有する。なお、統計算出部１１は、算出部の一例である。規約要素特定部１２は、特定部の一例である。
【００１５】
記憶部２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部２０は、例えば、用途別規約要素情報２１および定義情報２２を有する。また、記憶部２０は、図示しない規約要素群を有する。
【００１６】
用途別規約要素情報２１は、ソースプログラムの用途別に用いられる規約要素を定義した情報である。用途には、ソースプログラムの種類やソースプログラムの実装機能が挙げられる。ソースプログラムの種類には、例えば、Ｃ言語やＦｏｒｔｒａｎ言語などのプログラム言語の種類が挙げられる。また、規約要素には、例えば、１行の桁数、ソースプログラムやソースプログラム内メソッドのヘッダフォーマット、メソッドとメソッドとの間の行数、メソッド定義や判定文の後のインデントカラム数が挙げられる。さらに、規約要素には、コメントの開始位置、メソッドや変数名などの命名方法が挙げられる。規約要素の一例として、判定文であるＩＦ文の後のインデントカラム数の場合であるとする。すると、インデントカラム数について、０であることを示す規約要素、１桁であることを示す規約要素、２桁であることを示す規約要素、３桁であることを示す規約要素、４桁であることを示す規約要素などが挙げられる。なお、ここでいうメソッドとは、ソースプログラム言語がオブジェクト指向プログラミング言語である場合に用いられる構造部分を示すサブルーチン（メンバ関数）のことをいう。
【００１７】
定義情報２２は、コード記載に関するコーディング規約を構成する記載ルール（規約要素）を特定する際に用いられる所定の基準を定義する。所定の基準には、例えば、適合率が適用される。「適合率」とは、既存のソースプログラムの中で規約要素が示す規約に関する箇所のうち当該規約と適合している箇所の割合のことをいう。言い換えれば、「適合率」とは、規約要素が示す規約を遵守している割合のことをいう。なお、既存のソースプログラムの中で規約要素が示す規約に関する箇所のうち当該規約と適合していない箇所の割合のことを「修正率」という。すなわち、規約を遵守していない規約違反を遵守させるためには、規約違反の箇所を修正する必要があるが、この規約違反の箇所の割合が「修正率」である。
【００１８】
ここで、用途別規約要素情報２１の一例を、図２を参照して説明する。図２は、実施例に係る用途別規約要素情報の一例を示す図である。なお、図２では、用途がソースプログラムの種類であるとして説明する。図２に示すように、用途別規約要素情報２１は、種類２１ａおよび規約要素ｉｄ（identifier）２１ｂを対応付ける情報である。種類２１ａは、ソースプログラム言語の種類を示す。規約要素ｉｄ２１ｂは、規約要素の識別子を示す。一例として、種類２１ａが「Ｃ（言語）」である場合には、規約要素ｉｄ２１ｂとして「ａ〜ｚ」を記憶している。すなわち、「Ｃ（言語）」の規約要素は、規約要素ｉｄ２１ｂとして「ａ」「ｂ」「ｃ」・・・「ｚ」であることを示す。また、種類２１ａが「Ｆｏｒｔｒａｎ（言語）」である場合には、規約要素ｉｄ２１ｂとして「ａａ〜ｚｚ」を記憶している。すなわち、「Ｆｏｒｔｒａｎ（言語）」の規約要素は、規約要素ｉｄ２１ｂとして「ａａ」「ａｂ」「ａｃ」・・・「ｚｚ」であることを示す。
【００１９】
ここで、定義情報２２の一例を、図３を参照して説明する。図３は、実施例に係る定義情報の一例を示す図である。なお、図３では、所定の基準が適合率であるとして説明する。図３に示すように、定義情報２２は、コーディング規約候補ｉｄ２２ａおよび採用適合率２２ｂを対応付ける情報である。コーディング規約候補ｉｄ２２ａは、コーディング規約候補の識別子を示す。採用適合率２２ｂは、各規約要素をコーディング規約候補へ採用するか否かが判断される際に用いられる基準である。一例として、コーディング規約候補ｉｄ２２ａが「Ａ」である場合に、採用適合率２２ｂとして適合率が「９０％以上」を記憶している。すなわち、コーディング規約候補ｉｄ２２ａが「Ａ」である場合、既存のソースプログラムとの適合率が「９０％以上」である規約要素が、コーディング規約候補ｉｄ２２ａ「Ａ」のコーディング規約候補へ採用される。コーディング規約候補ｉｄ２２ａが「Ｂ」である場合に、採用適合率２２ｂとして適合率が「６０％以上」を記憶している。すなわち、コーディング規約候補ｉｄ２２ａが「Ｂ」である場合、既存のソースプログラムとの適合率が「６０％以上」である規約要素が、コーディング規約候補ｉｄ２２ａ「Ｂ」のコーディング規約候補へ採用される。つまり、コーディング規約候補ｉｄ２２ａが「Ａ」であるコーディング規約候補は、採用基準が９０％以上の規約要素群が採用されているので、修正作業が緩いコーディング規約候補であるといえる。コーディング規約候補ｉｄ２２ａが「Ｂ」であるコーディング規約候補は、採用基準が６０％以上の規約要素群が採用されるので、コーディング規約候補ｉｄ２２ａが「Ａ」であるコーディング規約候補より修正作業が厳しいコーディング規約候補であるといえる。
【００２０】
統計算出部１１は、既存のソースプログラムを参照し、所定の構造部分における複数の規約要素の統計をそれぞれ算出する。例えば、統計算出部１１は、既存のソースプログラムを受け取り、ソースプログラムの種類を判定する。一例として、統計算出部１１は、ソースプログラムのファイル拡張子を用いてソースプログラムの種類を判定すれば良い。そして、統計算出部１１は、用途別規約要素情報２１を参照し、判定したソースプログラムの種類に対応する規約要素ｉｄ２１ｂを取得し、取得した規約要素ｉｄ２１ｂに対応する規約要素群を記憶部２０から読み込む。そして、統計算出部１１は、既存のソースプログラムを参照し、読み込んだ規約要素群に含まれる各規約要素の適合率を算出する。すなわち、統計算出部１１は、既存のソースプログラムの中で各規約要素が示すそれぞれの規約を遵守している割合を適合率として算出する。一例として、規約要素群が判定文であるＩＦ文の後のインデントカラム数に関するものであったとする。すると、インデントカラム数について、０であることを示す規約要素の適合率が１％、１桁であることを示す規約要素の適合率が３％、２桁であることを示す規約要素の適合率が９０％と算出される。３桁であることを示す規約要素の適合率が５％、４桁であることを示す規約要素の適合率が１％と算出される。なお、規約要素群は、インデントカラム数に関するもののみを一例としたが、これに限定されず、インデントカラム数に関するもの、１行の桁数に関するもの、変数名などの命名方法に関するものなど、複数の規約要素を組み合わせたものであっても良い。
【００２１】
規約要素特定部１２は、複数の規約要素のうち、規約要素毎の統計値がコーディング規約へ採用する際に用いられる所定の基準を満足する規約要素を特定する。例えば、規約要素特定部１２は、定義情報２２を参照し、コーディング規約候補ｉｄ２２ａ毎に、コーディング規約候補へ採用する際に用いられる採用適合率２２ｂを読み込む。そして、規約要素特定部１２は、コーディング規約候補ｉｄ２２ａ毎に、以下の処理を行う。規約要素特定部１２は、１つのコーディング規約候補ｉｄ２２ａについて、統計算出部１１によって算出された規約要素毎の適合率を用いて、当該コーディング規約候補ｉｄ２２ａに対応付けられた採用適合率２２ｂを満たす規約要素群を特定する。
【００２２】
規約候補生成部１３は、特定された規約要素を纏めたコーディング規約候補を生成する。例えば、規約候補生成部１３は、規約要素特定部１２によってコーディング規約候補ｉｄ２２ａ毎に特定された規約要素群をそれぞれ纏めたコーディング規約候補を生成する。そして、規約候補生成部１３は、コーディング規約候補ｉｄ２２ａ毎のコーディング規約候補を出力する。すなわち、規約候補生成部１３は、採用適合率２２ｂが異なるコーディング規約候補（例えば、修正作業が緩いコーディング規約候補や修正作業が厳しいコーディング規約候補）を複数生成し、段階的に提示する。
【００２３】
規約選択部１４は、複数のコーディング規約候補が生成された場合には、生成された複数のコーディング規約候補から最も修正率の低いコーディング規約候補をコーディング規約として選択する。例えば、規約選択部１４は、規約候補生成部１３によって生成された複数のコーディング規約候補それぞれを適用前（修正前）のソースプログラム群に適用する。そして、規約選択部１４は、適用したコーディング規約候補に対して、コーディング規約候補を適用した結果として修正率を算出する。一例として、規約選択部１４は、コーディング規約候補を適用したとき、適用したコーディング規約候補に含まれる規約要素毎に修正率を算出し、算出した規約要素毎の修正率の平均を算出する。算出した平均が、適用したコーディング規約候補の修正率となる。そして、規約選択部１４は、複数のコーディング規約候補の修正率の中で最も低い修正率のコーディング規約候補をコーディング規約として選択する。
【００２４】
なお、規約選択部１４は、複数のコーディング規約候補から最も修正率の低いコーディング規約候補をコーディング規約として選択すると説明したが、これに限定されない。規約選択部１４は、複数のコーディング規約候補から最も修正率の高いコーディング規約候補をコーディング規約として選択しても良い。規約選択部１４は、複数のコーディング規約候補から、ユーザの指定に応じたコーディング規約候補をコーディング規約として選択しても良い。また、適用前（修正前）のソースプログラム群は、既存のソースプログラムであっても良いし、既存のソースプログラムと異なる新たなソースプログラムであっても良い。
【００２５】
規約要素追加部１５は、ユーザの要求に応じて、選択されたコーディング規約に所定の規約要素を追加する。
【００２６】
［規約候補生成処理の流れ］
図４は、実施例に係る規約候補生成処理の流れの一例を示す図である。なお、図４では、定義情報２２は、コーディング規約候補Ａに対応付けられる採用適合率２２ｂを「９０％以上」、コーディング規約候補Ｂに対応付けられる採用適合率２２ｂを「６０％以上」と記憶している。
【００２７】
統計算出部１１は、既存のソースプログラムからソースプログラムの種類を判定し、ソースプログラムの種類に対応する規約要素群を記憶部２０から読み込む。ここでは、規約要素ａ、規約要素ｂ、規約要素ｃ、・・・が読み込まれたとする。
【００２８】
そして、統計算出部１１は、既存のソースプログラムを参照し、読み込んだ規約要素群に含まれる各規約要素の適合率を算出する。ここでは、規約要素ａの適合率は９５％であったとする。規約要素ｂの適合率は９１％であったとする。規約要素ｃの適合率は６８％であったとする。
【００２９】
そして、規約要素特定部１２は、定義情報２２を参照し、コーディング規約候補Ａに対応付けられる採用適合率２２ｂを読み込む。ここでは、コーディング規約候補Ａに対応付けられる採用適合率２２ｂとして「９０％以上」が読み込まれる。また、規約要素特定部１２は、定義情報２２を参照し、コーディング規約候補Ｂに対応付けられる採用適合率２２ｂを読み込む。ここでは、コーディング規約候補Ｂに対応付けられる採用適合率２２ｂとして「６０％以上」が読み込まれる。
【００３０】
コーディング規約候補Ａについて、規約要素特定部１２は、統計算出部１１によって算出された規約要素毎の適合率を用いて、当該コーディング規約候補Ａに対応付けられた採用適合率２２ｂを満たす規約候補群を特定する（ｍ１）。ここでは、コーディング規約候補Ａに対応付けられた採用適合率２２ｂは「９０％以上」であるので、規約要素特定部１２は、規約要素毎の適合率を用いて、９０％以上を満たす規約候補群を特定する。この結果、規約要素ａおよび規約要素ｂが特定される。
【００３１】
そして、規約候補生成部１３は、規約要素特定部１２によって特定された規約要素群をそれぞれ纏めたコーディング規約候補Ａを生成する。ここでは、規約要素ａおよび規約要素ｂをそれぞれ纏めたコーディング規約候補Ａが生成される。つまり、修正作業が緩いコーディング規約候補Ａが生成される。
【００３２】
コーディング規約候補Ｂについて、規約要素特定部１２は、統計算出部１１によって算出された規約要素毎の適合率を用いて、当該コーディング規約候補Ｂに対応付けられた採用適合率２２ｂを満たす規約候補群を特定する（ｍ２）。ここでは、コーディング規約候補Ｂに対応付けられた採用適合率２２ｂは「６０％以上」であるので、規約要素特定部１２は、規約要素毎の適合率を用いて、６０％以上を満たす規約候補群を特定する。この結果、規約要素ａ、規約要素ｂおよび規約要素ｃが特定される。
【００３３】
そして、規約候補生成部１３は、規約要素特定部１２によって特定された規約要素群をそれぞれ纏めたコーディング規約候補Ｂを生成する。ここでは、規約要素ａ、規約要素ｂおよび規約要素ｃをそれぞれ纏めたコーディング規約候補Ｂが生成される。すなわち、修正作業がより厳しいコーディング規約候補Ｂが生成される。つまり、コーディング規約候補Ａより修正作業が厳しいコーディング規約候補Ｂが生成される。
【００３４】
これにより、規約要素特定部１２は、採用適合率２２ｂを用いてコーディング規約候補へ採用し易い規約要素を特定することができる。この結果、規約候補生成部１３は、特定された規約要素を用いてコーディング規約候補を生成することで、既存のソースプログラムに存在する記載上のばらつきを低減することが可能となる。また、規約候補生成部１３は、複数の採用適合率２２ｂを用いて複数のコーディング規約候補を生成することで、複数のコーディング規約候補を段階的に提示することができる。
【００３５】
［規約選択処理の流れ］
図５は、実施例に係る規約選択処理の流れの一例を示す図である。なお、図５では、図４で生成されたコーディング規約候補Ａおよびコーディング規約候補Ｂを用いることとする。コーディング規約の選択は、修正率を用いることとする。
【００３６】
図５に示すように、規約選択部１４は、コーディング規約候補Ａを適用前（修正前）のソースプログラムに適用する（ｎ１）。そして、規約選択部１４は、コーディング規約候補Ａを適用時の適用結果として修正率を算出し、算出した修正率を記憶部２０に格納する。
【００３７】
そして、規約選択部１４は、コーディング規約候補Ｂを適用前（修正前）のソースプログラムに適用する（ｎ２）。そして、規約選択部１４は、コーディング規約候補Ｂを適用時の適用結果として修正率を算出し、算出した修正率を記憶部２０に格納する。
【００３８】
そして、規約選択部１４は、記憶部２０を参照し、複数のコーディング規約候補の修正率の中で最も低い修正率のコーディング規約候補をコーディング規約として選択する。ここでは、コーディング規約候補Ａの修正率が１０％であり、コーディング規約候補Ｂの修正率が３０％であるとする。すると、複数のコーディング規約候補の修正率の中でコーディング規約候補Ａの修正率が最も低いので、コーディング規約候補Ａがコーディング規約Ａとして選択される。
【００３９】
これにより、規約選択部１４は、複数のコーディング規約候補から特定のコーディング規約を容易に生成することができる。
【００４０】
［規約要素追加処理の流れ］
図６は、実施例に係る規約要素追加処理の流れの一例を示す図である。なお、図６では、図５で選択されたコーディング規約Ａを用いることとする。
【００４１】
図６に示すように、規約要素追加部１５は、ユーザの要求に応じて、所定の規約要素を、選択されたコーディング規約Ａに追加する（ｎ３）。ここでは、ユーザが規約要素ｘをコーディング規約Ａに追加することを要求するとする。すると、規約要素ｘは、コーディング規約Ａに追加される。
【００４２】
これにより、規約要素追加部１５は、コーディング規約を柔軟にカスタマイズすることができる。
【００４３】
［規約候補生成処理の流れ］
次に、規約候補生成処理のフローチャートを、図７を参照して説明する。図７は、実施例に係る規約候補生成処理のフローチャートの一例を示す図である。
【００４４】
図７に示すように、統計算出部１１は、既存のソースプログラムを読み込む（ステップＳ１１）。統計算出部１１は、読み込んだ既存のソースプログラムの種別や実装機能を判別して、使用する規約要素を選択する（ステップＳ１２）。例えば、統計算出部１１は、用途別規約要素情報２１を参照し、読み込んだ既存のソースプログラムの種類に対応する規約要素ｉｄ２１ｂを選択する。
【００４５】
そして、統計算出部１１は、選択した規約要素を読み込む（ステップＳ１３）。例えば、統計算出部１１は、選択した規約要素ｉｄ２１ｂに対応する規約要素を記憶部２０から読み込む。そして、規約要素特定部１２は、定義情報２２を参照し、コーディング規約候補ｉｄ２２ａ毎の採用適合率２２ｂを読み込む（ステップＳ１４）。
【００４６】
そして、統計算出部１１は、読み込んだ既存のソースプログラムを解析し、以下を出力する。すなわち、統計算出部１１は、使用した各規約要素および各規約要素の適合率を出力する（ステップＳ１５）。例えば、統計算出部１１は、読み込んだ既存のソースプログラムの中で各規約要素が示すそれぞれの規約を遵守している割合を適合率として算出する。そして、統計算出部１１は、規約要素毎に算出された適合率を規約要素と対応付けて出力する。
【００４７】
そして、規約要素特定部１２は、複数のコーディング規約候補ｉｄ２２ａから１つのコーディング規約候補ｉｄ２２ａを選択する（ステップＳ１６）。規約要素特定部１２は、統計算出部１１によって出力された解析結果を用いて、選択したコーディング規約候補ｉｄ２２ａに対応する採用適合率２２ｂを満たす規約要素があるか否かを判定する（ステップＳ１７）。選択したコーディング規約候補ｉｄ２２ａに対応する採用適合率２２ｂを満たす規約要素があると判定した場合には（ステップＳ１７；Ｙｅｓ）、規約要素特定部１２は、採用適合率２２ｂを満たす規約要素を特定する（ステップＳ１８）。
【００４８】
そして、規約候補生成部１３は、特定した規約要素を纏めた、コーディング規約候補ｉｄ２２ａのコーディング規約候補を出力する（ステップＳ１９）。そして、規約候補生成部１３は、ステップＳ２０に移行する。
【００４９】
一方、選択したコーディング規約候補ｉｄ２２ａに対応する採用適合率２２ｂを満たす規約要素がないと判定した場合には（ステップＳ１７；Ｎｏ）、規約要素特定部１２は、ステップＳ２０に移行する。
【００５０】
ステップＳ２０において、規約要素特定部１２は、複数のコーディング規約候補ｉｄ２２ａから全てのコーディング規約候補ｉｄ２２ａを選択したか否かを判定する（ステップＳ２０）。全てのコーディング規約候補ｉｄ２２ａを選択していないと判定した場合には（ステップＳ２０；Ｎｏ）、規約要素特定部１２は、次のコーディング規約候補ｉｄ２２ａを選択すべく、ステップＳ１６に移行する。
【００５１】
一方、全てのコーディング規約候補ｉｄ２２ａを選択したと判定した場合には（ステップＳ２０；Ｙｅｓ）、規約要素特定部１２は、規約候補生成処理を終了する。
【００５２】
［実施例の効果］
このようにして、情報処理装置１は、既存のソースプログラムを参照し、所定の構造部分における複数の規約要素の統計をそれぞれ算出する。そして、情報処理装置１は、複数の規約要素のうち、算出された規約要素の統計値がコーディング規約へ採用する際に用いられる所定の採用適合率を満足する規約要素を特定する。かかる構成によれば、情報処理装置１は、所定の採用適合率を用いてコーディング規約へ採用し易い記載ルールを探し出すことで、既存のソースプログラムに存在する記載上のばらつきを低減することが可能となる。例えば、規約要素が判定文であるＩＦ文の後のインデントカラム数の場合であるとする。かかる場合には、インデントカラム数０桁から４桁の統計値としての適合率がそれぞれ均等に２０％であるとすると、情報処理装置１は、コーディング規約へ採用し難いため、この規約要素を特定しない。一方、インデントカラム数２桁の統計値としての適合率が９０％であるとすると、情報処理装置１は、この規約要素をコーディング規約へ採用し易い規約要素として探し出すことができる。この結果、情報処理装置１は、既存のソースプログラムに存在する記載上のばらつきを低減することが可能となる。
【００５３】
また、情報処理装置１は、特定した規約要素を纏めたコーディング規約候補を生成する。かかる構成によれば、情報処理装置１は、特定した規約要素を用いてコーディング規約候補を容易に生成することができる。
【００５４】
また、情報処理装置１は、複数の規約要素のうち、第１の採用適合率および第２の採用適合率を満足する規約要素をそれぞれ特定する。そして、情報処理装置１は、第１の採用適合率を満足する規約要素を纏めた第１のコーディング規約候補および第２の採用適合率を満足する規約要素を纏めた第２のコーディング規約候補を生成する。かかる構成によれば、情報処理装置１は、複数のコーディング規約候補を段階的に提示することができる。
【００５５】
また、情報処理装置１は、生成された複数のコーディング規約候補から最も修正率の低いコーディング規約候補をコーディング規約として選択する。かかる構成によれば、情報処理装置１は、複数のコーディング規約候補からコーディング規約を容易に生成することができる。
【００５６】
また、情報処理装置１は、ユーザの要求に応じて、所定の規約要素を、選択されたコーディング規約に追加する。かかる構成によれば、情報処理装置１は、コーディング規約を柔軟にカスタマイズすることができる。
【００５７】
［その他］
なお、上記実施例では、定義情報２２に記憶される採用適合率２２ｂを、例えば「９０％以上」、「６０％以上」として説明した。しかしながら、定義情報２２に記憶される採用適合率２２ｂは、これに限定されず、例えば、「７３％以上」、「９１％以上」、上下限を示した「６０％以上９０％未満」としても良い。
【００５８】
また、情報処理装置１は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した制御部１０および記憶部２０などの各機能を搭載することによって実現することができる。
【００５９】
また、上記実施例では、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、統計算出部１１と規約要素特定部１２とを規約要素特定部として統合しても良い。規約選択部１４を、修正率に応じてコーディング規約を選択する第１の規約選択部と、ユーザの指定に応じてコーディング規約を選択する第２の規約選択部とに分散しても良い。また、記憶部２０を情報処理装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【００６０】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１に示した情報処理装置１と同様の機能を実現するコーディング規約生成プログラムを実行するコンピュータの一例を説明する。図８は、コーディング規約生成プログラムを実行するコンピュータの一例を示す図である。
【００６１】
図８に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０３と、ユーザからのデータの入力を受け付ける入力装置２１５と、表示装置２０９を制御する表示制御部２０７とを有する。また、コンピュータ２００は、記憶媒体からプログラムなどを読取るドライブ装置２１３と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部２１７とを有する。また、コンピュータ２００は、各種情報を一時記憶するメモリ２０１と、ＨＤＤ（Hard  Disk  Drive）２０５を有する。そして、メモリ２０１、ＣＰＵ２０３、ＨＤＤ２０５、表示制御部２０７、ドライブ装置２１３、入力装置２１５、通信制御部２１７は、バス２１９で接続されている。
【００６２】
ドライブ装置２１３は、例えばリムーバブルディスク２１１用の装置である。ＨＤＤ２０５は、コーディング規約生成プログラム２０５ａおよびコーディング規約生成処理関連情報２０５ｂを記憶する。
【００６３】
ＣＰＵ２０３は、コーディング規約生成プログラム２０５ａを読み込んで、メモリ２０１に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置１の各機能部に対応する。コーディング規約生成処理関連情報２０５ｂは、用途別規約要素情報２１、定義情報２２に対応する。そして、例えばリムーバブルディスク２１１が、コーディング規約生成プログラム２０５ａなどの各情報を記憶する。
【００６４】
なお、コーディング規約生成プログラム２０５ａについては、必ずしも最初からＨＤＤ２０５に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ２００がこれらからコーディング規約生成プログラム２０５ａを読み込んで実行するようにしても良い。
【符号の説明】
【００６５】
１  情報処理装置
１０  制御部
１１  統計算出部
１２  規約要素特定部
１３  規約候補生成部
１４  規約選択部
１５  規約要素追加部
２０  記憶部
２１  用途別規約要素情報
２２  定義情報
【図１】
2018156207.tif 000003
【図２】
2018156207.tif 000004
【図３】
2018156207.tif 000005
【図４】
2018156207.tif 000006
【図５】
2018156207.tif 000007
【図６】
2018156207.tif 000008
【図７】
2018156207.tif 000009
【図８】
2018156207.tif 000010