(57)【要約】【課題】  静的解析済みのソースプログラムに追加または修正を行い再度静的解析を行う場合、  すでに解析を行っているソースプログラムに対する警告メッセージは出力装置に表示させず、追加または修正したソースプログラムに対する警告メッセージを出力装置に表示させるシステムを提供する。【解決手段】  前回ソースプログラムの解析を行ったソースプログラムバージョンとその際使用したコーディング規約バージョン及び前々回ソースプログラムの解析を行ったソースプログラムバージョンを保持する旧解析情報記憶手段と、最新のコーディング規約の中で今回対象のコーディング規約を抽出するコーディング規約作成手段と、コーディング規約を使用しソースプログラムの解析を行うソースプログラム解析手段と、解析結果を使用し、検出した警告メッセージの制御を行う警告メッセージ制御手段とを備えることを特徴とする。【選択図】  図１
2011113296.tif 000002
【特許請求の範囲】
【請求項１】
複数のソースプログラムをバージョンごとに管理し保存しているソースプログラム記憶手段と、
複数のコーディング規約をバージョンごとに管理し保存しているコーディング規約記憶手段と、
最新のコーディング規約の中で今回対象のコーディング規約を抽出し作成するコーディング規約作成手段と、
上記コーディング規約作成手段より作成したコーディング規約を使用しソースプログラムの解析を行うソースプログラム解析手段と、
上記ソースプログラム解析手段より取得した解析結果を使用し、検出した警告メッセージの制御を行う警告メッセージ制御手段と、
ソースプログラムの解析を行ったソースプログラムバージョンとその際使用したコーディング規約バージョンを解析情報として保持する解析情報記憶手段と、
上記コーディング規約作成手段より作成し一時記憶されているコーディング規約を解析情報として記憶させることを特徴とするコーディング規約チェックシステム。
【請求項２】
コーディング規約作成手段はコーディング規約記憶手段に格納されている最新のコーディング規約バージョンと解析情報記憶手段に格納されているコーディング規約バージョンが異なる場合に、今回対象のコーディング規約を抽出し作成することを特徴とする請求項１に記載のコーディング規約チェックシステム。
【請求項３】
コーディング規約作成手段は最新のコーディング規約と解析済みソースプログラムを使用し解析を行い、検出した警告メッセージの中で解析情報記憶手段に格納されているコーディング規約バージョンに紐付いているコーディング規約の中に含まれていない警告メッセージに対応するコーディング規約を最新のコーディング規約から制御し、今回対象のコーディング規約を抽出し作成することを特徴とする請求項１に記載のコーディング規約チェックシステム。
【請求項４】
ソースプログラム解析手段は、静的解析ツールを使用し解析を行うことを特徴とする請求項１に記載のコーディング規約チェックシステム。
【請求項５】
ソースプログラム解析手段は最新のコーディング規約と解析情報記憶手段に記憶されているコーディング規約バージョンに紐付いているコーディング規約が異なる場合に、請求項３に記載されたコーディング規約で解析を行うことを特徴とする請求項１に記載のコーディング規約チェックシステム。
【請求項６】
警告メッセージ制御手段は、変更が加えられていないソースプログラムに対して検出した警告メッセージを制御することを特徴とする請求項１に記載のコーディング規約チェックシステム。
【請求項７】
警告メッセージ制御手段は、今回対象のソースプログラムを使用した解析結果と解析情報記憶手段に記憶されているソースプログラムバージョンに紐付いているソースプログラを使用した解析結果を比較し、今回対象のソースプログラムを使用した解析結果に対する変更箇所に含まれている警告メッセージを抽出することを特徴とする請求項１に記載のコーディング規約チェックシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ソースプログラム及びコーディング規約にバージョンを持たせて構成管理させ、変更が加えられたソースプログラムに対するコーディング規約の警告メッセージを出力画面に表示させる方法に関するものである。
【背景技術】
【０００２】
ソフトウェア開発業務において、品質向上及び開発効率向上のために静的解析を行う作業がある。静的解析とは文法スタイルの誤りやパターン化されたバグをソースプログラムより機械的にチェックを行うものである。主な静的解析ツールとして、東陽テクニカ株式会社で提供しているQAC、テレマトリックス株式会社が提供しているC++test・Jtest、日本テレロジック株式会社が提供しているTelelogic Logiscopeなどがある。これらの静的解析ツールには、カスタムルールの作成支援機能が提供されており独自のコーディング規約を追加することが可能である。
【０００３】
そして以前リリースしたソースプログラムに対する機能追加あるいは、OSや周辺機器の変更等によるソースプログラムの追加または修正を行うことがある。その際コーディング規約の内容が変更されている場合が考えられる。以前リリースしたソースプログラムに関しては、変更前のコーディング規約で実施した静的解析結果について正しい対処がなされているため、今回新たに追加または修正したソースコードにのみ新しいコーディング規約で静的解析を行うのが望ましい。
【０００４】
しかし、従来の静的解析とはソースプログラム全体に対してコーディング規約の解析を行うため、内容が変更されたコーディング規約で解析を行うと不要な警告メッセージが膨大に表示されることがあった。そのため開発担当者は今回追加または修正したソースプログラムの該当範囲を対象とした警告メッセージがどこにあたるのか判断しにくいという問題があった。
【０００５】
またソフトウェア開発途中でコーディング規約の内容を変更された場合に関しても、変更前のコーディング規約では問題がなかったソースプログラムが変更後のコーディング規約で解析を行うと、警告メッセージが表示されることがあるため上記と同じような問題が起こっていた。
【０００６】
上記の問題を解決するために特許文献１では、入力されたプログラムから個々のクラスのサイズ、他クラスを参照する回数、継承の深さ等の品質情報を抽出し、基準値を作成する。更に品質情報と予め設定された基準値を比較し、問題がある可能性の高い要素を抽出し、要素の中にコーディング規約違反があるか検査するシステムが提案されている。
【０００７】
また前回検出したコーディング規約の警告メッセージを制御する方法として特許文献２では、ソースプログラムの変更前後のプログラム静的解析結果から、差分情報と領域情報に基いて対応した変更部分のみに対して警告メッセージ表示を行い、不要な警告メッセージを制御するシステムが提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−２９８５８６号公報
【特許文献２】特開２００４−１２６８６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載の記述出力抑制プログラム解析方法では、問題がある可能性の高い要素のみ検査するため、検査が完全ではない。そしてソースプログラムを追加しコーディング規約の確認が行われた場合、同じ警告メッセージを表示されるため追加で入力したソースコードに対する警告メッセージが埋もれてしまう可能性が生じる。また開発途中でコーディング規約が変更され、そのコーディング規約を用いて確認を行った場合、前回まで警告メッセージが検出されなかったソースプログラムに対して警告メッセージが表示される可能性がある。
【００１０】
また特許文献２では、同じコーディング規約で解析を行った変更前後のソースプログラムが対象のため、コーディング規約の内容が変更された場合は適用されない。といった課題があった。
【００１１】
本発明は上記の課題を解決する為になされたもので、本発明の目的は変更が加えられたソースプログラムに対する静的解析の警告メッセージを表示する仕組みを提供することである。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、前回ソースプログラムの解析を行ったソースプログラムバージョンとその際使用したコーディング規約バージョン及び前々回ソースプログラムの解析を行ったソースプログラムバージョンを保持する旧解析情報記憶手段と、複数のソースプログラムをバージョンごとに管理し保存しているソースプログラム記憶手段と、複数のコーディング規約をバージョンごとに管理し保存しているコーディング規約記憶手段と、最新のコーディング規約の中で今回対象のコーディング規約を抽出するコーディング規約作成手段と、コーディング規約を使用しソースプログラムの解析を行うソースプログラム解析手段と、解析結果を使用し、検出した警告メッセージの制御を行う警告メッセージ制御手段と、旧解析情報記憶手段に解析情報を保持させる解析情報格納手段とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、すでにコーディング規約の解析を行っているソースプログラムに対して検出した警告メッセージを出力させず、変更が加えられたソースプログラムに対する警告メッセージを解析結果として出力装置に表示させることが可能となる。
【００１４】
また最新のコーディング規約と前回解析を行ったソースプログラムを使用し解析を行い、検出した警告メッセージの中で前回解析を行った際に使用したコーディング規約の中には含まれていない警告メッセージに対応するコーディング規約を最新のコーディング規約から制御し、今回対象のコーディング規約を抽出する。そして抽出したコーディング規約と今回対象のソースプログラムを使用し解析を行い、解析結果を出力画面に表示させるため、不要な警告メッセージを制御することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態を示すコーディング規約チェックシステムを適用可能な情報処理装置の構成を説明するブロック図である。
【図２】本発明の一実施形態を示すコーディング規約チェックシステムの構成を表すブロック図である。
【図３】本発明の一実施形態を示すコーディング規約チェックシステムの構成を表すブロック図の一時記憶手段の図である。
【図４】本発明における第１の処理手順の一例を示すフローチャートである。
【図５】本発明における第２の処理手順の一例を示すフローチャートである。
【図６】本発明における第３の処理手順の一例を示すフローチャートである。
【図７】本発明における第４の処理手順の一例を示すフローチャートである。
【図８】本発明における第５の処理手順の一例を示すフローチャートである。
【図９】本発明における第６の処理手順の一例を示すフローチャートである。
【図１０】本発明における第７の処理手順の一例を示すフローチャートである。
【図１１】本発明における第８の処理手順の一例を示すフローチャートである。
【図１２】本発明における第９の処理手順の一例を示すフローチャートである。
【図１３】本発明における第１０の処理手順の一例を示すフローチャートである。
【図１４】本発明における第１１の処理手順の一例を示すフローチャートである。
【図１５】本発明における第１２の処理手順の一例を示すフローチャートである。
【図１６】本発明における第１３の処理手順の一例を示すフローチャートである。
【図１７】本発明における第１４の処理手順の一例を示すフローチャートである。
【図１８】本発明における第１５の処理手順の一例を示すフローチャートである。
【図１９】本発明における第１６の処理手順の一例を示すフローチャートである。
【図２０】本実施形態におけるコーディング規約チェック開始画面の一例を示す模式図である。
【図２１】本実施形態におけるソースプログラム記憶手段の一例を示す模式図である。
【図２２】本実施形態における旧解析情報記憶手段の一例を示す模式図である。
【図２３】図８のステップＳ５０２で警告メッセージを抽出する一例を示す模式図である。
【図２４】図１４のステップＳ１３０７で警告メッセージと警告メッセージ付加行番号を抽出する一例を示す模式図である。
【図２５】本実施形態における解析情報格納選択画面の一例を示す模式図である。
【発明を実施するための形態】
【００１６】
以下で本発明の実施の形態を、図面を参照して説明する。
【００１７】
（第1の実施形態）
図１は、本発明の一実施形態を示すコーディング規約チェックシステムを適用可能な情報処理装置の構成を説明するブロック図である。尚、パーソナルコンピュータにより情報処理装置を構成しても良い。
【００１８】
1000はCPUであり、ROM1002又はハードディスク(HDD)1004に格納されたプログラムをRAM1001上等で実行して、パス1017を介して接続される各部の動作を制御することにより情報処理装置全体を統括制御する。1003はハードディスクインタフェース(HDD I/F)であり、HDD104とのアクセスを制御する。
【００１９】
1005は構成管理部であり、HDD I/F1003を介してHDD1004に記憶している複数のソースプログラム及びコーディング規約にバージョンを持たせ管理している。1006は対象ソースプログラムVer取得部であり、対象ソースプログラムのバージョンを取得する。1007はコーディング規約格納部であり、今回静的解析ツールに定義するコーディング規約を作成する。1015は静的解析ツール部であり、ソースプログラムとコーディング規約を定義して解析を行う。1008はソースプログラム解析部であり静的解析ツール部1015を介して解析を行う。1016はDiffツール部であり２つのファイルを比較し差分を抽出する。1009は警告メッセージ制御部であり解析を行い検出した警告メッセージの中で前回確認済みの警告メッセージをDiffツール部1016を介して制御する。1010は解析結果表示部であり、警告メッセージを制御した解析結果を出力画面に表示する。1011は解析情報格納部であり解析情報を記憶させる。
【００２０】
1012はネットワークインタフェース(LAN I/F)で、図示しないネットワークとの通信を制御する。1013はI/Oであり、入出力装置部1014からの入力、入出力装置部1014へ出力を制御する。
【００２１】
図2は、本発明の一実施形態を示すコーディング規約チェックシステムの構成を表すブロック図である。
【００２２】
コーディング規約記憶手段101はコーディング規約をバージョンごとに管理し保存している。ソースログラム記憶手段102はソースプログラムをバージョンごとに管理し保存している。構成管理ツール100はコーディング規約記憶手段101とソースログラム記憶手段102を保持する。入出力装置200は入出力を制御する。対象ソースプログラムVer取得部301は対象ソースプログラムのバージョンを取得する。コーディング規約格納部302は今回静的解析ツールに定義するコーディング規約を作成する。静的解析ツール307はソースプログラムとコーディング規約を定義して解析を行う。ソースプログラム解析部303は静的解析ツール307を使用して解析を行う。Diffツール308は２つのファイルを比較し差分を抽出する。警告メッセージ制御部304は解析を行い検出した警告メッセージの中で前回確認済みの警告メッセージをDiffツール308を使用し制御する。解析結果表示部305は警告メッセージを制御した解析結果を出力画面に表示する。解析情報格納部306は解析情報を旧解析情報記憶手段500に記憶させる。コーディング規約チェックシステム300は対象ソースプログラムVer取得部301とコーディング規約格納部302とソースプログラム解析部303と警告メッセージ制御部304と解析結果表示部305と解析情報格納部306と静的解析ツール307とDiffツール308を保持する。そして一時記憶手段400からなる。
【００２３】
図3は、本発明の一実施形態を示す一時記憶手段の構成を表すブロック図である。
【００２４】
図4は、本発明における第1の処理手順の一例を示すフローチャートであり、図2に示したコーディング規約チェックシステム300におけるコーディング規約のチェック処理の一連の流れに対応する。尚、S101からS106各ステップを示す。
【００２５】
ステップS101において、対象ソースプログラムVer取得部301はソースプログラム記憶手段102より今回解析を行う対象ソースプログラムのバージョンを取得する。尚、詳細は後述する図5に示す。
【００２６】
ステップS102において、コーディング規約作成部302はソースプログラムに解析を行う際、静的解析ツール307に定義するコーディング規約を作成する。尚、詳細は図6、図7、図8、図9に示す。
【００２７】
ステップS103において、ソースプログラム解析部303は、静的解析ツール307を使用しソースプログラムの解析を行う。尚、詳細は図10、図11、図12、図13、図14、図15に示す。
【００２８】
ステップS104において、警告メッセージ制御部304はステップS103より取得した解析結果を使用し前回確認済みの警告メッセージをDiffツール308で検出し制御する。そして新たな解析結果を作成する。尚、詳細は図16、図17に示す。
【００２９】
ステップS105において、解析結果表示部305はステップS104より取得した解析結果を出力画面に表示する。尚、詳細は図18に示す。
【００３０】
ステップS106において、解析情報格納部306は今回行った解析情報を記憶手段に記憶する。尚、詳細は図19に示す。
【００３１】
図5は、本発明における第２の処理手順の一例を示すフローチャートであり、図4のステップS101に対応する。尚、図中S201からS202は各ステップを示す。
【００３２】
ステップS201において、対象ソースプログラムVer取得部301はコーディング規約チェック開始画面を入出力装置200に表示させ入力を受け付ける。コーディング規約チェック開始画面の一例を図20に示す。
【００３３】
ステップS202において、対象ソースプログラムVer取得部301はソースプログラム記憶手段102より今回解析を行うソースプログラムのバージョンを取得し、ソースプログラムバージョン一時記憶手段600に記憶させる。ソースプログラム記憶手段102の一例を図21に示す。
【００３４】
図6は、本発明における第３の処理手順の一例を示すフローチャートであり、図4のステップS102に対応する。尚、図中S301からS315は各ステップを示す。
【００３５】
ステップS301において、コーディング規約作成部302は旧解析情報記憶手段500より今回解析を行うソースプログラム名と同一名称のソースプログラム名を取得しソースプログラム一時記憶手段601に格納する。旧解析情報記憶手段500の一例を図22に示す。
【００３６】
ステップS302において、コーディング規約作成部302はステップS301よりソースプログラム名が取得されたかどうか判断する。取得されている場合、ステップS303に処理を進める。取得されていない場合、ステップS314に処理を進める。
【００３７】
ステップS303において、コーディング規約作成部302は旧解析情報記憶手段500よりFLG:1のソースプログラムバージョンを取得する。
【００３８】
ステップS304において、コーディング規約作成部302はソースプログラムバージョン一時記憶手段600より今回対象のソースプログラムのバージョンを取得する。
【００３９】
ステップS305において、コーディング規約作成部302はステップS303より取得したFLG:1のソースプログラムバージョンとステップS304より取得した対象ソースプログラムバージョンが等しいかどうか判断する。等しい場合、ステップS314に処理を進める。異なる場合、ステップS306に処理を進める。
【００４０】
ステップS306において、コーディング規約作成部302はコーディング規約記憶手段101より最新のコーディング規約バージョンを取得する。
【００４１】
ステップS307において、コーディング規約作成部302は旧解析情報記憶手段500よりFLG:1のコーディング規約バージョンを取得する。
【００４２】
ステップS308において、コーディング規約作成部302はステップS306より取得した最新のコーディング規約バージョンとステップS307より取得したFLG:1のコーディング規約バージョンが等しいかどうか判断する。等しい場合、ステップS313に処理を進める。異なる場合、ステップS309に処理を進める。
【００４３】
ステップS309において、コーディング規約作成部302はFLG:1のソースプログラムバージョンに紐付いているソースプログラム及び最新のコーディング規約を使用して解析を行う。尚、詳細は図7に示す。
【００４４】
ステップS310において、コーディング規約作成部302は今回解析を行う際に使用するコーディング規約を生成する。尚、詳細は図8に示す。
【００４５】
ステップS311において、コーディング規約作成部302は変数Sに値0を記憶させる。
【００４６】
尚、変数Sに格納される値が０の場合は今回対象のソースプログラムが前回解析を行ったソースプログラムと異なり、且つコーディング規約も前回使用したコーディング規約と異なる。
【００４７】
変数Sに格納される値が１の場合は今回対象のソースプログラムが前回解析を行ったソースプログラムと異なり、コーディング規約は前回使用したコーディング規約と同一である。
【００４８】
変数Sに格納される値が２の場合は今回対象のソースプログラムが前回解析を行ったソースプログラムと同一であり、前々回のソースプログラムバージョンが旧解析情報記憶手段500に記憶されている。
【００４９】
変数Sに格納される値が３の場合は今回対象のソースプログラムが前回解析を行ったソースプログラムと同一であり、前々回のソースプログラムバージョンが旧解析情報記憶手段500に記憶されていない。
【００５０】
変数Sに格納される値が4の場合は新規で解析を行う。
【００５１】
ステップS312において、コーディング規約作成部302は変数SをStatus一時記憶手段602に格納する。
【００５２】
ステップS313において、コーディング規約作成部302は変数Sに値1を記憶させる。
【００５３】
ステップS314において、コーディング規約作成部302は旧解析情報記憶手段500にFLG:2が存在するかどうかを判定する。尚、詳細は図9に示す。
【００５４】
ステップS315において、コーディング規約作成部302は変数Sに値4を記憶させる。
【００５５】
図7は、本発明における第４の処理手順の一例を示すフローチャートであり、図6のステップS309に対応する。尚、図中S401からS406は各ステップを示す。
【００５６】
ステップS401において、コーディング規約作成部302は旧解析情報記憶手段500よりFLG:1のソースプログラムバージョンを取得する。
【００５７】
ステップS402において、コーディング規約作成部302はステップS401より取得したソースプログラムバージョンを使用してソースプログラム記憶手段102よりバージョンに紐付いているソースプログラムを取得する。
【００５８】
ステップS403において、コーディング規約作成部302はコーディング規約記憶手段101より最新のコーディング規約を取得する。
【００５９】
ステップS404において、コーディング規約作成部302は静的解析ツール307にステップS402より取得したソースプログラム及びステップS403より取得したコーディング規約を定義する。
【００６０】
ステップS405において、コーディング規約作成部302は静的解析ツール307を使用し解析を行う。
【００６１】
ステップS406において、コーディング規約作成部302はステップS405より取得した解析結果を解析結果一時記憶手段603に記憶させる。
【００６２】
図8は、本発明における第５の処理手順の一例を示すフローチャートであり、図6のステップS310に対応する。尚、図中S501からS511は各ステップを示す。
【００６３】
ステップS501において、コーディング規約作成部302は解析結果一時記憶手段603より解析結果を取得する。
【００６４】
ステップS502において、コーディング規約作成部302はステップS501より取得した解析結果から警告メッセージを取得する。尚、詳細は図23に示す。
【００６５】
ステップS503において、コーディング規約作成部302は旧解析情報記憶手段500よりFLG:1のコーディング規約バージョンを取得する。
【００６６】
ステップS504において、コーディング規約作成部302はステップS503より取得したコーディング規約バージョンを使用してコーディング規約記憶手段101よりバージョンに紐付いているコーディング規約を取得する。
【００６７】
ステップS505において、コーディング規約作成部302はコーディング規約記憶手段101より最新のコーディング規約を取得する。
【００６８】
ステップS506からステップS511において、コーディング規約作成部302はステップS503より取得したコーディング規約の数分繰り返す。
【００６９】
ステップS507からステップS510において、コーディング規約作成部302はステップS502より取得した警告メッセージの数分繰り返す。
【００７０】
ステップS508において、コーディング規約作成部302はステップS502より取得した警告メッセージがステップS503より取得したコーディング規約に含まれているかどうか判断する。含まれている場合は、ステップS510に処理を進める。含まれていない場合は、ステップS509に処理を進める。
【００７１】
ステップS509において、コーディング規約作成部302はステップS505より取得した最新のコーディング規約から該当する警告メッセージを無効にする。
【００７２】
ステップS512において、コーディング規約作成部302はステップS509より無効となったルールが含まれているコーディング規約をコーディング規約一時記憶手段604に格納する。
【００７３】
図9は、本発明における第6の処理手順の一例を示すフローチャートであり、図6のステップS314に対応する。尚、図中S601からS604は各ステップを示す。
【００７４】
ステップS601において、コーディング規約作成部302は旧解析情報記憶手段500よりFLG:2のソースプログラムバージョンを取得する。
【００７５】
ステップS602において、コーディング規約作成部302はステップS601よりFLG:2のソースプログラムバージョンが取得されたかどうか判断する。取得された場合は、ステップS603に処理を進める。取得されなかった場合は、ステップS604に処理を進める。
【００７６】
ステップS603において、コーディング規約作成部302は変数Sに値2を記憶させる。
【００７７】
ステップS604において、コーディング規約作成部302は変数Sに値3を記憶させる。
【００７８】
図10は、本発明における第7の処理手順の一例を示すフローチャートであり、図4のステップS103に対応する。尚、図中S701からS717は各ステップを示す。
【００７９】
ステップS701において、ソースプログラム解析部303はStatus一時記憶手段602より変数Sを取得する。
【００８０】
ステップS702において、ソースプログラム解析部303はステップS701より取得した変数Sの値が0かどうか判断する。等しい場合は、ステップS703に処理を進める。異なる場合は、ステップS711に処理を進める。
【００８１】
ステップS703において、ソースプログラム解析部303はコーディング規約一時記憶手段604よりコーディング規約を取得する。
【００８２】
ステップS704において、ソースプログラム解析部303はステップS703より取得したコーディング規約を変数Xに記憶させる。
【００８３】
ステップS705において、ソースプログラム解析部303はステップS704より取得した変数XをX一時記憶手段605に格納する。
【００８４】
ステップS706において、ソースプログラム解析部303は旧解析情報記憶手段500に格納されているFLG:1のソースプログラムバージョンに紐付いているソースプログラムを使用し、解析を行う。尚、詳細は図11に示す。
【００８５】
ステップS707において、ソースプログラム解析部303はステップS701より取得した変数Sの値が2かどうか判断する。等しいもしくは小さい場合は、ステップS708に処理を進める。大きい場合は、図16に処理を進める。
【００８６】
ステップS708において、ソースプログラム解析部303はステップS701より取得した変数Sの値が1かどうか判断する。等しいもしくは小さい場合は、ステップS709に処理を進める。大きい場合は、ステップS713に処理を進める。
【００８７】
ステップS709において、ソースプログラム解析部303は今回解析を行う対象のソースプログラムをY一時記憶手段606に格納する。なお、詳細は図12に示す。
【００８８】
ステップS710において、ソースプログラム解析部303はステップS703より取得したコーディング規約を使用し、解析を行う。尚、詳細は図13に示す。
【００８９】
ステップS711において、ソースプログラム解析部303はステップS701より取得した変数Sの値が3かどうか判断する。等しいもしくは小さい場合は、ステップS712に処理を進める。大きい場合は、ステップS715に処理を進める。
【００９０】
ステップS712において、ソースプログラム解析部303は旧解析情報記憶手段500に格納されているFLG:1のコーディング規約バージョンに紐付いているコーディング規約をX一時記憶手段605に格納する。尚、詳細は図14に示す。
【００９１】
ステップS713において、ソースプログラム解析部303は旧解析情報記憶手段500に格納されているFLG:2のソースプログラムバージョンに紐付いているソースプログラムをY一時記憶手段606に格納する。尚、詳細は図15に示す。
【００９２】
ステップS714において、ソースプログラム解析部303はコーディング規約記憶手段101より最新のコーディング規約を取得する。
【００９３】
ステップS715において、ソースプログラム解析部303はステップS714より取得したコーディング規約を変数Xに記憶させる。
【００９４】
ステップS716において、ソースプログラム解析部303はステップS715より取得した変数XをX一時記憶手段605に記憶させる。
【００９５】
図11は、本発明における第8の処理手順の一例を示すフローチャートであり、図10のステップS706に対応する。尚、図中S801からS805は各ステップを示す。
【００９６】
ステップS801において、ソースプログラム解析部303は旧解析情報記憶手段500よりFLG:1のソースプログラムバージョンを取得する。
【００９７】
ステップS802において、ソースプログラム解析部303はステップS801より取得したソースプログラムバージョンを使用して、ソースプログラム記憶手段102よりバージョンに紐付いているソースプログラムを取得する。
【００９８】
ステップS803において、ソースプログラム解析部303はステップS802より取得したソースプログラムを変数Yに記憶させる。
【００９９】
ステップS804において、ソースプログラム解析部303はステップS803より取得した変数YをY一時記憶手段606に格納する。
【０１００】
ステップS805において、ソースプログラム解析部303はステップS802より取得したソースプログラムを使用し、解析を行う。尚、詳細は図13に示す。
【０１０１】
図12は、本発明における第9の処理手順の一例を示すフローチャートであり、図10のステップS709に対応する。尚、図中S901からS904は各ステップを示す。
【０１０２】
ステップS901において、ソースプログラム解析部303はソースプログラムバージョン一時記憶手段601より対象ソースプログラムバージョンを取得する。
【０１０３】
ステップS902において、ソースプログラム解析部303はステップS902より取得したソースプログラムバージョンを使用し、ソースプログラム記憶手段102よりソースプログラムバージョンに紐付いているソースプログラムを取得する。
【０１０４】
ステップS903において、ソースプログラム解析部303はステップS902より取得したソースプログラムを変数Yに記憶させる。
【０１０５】
ステップS904において、ソースプログラム解析部303はステップS903より取得した変数YをY一時記憶手段606に格納する。
【０１０６】
図13は、本発明における第10の処理手順の一例を示すフローチャートであり、図10のステップS710及び図11のステップS805に対応する。尚、図中S1001からS1005は各ステップを示す。
【０１０７】
ステップS1001において、ソースプログラム解析部303はX一時記憶手段605よりコーディング規約が記憶されている変数Xを取得する。
【０１０８】
ステップS1002において、ソースプログラム解析部303はY一時記憶手段606よりソースプログラムが記憶されている変数Yを取得する。
【０１０９】
ステップS1003において、ソースプログラム解析部303は静的解析ツール307にステップS1001より取得したコーディング規約が格納されている変数X及びステップS1002より取得したソースプログラムが格納されている変数Yを定義する。
【０１１０】
ステップS1004において、ソースプログラム解析部303は静的解析ツール307を使用し解析を行う。
【０１１１】
ステップS1005において、ソースプログラム解析部303はステップS1004より取得した解析結果を解析結果一時記憶手段603に記憶させる。
【０１１２】
図14は、本発明における第11の処理手順の一例を示すフローチャートであり、図10のステップS710に対応する。尚、図中S1101からS1104は各ステップを示す。
【０１１３】
ステップS1101において、ソースプログラム解析部303は旧解析情報記憶手段500よりFLG:1のコーディング規約バージョンを取得する。
【０１１４】
ステップS1102において、ソースプログラム解析部303はステップS1101より取得したコーディング規約バージョンを使用し、コーディング規約記憶手段101よりバージョンに紐付いているコーディング規約を取得する。
【０１１５】
ステップS1103において、ソースプログラム解析部303はステップS1102より取得したコーディング規約を変数Xに記憶させる。
【０１１６】
ステップS1104において、ソースプログラム解析部303はステップS1103より取得した変数XをX一時記憶手段605に格納する。
【０１１７】
図15は、本発明における第12の処理手順の一例を示すフローチャートであり、図10のステップS713に対応する。尚、図中S1201からS1204は各ステップを示す。
【０１１８】
ステップS1201において、ソースプログラム解析部303は旧解析情報記憶手段500よりFLG:2のソースプログラムバージョンを取得する。
【０１１９】
ステップS1202において、ソースプログラム解析部303はステップS1201より取得したソースプログラムバージョンを使用し、ソースプログラム記憶手段102よりバージョンに紐付いているソースプログラムを取得する。
【０１２０】
ステップS1203において、ソースプログラム解析部303はステップS1202より取得したソースプログラムを変数Yに記憶させる。
【０１２１】
ステップS1204において、ソースプログラム解析部303はステップS1203より取得した変数YをY一時記憶手段606に格納する。
【０１２２】
図16は、本発明における第13の処理手順の一例を示すフローチャートであり、図4のステップS104に対応する。尚、図中S1301からS1311は各ステップを示す。
【０１２３】
ステップS1301において、警告メッセージ制御部304はStatus一時記憶手段602より変数Sを取得する。
【０１２４】
ステップS1302において、警告メッセージ制御部304はステップS1301より取得した変数Sの値が２かどうか判断する。等しいもしくは小さい場合は、ステップS1303に処理を進める。大きい場合は、図17処理を進める。
【０１２５】
ステップS1303において、警告メッセージ制御部304は解析結果一時記憶手段603より解析結果を取得する。
【０１２６】
ステップS1304において、警告メッセージ制御部304はステップS1301より取得した変数Sの値が２かどうか判断する。等しい場合は、ステップS1310に処理を進める。等しくない場合は、ステップS1305処理を進める。
【０１２７】
ステップS1305において、警告メッセージ制御部304はステップS1303より取得した解析結果でFLG:1のソースプログラムバージョンに紐付いているソースプログラムを使用し解析を行った解析結果を変数Sに記憶させる。
【０１２８】
ステップS1306において、警告メッセージ制御部304はステップS1303より取得した解析結果で対象ソースプログラムを使用し解析を行った解析結果を変数Tに記憶させる。
【０１２９】
ステップS1307において、警告メッセージ制御部304はステップS1305より取得した変数SとステップS1306より取得した変数TをDiffツール308を使用し変数Tで変更されている警告メッセージ及び警告メッセージ付加行番号を抽出する。尚、詳細は図24に示す。
【０１３０】
ステップS1308において、警告メッセージ制御部304はステップS1307より取得した警告メッセージ及び警告メッセージ付加行番号をメッセージ情報一時記憶手段607に格納する。
【０１３１】
ステップS1309において、警告メッセージ制御部304はステップS1307より取得した警告メッセージを対象ソースプログラムに付加する。尚、詳細は図17に示す。
【０１３２】
ステップS1310において、警告メッセージ制御部304はステップS1303より取得した解析結果でFLG:2のソースプログラムバージョンに紐付いているソースプログラムを使用し解析を行った解析結果を変数Sに記憶させる。
【０１３３】
ステップS1311において、警告メッセージ制御部304はステップS1303より取得した解析結果でFLG:1のソースプログラムバージョンに紐付いているソースプログラムを使用し解析を行った解析結果を変数Tに記憶させる。
【０１３４】
図17は、本発明における第14の処理手順の一例を示すフローチャートであり、図16のステップS1309に対応する。尚、図中S1401からS1409は各ステップを示す。
【０１３５】
ステップS1401において、警告メッセージ制御部304はメッセージ情報一時記憶手段607より警告メッセージ及び警告メッセージ付加行番号を取得する。
【０１３６】
ステップS1402において、警告メッセージ制御部304はStatus一時記憶手段602より変数Sを取得する。
【０１３７】
ステップS1403において、警告メッセージ制御部304はステップS1402より取得した変数Sの値が２かどうか判断する。等しい場合は、ステップS1408に処理を進める。等しくない場合は、ステップS1404処理を進める。
【０１３８】
ステップS1404において、警告メッセージ制御部304はソースプログラムバージョン一時記憶手段600より対象ソースプログラムバージョンを取得する。
【０１３９】
ステップS1405において、警告メッセージ制御部304はステップS1404より取得した対象ソースプログラムバージョンを使用し、ソースプログラム記憶手段102よりバージョンに紐付いているソースプログラムを取得する。
【０１４０】
ステップS1406において、警告メッセージ制御部304はステップS1401より取得した警告メッセージ付加行番号とステップS1405より取得した対象ソースプログラムの行番号を照らし合わせて適合する行番号にステップS1401より取得した警告メッセージ付加行番号に紐付いている警告メッセージを付加させる。
【０１４１】
ステップS1407において、警告メッセージ制御部304はステップS1406より取得した警告メッセージが付加されている対象ソースプログラムを解析結果とし、解析結果一時記憶手段603に格納する。
【０１４２】
ステップS1408において、警告メッセージ制御部304は旧解析情報記憶手段500よりFLG:1のソースプログラムバージョンを取得する。
【０１４３】
ステップS1409において、警告メッセージ制御部304はステップS1408より取得したFLG:1のソースプログラムバージョンを使用し、ソースプログラム記憶手段102よりバージョンに紐付いているソースプログラムを取得する。
【０１４４】
図18は、本発明における第15の処理手順の一例を示すフローチャートであり、図4のステップS105に対応する。尚、図中S1501からS1505は各ステップを示す。
【０１４５】
ステップS1501において、解析結果表示部305はStatus一時記憶手段602より変数Sを取得する。
【０１４６】
ステップS1502において、解析結果表示部305はステップS1501より取得した変数Sの値が２かどうか判断する。等しいもしくは小さい場合は、ステップS1503に処理を進める。大きい場合は、ステップS1505に処理を進める。
【０１４７】
ステップS1503において、解析結果表示部305は解析結果一時記憶手段より対象ソースプログラムに警告メッセージを付加した解析結果を取得する。
【０１４８】
ステップS1504において、解析結果表示部305はステップS1503またはステップS1505より取得した解析結果を出力装置200に表示させる。
【０１４９】
ステップS1505において、解析結果表示部305は解析結果一時記憶手段より解析結果を取得する。
【０１５０】
図19は、本発明における第16の処理手順の一例を示すフローチャートであり、図4のステップS106に対応する。尚、図中S1601からS1615は各ステップを示す。
【０１５１】
ステップS1601において、解析情報格納部306はStatus一時記憶手段602より変数Sを取得する。
【０１５２】
ステップS1602において、解析情報格納部306はステップS1601より取得した変数Sの値が０又は１又は４かどうか判断する。値０又は１又は４の場合は、ステップS1603に処理を進める。異なる場合は、終了する。
【０１５３】
ステップS1603において、解析情報格納部306は規約情報格納選択画面を入出力装置200に表示させ入力を受け付ける。規約情報格納選択画面の一例を図25に示す。
【０１５４】
ステップS1604において、解析情報格納部306はステップS1603より1300にチェックが入っているかどうか判断する。チェックが入っていればステップS1605に処理を進める。チェックが入っていなければ終了する。
【０１５５】
ステップS1605において、解析情報格納部306はステップS1601より取得した変数Sの値が1かどうか判断する。等しいもしくは小さい場合は、ステップS1606に処理を進める。大きい場合は、ステップS1608に処理を進める。
【０１５６】
ステップS1606において、解析情報格納部306は旧解析情報記憶手段500よりFLG:1のソースプログラムバージョンを取得する。
【０１５７】
ステップS1607において、解析情報格納部306はステップS1606より取得したソースプログラムバージョンをFLG:2のソースプログラムバージョンとして旧解析情報記憶手段500に格納する。
【０１５８】
ステップS1608において、解析情報格納部306はソースプログラムバージョン一時記憶手段600より対象ソースプログラムバージョンを取得する。
【０１５９】
ステップS1609において、解析情報格納部306はステップS1608より取得したソースプログラムバージョンをFLG:1のソースプログラムバージョンとして旧解析情報記憶手段500に格納する。
【０１６０】
ステップS1610において、解析情報格納部306はステップS1601より取得した変数Sの値が0かどうか判断する。等しい場合は、ステップS1611に処理を進める。等しくない場合は、ステップS1615に処理を進める。
【０１６１】
ステップS1611において、解析情報格納部306はコーディング規約一時記憶手段604よりコーディング規約を取得する。
【０１６２】
ステップS1612において、解析情報格納部306はステップS1611より取得したコーディング規約をコーディング規約記憶手段101に格納する。
【０１６３】
ステップS1613において、解析情報格納部306はコーディング規約記憶手段101よりステップS1612でソースプログラムを格納した際に付加された最新のコーディング規約バージョンを取得する。
【０１６４】
ステップS1614において、解析情報格納部306はステップS1613より取得したコーディング規約バージョンをFLG:1のコーディング規約バージョンして旧解析情報記憶手段500に格納する。
【０１６５】
ステップS1615において、解析情報格納部306はステップS1601より取得した変数Sの値が4かどうか判断する。等しい場合は、ステップS1613に処理を進める。等しくない場合は終了する。
【符号の説明】
【０１６６】
100  構成管理ツール
101  コーディング規約記憶手段
102  ソースプログラム記憶手段
200  入出力装置
300  コーディング規約チェックシステム
301  対象ソースプログラム取得部
302  コーディング規約格納部
303  ソースプログラム解析部
304  警告メッセージ制御部
305  解析結果表示部
306  解析情報格納部
307  静的解析ツール
308  Diffツール
400  一時記憶手段
500  旧解析情報格納部
600  ソースプログラムバージョン一時記憶手段
601  ソースプログラム一時記憶手段
602  Status一時記憶手段
603  解析結果一時記憶手段
604  コーディング規約一時記憶手段
605  X一時記憶手段
606  Y一時記憶手段
607  メッセージ情報一時記憶手段
1000  CPU
1001  RAM
1002  ROM
1003  HDD I/F
1004  HDD
1005  構成管理部
1006  対象ソースプログラム取得部
1007  コーディング規約格納部
1008  ソースプログラム解析部
1009  警告メッセージ制御部
1010  解析結果表示部
1011  解析情報格納部
1012  LAN I/F
1013  I/O
1014  入出力装置部
1015  静的解析ツール部
1016  Diffツール部
【図１】
2011113296.tif 000003
【図２】
2011113296.tif 000004
【図３】
2011113296.tif 000005
【図４】
2011113296.tif 000006
【図５】
2011113296.tif 000007
【図６】
2011113296.tif 000008
【図７】
2011113296.tif 000009
【図８】
2011113296.tif 000010
【図９】
2011113296.tif 000011
【図１０】
2011113296.tif 000012
【図１１】
2011113296.tif 000013
【図１２】
2011113296.tif 000014
【図１３】
2011113296.tif 000015
【図１４】
2011113296.tif 000016
【図１５】
2011113296.tif 000017
【図１６】
2011113296.tif 000018
【図１７】
2011113296.tif 000019
【図１８】
2011113296.tif 000020
【図１９】
2011113296.tif 000021
【図２０】
2011113296.tif 000022
【図２１】
2011113296.tif 000023
【図２２】
2011113296.tif 000024
【図２３】
2011113296.tif 000025
【図２４】
2011113296.tif 000026
【図２５】
2011113296.tif 000027