(57)【要約】【課題】従来のソースプログラムの静的解析装置は、ソースプログラムの実行処理順序の誤りを指摘する。ソースプログラムが自社の規約に違反するかどうか、確認できない。また、自社の規約に違反しても、指摘しない可能性がある。本発明は、開発したソースコードが自社の規約を守るために、自社のルール違反箇所を解析し、解析結果により、ソースコードを自動的に修正するに関するものである。【解決手段】解析装置１１は、各社の規約情報のデータベースの各項目に基づいて静的解析１１０と動的解析１１１を実行する。実行結果がメッセージ編集部１１２によるエラー情報を生成する。生成されたエラー情報を出力部１１３が出力する。【選択図】図１
2006236042.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムを解析し、その解析結果を出力するソースプログラムの解析装置において、各社の規約を選択し、規約レベルの選択機能を用いた規約選択部または、各社の規約情報のデータベースの構文解析項目に基づいて前記ソースプログラムを解析し、メッセージ編集部で生成された解析結果を出力する出力部を有することを特徴とするソースプログラムの解析装置。
【請求項２】
前記規約選択部は、予め定められた規約が蓄積されており、ルールの性質により、前記規約レベルを決めることができ、ルールの変更または、追加が可能な構造となっていることを特徴とする請求項１記載のソースプログラムの解析装置。
【請求項３】
ソースプログラムを解析し、その解析結果を出力するソースプログラムの解析方法において、各社の規約を選択し、規約レベルの選択機能を用いた規約選択手段または、各社の規約情報のデータベースの構文解析項目に基づいて前記ソースプログラムを解析し、メッセージ編集手段で生成された解析結果を出力手段を有することを特徴とするソースプログラムの解析方法。
【請求項４】
前記規約選択手段は、予め定められた規約が蓄積されており、ルールの性質により、前記規約レベルを決めることができ、ルールの変更または、追加が可能な手段となっていることを特徴とする請求項３記載のソースプログラムの解析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムの解析装置に係り、規約に基づいて、ソースコードを静的または、動的に解析し、規約違反箇所を指摘し、ソースコードを自動的に修正するプログラム解析装置に関するものである。
【背景技術】
【０００２】
近年、デジタル化、ネットワーク化により、ソフトウェア規模の拡大、複雑化に伴い、ソフトウェアの生産性向上が課題となっている。
【０００３】
このような背景のもと、品質向上のために、各社が、実装段階で、生産性向上を目的として標準実装規約を定めている。開発されたソースコードが自社のコーディング規約を遵守しているかどうか確認するための従来技術として、例えば、特許文献１等に記載された技術が知られている。図５は特許文献１に記載された従来のソースプログラムの静的解析装置である。図５に示す従来の静的解析装置は、ソースプログラム１０から制御構造ツリー１１１を作成する制御構造ツリー作成部１１０と、ルールファイル蓄積部１１６のファイルに基づいて制御構造ツリー１１１を解析する構造解析部１１２と、構造解析部１１２の解析結果を保持するリソース使用管理テーブル１１８および解析結果バッファ１１３と、解析結果を編集する解析結果編集部１１４と、解析結果編集部１１４が編集した解析結果を出力する解析結果出力部１１５から成る。ソースプログラムの入力に対して、制御構造ツリーを作成し、ルールファイル蓄積部のルールに基づいて、解析ツリーを解析し、リソースの確保と解放との対応およびリソースの占有と占有解除との対応をチェックする。一致していない場合は、エラー情報を出力する。
【０００４】
また、自社の規約守るためのもう一つの手法としては、既存の静的解析ツールによる確認とレビューによる確認がある。既存の静的解析ツールは、解析対象ソースコードを解析し、ＩＳＯ−Ｃ規格に準拠していない記述を検出する。さらに、レビューによる確認方法では、人間が手作業でソースコードを読解して内容を把握することも行われる。
【特許文献１】特開２００４−１４５３８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら前述した従来技術は、ルールファイル蓄積部のリソースの確保／解放、リソースの占有／占有解除と一致するか否かの判定により、ソースプログラムの実行処理順序の誤りだけを指摘する。しかしながら、ソースプログラムの構文上の誤りは指摘することができないという問題点を有している。また、エラー情報のみでは、誤りの原因が不明確なので、修正方法が明確に分からない。従来、規約を守るために、静的解析ツールを利用すると、ツールの出力する警告の数が多く、玉石混交で、品質に直結するエラー発見しにくく、規約とツールの出力する警告は必ずしも一致していない。および規約の中に、ツールでチェックできない規約が存在するなどの問題点が存在していた。
【０００６】
また、レビューによって、規約を確認するには、目視によるチェックを行う必要があり、チェック漏れが発生する可能性が高い。
【０００７】
本発明は上記課題を解決するため、開発者が、各社の規約を選択し、さらに規約レベルを選択し、各社の規約情報に基づいてソースプログラムを解析し、解析結果により、ソースコードを自動的に修正することができる。
【課題を解決するための手段】
【０００８】
前記従来の課題を解決するために、本発明でソースプログラムを解析し、その解析結果を出力するソースプログラムの解析装置において、各社の規約を選択し、規約レベルを選択機能を用いて規約選択部、各社の規約情報のデータベースの構文解析項目に基づいてソースプログラムを解析し、メッセージ編集部で生成された解析結果を出力する出力部を備えることにより達成される。また、規約選択部は、予め定められた規約が蓄積されており、ルールの性質により、規約レベルを決めることができ、ルールの変更または、追加が可能になる。さらに、メッセージ編集部により、エラーメッセージおよび修正方法を自動的に出力することができる。
【発明の効果】
【０００９】
本発明の規約に基づくプログラム解析装置によれば、規約選択機能を利用して、プログラム解析装置による、エラーメッセージを社内規約に限定できる。さらに、違反箇所の誤検出と漏れがないので、開発者の再確認が不要になる。また、メッセージ生成部のエラー自動修正機能により、規約遵守しやすいため、初級者でも、社内の規約を簡単に守ることができる。そのため、実装工程に起因する不具合が少なくなり、一定の品質基準を確保することができる。さらに、規約を簡単に守ることができるので、各部門が規約を導入することが容易になる。
【発明を実施するための最良の形態】
【００１０】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１１】
（実施の形態１）
図１は、本発明の実施の形態１における規約に基づくソースプログラムの解析装置の構成図である。図１において、図２と同じ構成要素については同じ符号を用い、説明を省略する。
【００１２】
図１において、１０はソースプログラム、１１はソースプログラム解析装置、１２は規約選択部、１１０は静的解析、１１１は動的解析、１１２はメッセージ編集部、１１３は出力部、１２０は会社規約、１２１は規約レベル、１２２は各社の規約情報である。
【００１３】
本発明の実施の形態１によるソースプログラム解析装置１１は、静的解析１１０、動的解析１１１、メッセージ編集部１１２、出力部１１３から構成される。ソースプログラム解析装置１１は、ソースプログラム１０を読み込み、ユーザが規約選択部１２の会社規約１２０を選択する。次に、開発者の希望により規約レベル１２１を選択する。各社の規約情報１２２に基づいて静的解析１１０と動的解析１１１を実行する。実行結果によって、メッセージ編集部１１２で生成されたエラー情報を出力部１１３で出力する。
【００１４】
図２は本発明の実施の形態による解析装置１１での処理動作の概要を説明するフローチャートであり、次に、これについて説明する。
【００１５】
（１）まず、ソースプログラム解析装置１１は、ソースプログラム１０を読み込む。そこで、ソースプログラム１０に複数ファイルが指定された場合、全てファイルを読み込む。ソースプログラム解析装置１１で、読み込んだソースプログラム１０を解析装置１１によって解析する（ステップＳ１）。
【００１６】
（２）次に、ユーザが規約選択部１２の会社規約１２０を選択する。会社規約は、各社の規約情報１２２から選べる。また、各会社の規約情報を追加したり、変更したりすることができる（ステップＳ２）。
【００１７】
（３）次に、（２）のように、ユーザが規約選択部１２で選択した会社規約の規約レベル１２１を選択できる。各社の規約は複数のルールを含む。規約レベル１２１は、ルールの性質による分類、たとえば、バグ、移植性、品質性、可読性などに分類される（ステップＳ３）。
【００１８】
（４）次に、ソースプログラム解析装置１１では、ルールに基づく解析を行う（ステップＳ４）。ステップＳ４中では、各社の規約情報１２２中に含む後述のパターン３０６によって、静的解析（ステップＳ５）と動的解析（ステップＳ６）を自動的に選択し、解析する。
【００１９】
（５）次に、解析結果によりメッセージ編集部１１２でエラー情報４０１、修正方法４０２、推奨パターン４０３を生成する（ステップＳ７）。
【００２０】
（６）次に、メッセージ編集部１１２で生成した情報を画面で表示する（ステップＳ８）。表示された推奨パターン４０３の一つを開発者が選択し、その選択に基づいて違反ソースコードを自動的に直す。
【００２１】
図３は、前述のステップＳ４での各社の規約情報１２２であり、次に、これについて説明する。このデータベースの項目３０は、ルール番号３０１、ルール３０２、構文解析３０３、レベル３０４、修正方法３０５、パターン３０６から成る。ルール番号３０１は、会社が定めるコーディング規約の番号を示す。ルール３０２は、会社が定めるルールの説明を示す。構文解析３０３は、このルールを守るため、具体的な作業およびアルゴリズムを記述する。この項目により、ソースプログラムを解析する。レベル３０４は、ルールの性質による、バグ、移植性、安全性、可読性の分類を示す。修正方法３０５は、違反ソースコードに対して、修正方法を記述する。パターン３０６は、ルールが静的解析と動的解析どちらを必要とするか示す。
【００２２】
図４は、前述のステップＳ５でのメッセージ編集部１１２である。メッセージ項目４０は、エラー情報を生成するためのエラーテーブル。エラー情報４０１は、違反箇所のファイル名、行数、違反したルール番号、ルールの説明を示す。修正方法４０２は、ルールを守るための修正方法、推奨パターン４０３は、この違反ソースコードに対して、ルールを守るための、正しいコードを示す。
【００２３】
前述した本発明の実施の形態１によるソースプログラムの解析装置によれば、規約のレベル３０４により、選択したレベル３０４のルールだけを遵守できる、また、パターン３０６によって、静的解析と動的解析を自動的に決定し、解析する。構文解析３０３によって、プログラムを自動的にチェックすることができ、メッセージ編集部１１２によれば、ユーザが違反の箇所が分かって、修正方法３０５も同時にわかり、推奨パターン４０３によって、自動的に修正することができる。
【産業上の利用可能性】
【００２４】
本発明を用いれば、ソフト開発実装プロセスにおいて、品質を一定に保つことができるソフトウェア開発環境の構築することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施の形態１における規約に基づくプログラムの解析装置の図
【図２】本発明の実施の形態１におけるフローチャート
【図３】各社の規約情報の図
【図４】メッセージ編集部の図
【図５】従来のソースプログラムの静的解析装置の図
【符号の説明】
【００２６】
１０    ソースプログラム
１１    ソースプログラム解析装置
１２    規約選択部
１１０    静的解析
１１１    動的解析
１１２    メッセージ編集部
１１３    出力部
１２０    会社規約
１２１    規約レベル
１２２    各社の規約情報
３０    データベース項目
３０１    ルール番号
３０２    ルール
３０３    構文解析
３０４    レベル
３０５    修正方法
３０６    パターン
４０    メッセージ
４０１    エラー情報
４０２    修正方法
４０３    推奨パターン
【図１】
2006236042.tif 000003
【図２】
2006236042.tif 000004
【図３】
2006236042.tif 000005
【図４】
2006236042.tif 000006
【図５】
2006236042.tif 000007