(57)【特許請求の範囲】
【請求項１】
ソースプログラムを解析し，解析した結果を指摘メッセージとして出力するソースプログラム解析装置において，
ソースプログラム内に指摘メッセージの出力を抑止することを指示する抑止情報が存在しても指摘メッセージを出力するかどうかを設定する手段と，
抑止情報が存在しても指摘メッセージを出力するように設定されている場合には抑止情報の有無にかかわらず指摘メッセージを出力し，抑止情報が存在する場合に指摘メッセージの出力を抑止するように設定されている場合には抑止情報に応じて指摘メッセージの出力を抑止する手段とを備える
ことを特徴とするソースプログラム解析装置。
【請求項２】
請求項１に記載するソースプログラム解析装置において，
前記抑止情報により抑止した指摘メッセージが存在する場合にその指摘メッセージを出力するかどうかを設定する手段と，
抑止した指摘メッセージが存在する場合にその指摘メッセージを出力するように設定されている場合に，抑止した指摘メッセージを出力する手段とを備える
ことを特徴とするソースプログラム解析装置。
【請求項３】
請求項２に記載するソースプログラム解析装置において，
前記抑止した指摘メッセージを出力する手段は，抑止した指摘メッセージを出力する場合に，抑止した指摘メッセージであることが分かるように出力する
ことを特徴とするソースプログラム解析装置。
【請求項４】
請求項１に記載するソースプログラム解析装置において，
指摘メッセージの出力リストにおいて出力を抑止したい指摘メッセージを選択させる手段と，
ソースプログラム内に，前記選択された指摘メッセージを抑止するための情報を自動的に挿入する手段とを備える
ことを特徴とするソースプログラム解析装置。
【請求項５】
コンピュータにソースプログラムを解析し，解析した結果を指摘メッセージとして出力させるためのソースプログラム解析プログラムを記録したコンピュータ読み取り可能な記録媒体であって，
前記コンピュータを，
ソースプログラム内に指摘メッセージの出力を抑止することを指示する抑止情報が存在しても指摘メッセージを出力するかどうかを設定する手段と，
抑止情報が存在しても指摘メッセージを出力するように設定されている場合には抑止情報の有無にかかわらず指摘メッセージを出力し，抑止情報が存在する場合に指摘メッセージの出力を抑止するように設定されている場合には抑止情報に応じて指摘メッセージの出力を抑止する手段
として機能させるためのソースプログラム解析プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，ソースプログラムの解析により指摘メッセージを出力する機能を有するソースプログラム解析装置およびソースプログラム解析プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
従来のソースプログラム解析においては，ソースプログラム中の問題箇所や注意すべき箇所を指摘する指摘メッセージは全て出力されていた。このため，ある指摘メッセージについては，意図的なものであって指摘メッセージの出力を望まないものであっても出力されたり，また，指摘メッセージの出力は機械的に処理されるため，適切でない指摘メッセージや不必要な指摘メッセージも出力されてしまうことがあった。
【０００３】
一方，このような画一的な処理を改善するため，例えば，ＵＮＩＸの標準的なツールとして知られている“ｌｉｎｔ”のように，ソースプログラムの記述に所定の抑止情報を付与し，その抑止情報がある部分についての指摘メッセージは出力しないようにするものがあった。
【０００４】
このように，従来のソースプログラム解析の際の指摘メッセージの出力は，抑止することなく全ての指摘メッセージを出力するか，または抑止情報によって抑止した指摘メッセージの全てを出力しないかのいずれかであった。
【０００５】
【発明が解決しようとする課題】
したがって，指摘メッセージを元にソースプログラムを修正した後に，再度ソースプログラムの解析を行なうような場合に，出力が不要な指摘メッセージを何度も出力することは，不必要な指摘メッセージの確認作業を繰り返し行うことになり，作業処理の軽減が図れず，また本当に必要な指摘メッセージを抽出することが困難になる等の問題を生じていた。
【０００６】
また，一度抑止情報をソースプログラム中に設定すると，以後はその指摘メッセージが出力されないため，指摘メッセージを再確認したいときでも，指摘メッセージを再出力させることが簡単にはできないという問題があった。
【０００７】
本発明は上記問題点の解決を図り，必要としない指摘メッセージは出力を抑止し，また抑止した指摘メッセージについても必要な場合には簡単に出力させることができるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
図１は，本発明のブロック構成例を示す。
ソースプログラム解析装置１はＣＰＵおよびメモリ等により構成され，抑止情報適用有無設定部２，抑止メッセージ出力有無設定部３，指摘メッセージ出力処理部４，抑止情報自動挿入処理部５を持つ。
【０００９】
抑止情報適用有無設定部２は，ユーザからの指示に応じて，ソースプログラム６内に抑止情報が存在しても指摘メッセージを出力するかどうかを設定する手段である。また，抑止メッセージ出力有無設定部３は，ユーザからの指示に応じて，抑止情報により抑止した指摘メッセージが存在する場合に，その指摘メッセージを出力するかどうかを設定する手段である。
【００１０】
抑止情報適用有無設定部２が抑止情報を適用するか否かを設定するのに対し，抑止メッセージ出力有無設定部３は，抑止情報を適用した場合において抑止した指摘メッセージを出力するか否かを設定する点が異なる。
【００１１】
指摘メッセージ出力処理部４は，抑止情報適用有無設定部２での設定に基づき，抑止情報が存在しても指摘メッセージを出力するように設定されている場合には抑止情報の有無にかかわらず指摘メッセージを出力し，抑止情報が存在する場合に指摘メッセージの出力を抑止するように設定されている場合には抑止情報に応じて指摘メッセージの出力を抑止する。また，抑止メッセージ出力有無設定部３での設定に基づき，抑止した指摘メッセージが存在する場合にその指摘メッセージを出力するように設定されている場合に，抑止した指摘メッセージを出力する。このとき，抑止マーク付与部４１は，抑止した指摘メッセージに特定の記号等を付加して出力し，抑止した指摘メッセージの出力であるか他の指摘メッセージの出力であるかを一目で区別できるように出力する。
【００１２】
抑止情報自動挿入処理部５は，指摘メッセージの出力リストにおいて出力を抑止したい指摘メッセージを選択させる手段と，ソースプログラム６内に，前記選択された指摘メッセージを抑止するための情報を自動的に挿入する手段とを持つ。
【００１３】
ソースプログラム６は，解析の対象となるソースプログラムである。
以上の各処理手段を計算機によって実現するためのプログラムは，計算機が読み取り可能な可搬媒体メモリ，半導体メモリ，ハードディスクなどの適当な記憶媒体に格納することができる。
【００１４】
本発明は，以下のように作用する。
抑止情報適用有無設定部２により，ソースプログラム６内に抑止情報が存在する場合に指摘メッセージを出力するかどうかを設定し，抑止情報が存在しても指摘メッセージを出力するように設定したときには，指摘メッセージ出力処理部４により，ソースプログラム６を解析した結果の指摘メッセージを，抑止情報があっても出力する。抑止情報が存在する場合に指摘メッセージを出力しないように設定したときには，ソースプログラム６を解析した結果の指摘箇所に抑止情報があれば，指摘メッセージを出力しないようにする。これによって，指摘メッセージを抑止情報に応じて出力するかしないかを任意に選択することができるようになる。
【００１５】
また，抑止情報適用有無設定部２により，抑止情報が存在する場合に指摘メッセージの出力を抑止すると設定した場合であっても，抑止メッセージ出力有無設定部３により，抑止した指摘メッセージが存在する場合にその指摘メッセージを出力するように設定したときには，ソースプログラム６内の抑止情報を検出し，指摘メッセージ出力処理部４により，抑止した指摘メッセージを出力する。抑止した指摘メッセージが存在する場合にその指摘メッセージを出力しないように設定したときには，指摘メッセージ出力処理部４により，抑止した指摘メッセージを出力しないようにする。これによって，抑止した指摘メッセージについても，必要な場合には任意に出力させることができるようになる。
【００１６】
指摘メッセージ出力処理部４が抑止した指摘メッセージを出力する場合に，抑止マーク付与部４１は，例えば指摘メッセージに抑止マークを付与するなどして，出力された指摘メッセージが抑止したものであることが分かるような出力形式で出力する。これによって，抑止した指摘メッセージと抑止していない指摘メッセージとを一目で区別することができ，解析結果の検討作業を効率化することが可能になる。
【００１７】
また，抑止情報自動挿入処理部５により，指摘メッセージの出力リストにおいて出力を抑止したい指摘メッセージを任意に選択し，ソースプログラム６内に，選択された指摘メッセージを抑止するための情報を自動的に挿入することができるので，ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）等による簡単な操作で，不要な指摘メッセージへの抑止情報の設定が可能になる。
【００１８】
【発明の実施の形態】
以下に，本発明の実施の一形態を説明する。
図２は，本実施の形態の処理概要を示すフローチャートである。
【００１９】
あらかじめ抑止情報適用有無設定部２により，ソースプログラム６内に抑止情報がある場合に指摘メッセージを出力するかどうかを設定し（Ｓ１），さらに抑止メッセージ出力有無設定部３により，ソースプログラム６内に指摘メッセージの出力を抑止した部分がある場合にも指摘メッセージを出力するかどうかを設定する（Ｓ２）。
【００２０】
ソースプログラム６内に抑止情報があっても指摘メッセージを出力するよう設定されているかどうかを判断し（Ｓ３），抑止情報の有無にかかわらず指摘メッセージを出力するよう設定されているときにはステップＳ８の処理へ進む。ソースプログラム６内に抑止情報がある場合には指摘メッセージを出力しないよう設定されているときにはステップＳ４の処理へ進む。
【００２１】
ステップＳ４の処理では，ソースプログラム６内に抑止情報があるかどうかを判断し，ソースプログラム６内に抑止情報がない場合にはステップＳ８の処理へ進み，ソースプログラム６内に抑止情報を検出した場合にはステップＳ５の処理へ進む。
【００２２】
次に，ステップＳ５の処理では，抑止した指摘メッセージを出力するようになっているかどうかを判断し，抑止した指摘メッセージを出力するようになっている場合には，抑止した指摘メッセージに抑止マークを付加して，抑止した指摘メッセージと抑止していない指摘メッセージとを分かるように出力する（Ｓ６）。抑止した指摘メッセージを出力するようになっていない場合には，抑止した指摘メッセージ以外の指摘メッセージを出力する（Ｓ７）。ＧＵＩの場合には，Ｓ６とＳ７の出力をした後に，Ｓ２の処理を行うことができ，再度Ｓ５の処理を繰り返すことができる。その後，ステップＳ９の処理へ進む。
【００２３】
ステップＳ８の処理では，抑止情報があっても全ての指摘メッセージを出力する。
続いて，ステップＳ９の処理では，抑止情報自動挿入処理部５により，指摘メッセージの出力リストにおいて，次のソースプログラム６の解析時に出力を抑止したい指摘メッセージが選択された場合に，ソースプログラム６中に抑止情報を自動挿入する（Ｓ９）。
【００２４】
図３は，抑止情報適用の有無の設定の例を示す。
図３（Ａ）は，抑止情報を適用するか否かの設定を，ＧＵＩを用いて行うときの抑止情報適用設定画面の例であり，図３（Ｂ）は，抑止情報を適用するか否かの設定を，ソースプログラム解析装置１を実現するソース解析プログラム（ソースチェッカ）を起動する際のコマンドのオプションにより行う例である。
【００２５】
図３（Ａ）に示す抑止情報適用設定画面を用いて抑止情報を適用することを設定する場合には，解析対象のソースプログラムの一覧またはディレクトリ等で，抑止情報を適用するソースプログラム６を選択した後，抑止情報適用設定画面上でマウスクリック等により「レ」点をマークする。このマークによって，ソースプログラム６中に抑止情報があると指摘メッセージを出力しない旨の設定がなされる。
【００２６】
また，図３（Ｂ）に示すように，ソース解析プログラム（プログラム名＝ｐｇｒ）の起動コマンドのオプションとして「−ｄ」を記述することにより，同様に抑止情報を適用する旨を設定することができる。図中，「％」はコマンドの入力を促すプロンプト，「ａ．ｃ」「ｂ．ｃ」は解析するソースプログラム６のファイル名である。解析結果である指摘メッセージの出力は，この例では標準出力（画面）である。
【００２７】
図４は，抑止した指摘メッセージの出力の有無の設定の例を示す。
図４（Ａ）は，抑止した指摘メッセージを出力するか否かの設定を，ＧＵＩを用いて行うときの被抑止指摘メッセージ出力設定画面の例であり，図４（Ｂ）は，抑止した指摘メッセージを出力するか否かの設定を，ソース解析プログラム（ソースチェッカ）を起動する際のコマンドのオプションにより行う例である。
【００２８】
図４（Ａ）に示す被抑止指摘メッセージ出力設定画面を用いて，抑止した指摘メッセージを出力することを設定する場合には，解析対象のソースプログラムの一覧またはディレクトリ等で，抑止した指摘メッセージの出力が必要なソースプログラム６を選択した後，被抑止指摘メッセージ出力設定画面上でマウスクリック等により「レ」点をマークする。このマークによって，抑止情報を適用した場合でも，抑止した指摘メッセージを出力する旨の設定がなされる。
【００２９】
また，図４（Ｂ）に示すように，ソース解析プログラム（プログラム名＝ｐｇｒ）の起動コマンドのオプションとして「−ｏ」を記述することにより，同様に抑止した指摘メッセージを出力する旨を設定することができる。
【００３０】
図５は，抑止情報の例を示す図である。
図５（Ａ）は，標準インクルードによる指摘メッセージ抑止の例を示している。図５（Ａ）に示すソースプログラムＡの「＃ｉｎｃｌｕｄｅ」文で呼び出される「ｓｔａｎｄａｒｄ．ｈ」のヘッダファイル内に，構文エラーではないが，通常は用いられないような意味のない条件式などの指摘箇所（この例では「ｉｆ  （ｘ  ＝  １）」）がある場合に，「＃ｉｎｃｌｕｄｅ」文でｓｔａｎｄａｒｄ．ｈを「＜＞」で括っているため，標準インクルードであると認識し，指摘箇所があっても指摘メッセージを出力しない。ソースプログラム解析装置１は，このような標準インクルードを抑止情報とみなす。
【００３１】
図５（Ｂ）は，コメントによる指摘メッセージ抑止の例を示している。図５（Ｂ）に示すように，本来は指摘されるべき記述（この例では「ｉｆ  （ｘ  ＝  １）」）があるが，この箇所に，「／＊  ｐｇｒ００４０  ＊／  」という特殊な文字列をコメントとして付けることにより，ソースプログラム解析装置１は，この箇所については原則として指摘メッセージを出力しない。この場合には，コメント「／＊  ｐｇｒ００４０  ＊／  」が抑止情報となる。なお，「／＊  ｐｇｒ００４０  ＊／  」中の「００４０」は，数多くある指摘メッセージの中のメッセージ番号であり，００４０番の指摘メッセージだけ出力を抑止することを指示している。同じ記述のコンポーネント中に他の種類の指摘箇所がある場合には，その指摘メッセージの出力は抑止されない。
【００３２】
例えば，メッセージ番号が００４０番と００４１番の複数の指摘メッセージの出力を抑止する場合には，「／＊  ｐｇｒ００４０，ｐｇｒ００４１  ＊／  」という抑止情報の記述
になる。
【００３３】
図６は，抑止情報自動挿入の処理の例を示す図である。
図６（Ａ）に示すように，指摘メッセージ出力処理部４は，抑止情報適用有無設定部２の設定に基づいて指摘メッセージリストを出力する。このリスト中から，出力を抑止したい指摘メッセージを選択する場合，その指摘メッセージにカーソルを合わせて，メニューまたは指摘メッセージのクリック等により抑止情報の挿入を指示する。これによって，図６（Ｂ）に示すような抑止情報自動挿入画面が表示されるので，この画面中の「実行」ボタンをクリックする。抑止情報自動挿入処理部５は，「実行」ボタンがクリックされると，ソースプログラム６中の選択された指摘メッセージに対応する部分に，例えば図６（Ｃ）に示すようなコメント「／＊  ｐｇｒ００４０  ＊／  」を抑止情報として自動挿入する。
【００３４】
図７は，抑止した指摘メッセージを含む指摘メッセージリストの例を示す図である。抑止した指摘メッセージを出力するように設定されている場合，抑止マーク付与部４１によって，抑止した指摘メッセージに抑止マーク（＊）を付けることにより，指摘メッセージのリスト中で，その指摘メッセージが抑止したものであることが分かるようにする。これによって，ユーザは，指摘メッセージを参照する際に，抑止した指摘メッセージだけに注目して再チェックすることも，これとは反対に，抑止した指摘メッセージは無視して，抑止しない指摘メッセージだけに注目してチェックすることも簡単に行うことができるようになる。
【００３５】
【発明の効果】
以上説明したように，本発明によれば，ソースプログラム中に指摘メッセージの抑止情報がある場合に，これを出力／非出力とし，また，抑止情報が付与された指摘メッセージであることを明示して出力することができる。これにより，ソースプログラムを解析した結果の指摘メッセージに関する確認の作業効率を大きく向上させることが可能になる。また，抑止が必要な指摘メッセージに対して抑止情報の設定も簡単に行うことができるようになる。
【図面の簡単な説明】
【図１】本発明のブロック構成例を示す図である。
【図２】本実施の形態の処理概要を示すフローチャートである。
【図３】抑止情報適用の有無の設定の例を示す図である。
【図４】抑止した指摘メッセージの出力の有無の設定の例を示す図である。
【図５】抑止情報の例を示す図である。
【図６】抑止情報自動挿入の処理の例を示す図である。
【図７】被抑止指摘メッセージを含む指摘メッセージリストの例を示す図である。
【符号の説明】
１      ソースプログラム解析装置
２      抑止情報適用有無設定部
３      抑止メッセージ出力有無設定部
４      指摘メッセージ出力処理部
４１  抑止マーク付与部
５      抑止情報自動挿入処理部
６      ソースプログラム
【図１】
0003544462.tif 000002
【図２】
0003544462.tif 000003
【図３】
0003544462.tif 000004
【図４】
0003544462.tif 000005
【図５】
0003544462.tif 000006
【図６】
0003544462.tif 000007
【図７】
0003544462.tif 000008