(57)【要約】      （修正有）【課題】複数種の静的解析ツールを使用した場合における、品質検証者の作業負担を軽減する。【解決手段】複数種の静的解析ツールＴ１〜Ｔｎで解析されることによって得られる、ソースプログラムの問題点が指摘された解析結果から、指摘問題内容の各静的解析ツールＴ１〜Ｔｎ間における類似度情報、及び指摘箇所情報に基づいて、同一指摘部分を検出するマージ処理実行部１８と、その検出結果に基づいて、同一指摘部分を整理して解析結果を表示するマージ結果表示部１９とを装備する。【選択図】図３
2009169573.tif 000002
【特許請求の範囲】
【請求項１】
複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
点が指摘された解析結果から、指摘問題内容の各静的解析ツール間における類似度情報、
及び指摘箇所情報に基づいて、同一指摘部分を検出する検出手段と、
該検出手段による検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力す
る出力手段とを備えていることを特徴とする解析結果出力装置。
【請求項２】
前記出力手段が、重複する部分を省略して前記解析結果を出力するものであることを特
徴とする請求項１記載の解析結果出力装置。
【請求項３】
前記出力手段が、同一指摘部分を並べて出力するものであり、
使用者により同一指摘部分でないと指定された場合、指定内容を同一指摘部分の検出に
反映するように構成されていることを特徴とする請求項１又は請求項２記載の解析結果出
力装置。
【請求項４】
静的解析ツールによって指摘される問題内容に対するメッセージに基づいて、指摘問題
内容の各静的解析ツール間における類似度を算出する算出手段と、
該算出手段により算出された類似度に基づいて、指摘問題内容の各静的解析ツール間に
おける類似度情報を示すマトリクスを作成する作成手段と、
複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの（記
述誤りなどの）問題点が指摘された解析結果から、前記作成手段により作成されたマトリ
クスに基づいて、同一指摘部分を検出する検出手段と、
該検出手段による検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力す
る出力手段とを備えていることを特徴とする解析結果出力装置。
【請求項５】
前記算出手段が、前記メッセージに含まれる単語の類似度及び頻度に基づいて、指摘問
題内容の各静的解析ツール間における類似度を算出するものであることを特徴とする請求
項４記載の解析結果出力装置。
【請求項６】
前記算出手段が、前記メッセージの固定部に含まれる単語の類似度及び頻度に基づいて
、指摘問題内容の各静的解析ツール間における類似度を算出するものであることを特徴と
する請求項５記載の解析結果出力装置。
【請求項７】
静的解析ツールで解析することによって得られる解析結果から情報を抽出する抽出手段
と、
該抽出手段によって抽出された情報を整理することによって、前記解析結果のフォーマ
ットを各静的解析ツール間で揃える整理手段とを備えていることを特徴とする請求項４〜
６のいずれかの項に記載の解析結果出力装置。
【請求項８】
静的解析ツールで解析することによって得られる解析結果のフォーマットをユーザが定
義するための環境を設定する設定手段を備え、
前記抽出手段が、前記定義に基づいて、前記解析結果から情報を抽出するものであるこ
とを特徴とする請求項７記載の解析結果出力装置。
【請求項９】
複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
点が指摘された解析結果から、指摘問題内容の各静的解析ツール間における類似度情報、
及び指摘箇所情報に基づいて、同一指摘部分を検出するステップと、
検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力するステップとを有
していることを特徴とする解析結果出力方法。
【請求項１０】
複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
点が指摘された解析結果を、同一指摘部分について整理して出力するステップを有してい
ることを特徴とする解析結果出力方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は解析結果出力装置、及び解析結果出力方法に関し、より詳細には、静的解析ツ
ールで解析されることによって得られる、ソースプログラムの問題点を指摘した解析結果
を出力する解析結果出力装置、及び解析結果出力方法に関する。
【背景技術】
【０００２】
品質の高いソフトウェアの開発を支援するものとして、例えば、ソースプログラムを静
的解析し、単純なコーディングミスや論理的な誤り、性能を劣化させるような記述などを
指摘する静的解析ツールがある。
【０００３】
静的解析ツールには有償、無償、そして内製のものなど色々とある。また、静的解析ツ
ールは各々独自の特徴を持っており、それぞれ得意とする検査項目が異なる。例えば、静
的解析ツールＡで指摘される問題点が、それとは異なる静的解析ツールＢでは指摘されな
かったり、その逆に、静的解析ツールＡでは指摘されない問題点が、静的解析ツールＢで
は指摘されるといったことがある。そのため、ソースプログラムの品質検証には、静的解
析ツールを複数種使用し、指摘漏れの無いようにするのが望ましい。
【０００４】
ところで、静的解析ツールが各々独自の特徴を持っていて、ある静的解析ツールでは指
摘されない問題点が別の静的解析ツールでは指摘されるということがあっても、問題点の
多くはどの静的解析ツールでも指摘される。つまり、指摘解析ツールを複数種使用した場
合、同じ問題点に対して指摘が重複することになる。
【０００５】
図１は静的解析ツールＡによる解析結果を示した一例であり、図２は静的解析ツールＢ
による解析結果を示した一例である。図中ａ１、ａ２、ｂ１、ｂ２は指摘メッセージ等を
示している。静的解析ツールＡによる解析結果（図１）と静的解析ツールＢによる解析結
果（図２）とではその表示フォーマットは異なっているが、表示ａ１、ｂ１は同一問題点
を表している。
【０００６】
そのため、ソースプログラムの品質を検証する者は、どの指摘問題点が重複しているの
かを比較検討しなければならない。つまり、解析結果をまとめるマージ作業が必要となる
。
しかしながら、マージ作業は簡単ではない。よって、品質検証者の作業負担が大きくな
る。
【０００７】
下記の特許文献１、２には、バージョン更新されたソースプログラムの静的解析による
解析結果を出力する場合に、バージョン更新前（すなわち、旧バージョン）のソースプロ
グラムの解析結果やその解析結果への対応結果を考慮に入れて、出力する解析結果を少な
くし、品質検証の作業効率を向上させることについて記載されています。
しかしながら、これら特許文献１、２には、静的解析ツールを複数種使用した場合への
対応策については記載されていません。
【０００８】
また、複数種の静的解析ツールで解析されることによって得られる解析結果をマージす
るマージシステムを作成しようとすれば、どのような問題点が重複して指摘されるのかを
検討し、その検討結果を踏まえて、マージシステムの仕様書、設計書、そして検査書を作
成する必要があり、作成は簡単ではない。
【０００９】
また、このようなマージシステムに、新たな指摘解析ツールを追加実装する場合には、
また新たにどのような問題点が重複して指摘されるのかを検討しなければならない。つま
り、仕様書、設計書、検査書を新たに作成しなければならない。これでは、著しく効率を
低下させることになる。
【特許文献１】特開２００４−１２６８６６号公報
【特許文献２】特開２００６−３４４１４５号公報
【発明の開示】
【課題を解決するための手段及びその効果】
【００１０】
本発明は上記課題に鑑みなされたものであって、複数種の静的解析ツールを使用した場
合における、品質検証者の作業負担を軽減することのできる解析結果出力装置、及び解析
結果出力方法を提供することを目的としている。
【００１１】
上記目的を達成するために本発明に係る解析結果出力装置（１）は、複数種の静的解析
ツールで解析されることによって得られる、ソースプログラムの問題点が指摘された解析
結果から、指摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に
基づいて、同一指摘部分を検出する検出手段と、該検出手段による検出結果に基づいて、
同一指摘部分を整理して前記解析結果を出力する出力手段とを備えていることを特徴とし
ている。
【００１２】
例えば、静的解析ツールＡで指摘された問題内容と、静的解析ツールＢで指摘された問
題内容とが同一又は非常に似ており、なおかつ問題箇所が同一又は非常に近い場合、静的
解析ツールＡ、Ｂで指摘されたこれら問題は同一部分について指摘されたものと認められ
る。
【００１３】
問題箇所についてはプログラムの行、及びカラム（列）で表示することができる。問題
箇所の表現方法については静的解析ツールによって若干の違いが生じることがある。例え
ば、ある問題箇所に対し、静的解析ツールＡでは１４３行、１２カラムと表現され、静的
解析ツールＢでは１４５行、１１カラムと表現されることがある。
【００１４】
上記解析結果出力装置（１）によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果から、指
摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同
一指摘部分が検出される。従って、同一指摘部分を精度良く検出することができる。
さらに、上記解析結果出力装置（１）によれば、前記検出手段による検出結果に基づい
て、同一指摘部分を整理して前記解析結果が出力される。例えば、重複する部分を省略し
て出力する。これにより、品質検証者の作業負担を軽減することができる。
【００１５】
また、本発明に係る解析結果出力方法（１）は、複数種の静的解析ツールで解析される
ことによって得られる、ソースプログラムの問題点が指摘された解析結果から、指摘問題
内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同一指摘
部分を検出するステップと、検出結果に基づいて、同一指摘部分を整理して前記解析結果
を出力するステップとを有していることを特徴としている。
【００１６】
上記解析結果出力方法（１）によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果から、指
摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同
一指摘部分を検出する。従って、同一指摘部分を精度良く検出することができる。
さらに、上記解析結果出力方法（１）によれば、検出結果に基づいて、同一指摘部分を
整理して前記解析結果を出力する。例えば、重複する部分を省略して出力する。これによ
り、品質検証者の作業負担を軽減することができる。
【００１７】
また、本発明に係る解析結果出力方法（２）は、複数種の静的解析ツールで解析される
ことによって得られる、ソースプログラムの問題点が指摘された解析結果を、同一指摘部
分について整理して出力するステップを有していることを特徴としている。
【００１８】
上記解析結果出力方法（２）によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果を、同一
指摘部分を整理して前記解析結果を出力する。例えば、重複する部分を省略して出力する
。これにより、品質検証者の作業負担を軽減することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明に係る解析結果出力装置、及び解析結果出力方法の実施の形態を図面に基
づいて説明する。図３は実施の形態（１）に係る解析結果出力装置の要部を概略的に示し
たブロック図である。図中１は解析結果出力装置を示しており、解析結果出力装置１は図
示しないＣＰＵ、ＲＯＭ、及びＲＡＭを備えたマイコン２と、Ｉ／Ｆ（入出力インターフ
ェース）３と、キーボードやマウスなどを含む入力装置４と、表示装置５とを含んで構成
されている。
【００２０】
マイコン２はＲＯＭに格納されたプログラムを実行することによって、解析結果出力装
置１全体を統括する統括制御部１１、フォーマット定義編集・登録部１２、静的解析ツー
ルＴｉ（ｉ＝１〜ｎ）を実行する静的解析ツール実行部１３、警告情報抽出部１４、警告
メッセージ類似度算出部１６と警告箇所近似度算出部１７とを含む学習・推論部１５、マ
ージ処理実行部１８、マージ結果表示部１９、及び入力・表示制御部２０として機能する
ことができるようになっている。
【００２１】
また、マイコン２には起動引数フォーマット定義記憶部２１、解析結果フォーマット定
義記憶部２２、実行可能ロジック記憶部２３、解析対象ソースプログラム群記憶部２４、
単語帳データ記憶部２５、警告メッセージ類似度マトリクス２６、警告箇所近似度マトリ
クス２７、解析結果マージ記憶部２８、ユーザ判定減点値マトリクス２９、及び静的解析
ツールＴｉで解析することによって得られる解析結果を記憶する解析結果記憶部Ｍｉが形
成されている。
【００２２】
図４は、フォーマット定義編集・登録部１２の説明に用いるためのブロック図であり、
図５は、ファーマット定義編集・登録部１２の行う処理動作を示したフローチャートであ
る。フォーマット定義編集・登録部１２は、ユーザからの操作を受けた統括制御部１１か
らの指令で起動するようになっている。
【００２３】
フォーマット定義編集・登録部１２は起動すると、まず「フォーマット登録メイン画面
」（図６）を表示し（ステップＳ１）、次に「ツール起動引数フォーマット」ボタンＢ１
が選択されたか否かを判断し（ステップＳ２）、「ツール起動引数フォーマット」ボタン
Ｂ１が選択されたと判断すると、「ツール起動引数フォーマット登録画面」（図７）を表
示する（ステップＳ３）。
【００２４】
「ツール起動引数フォーマット登録画面」（図７）上では、静的解析ツール起動引数の
フォーマットとして、静的解析ツール名、コマンド・パス、解析対象ファイル指定引数、
解析対象ファルダ指定引数、コンパイル・スイッチ指定引数、インクルードファイル検索
指定引数、及び解析結果ファイル指定引数の情報を入力することができるようになってい
る。
【００２５】
次に「ツール起動引数フォーマット登録画面」（図７）上で「登録」ボタンＢ３が選択
されたか否かを判断し（ステップＳ４）、「登録」ボタンＢ３が選択されたと判断すれば
、これら入力された情報を起動引数フォーマット定義記憶部２１へ登録する（ステップＳ
５）。これにより、静的解析ツールの自動実行が可能となる。図８に、起動引数フォーマ
ット定義記憶部２１に登録されている情報の一例を示す。
【００２６】
一方、ステップＳ２において、「フォーマット登録メイン画面」（図６）上で「ツール
起動引数フォーマット」ボタンＢ１は選択されていないと判断すれば、次に「解析結果フ
ォーマット登録」ボタンＢ２が選択されたか否かを判断し（ステップＳ６）、「解析結果
フォーマット登録」ボタンＢ２が選択されたと判断すると、「解析結果フォーマット登録
画面」（図９）を表示する（ステップＳ７）。
【００２７】
「解析結果フォーマット登録画面」（図９）上では、静的解析ツールの解析フォーマッ
トとして、正規表現指定、情報抽出ロジック指定を入力することができるようになってい
る。図１、図２に示したように、静的解析ツールが異なると、解析結果のフォーマットが
異なる。例えば、図１では「ＷＡＲＮＩＮＧ０１３」でＩＤ（解析結果を識別する符号）
が表示され、ファイル名の後に続く「％」で挟まれた数字「１４３」で警告箇所（問題の
発生している箇所）の行番号が表示されているのに対し、図２では「《Ｗ２７》」でＩＤ
が表示され、ファイル名の後に続く「：」で挟まれた数字「１４３」で警告箇所の行番号
が表示されている。
【００２８】
このように、静的解析ツールが異なると、解析結果のフォーマットも異なる。フォーマ
ットが異なっていると、どの指摘が重複しているのかの比較処理を効率良く行うことがで
きない。そのため、解析結果のフォーマットを揃えるのが良い。図１０は、解析結果のフ
ォーマットを各静的解析ツール間で揃えた状態を示したものである。
【００２９】
解析結果のフォーマットを揃えるには、それぞれの解析結果から情報を抽出して、例え
ば、図１０に示したようなフォーマットに埋め込んでいく必要がある。例えば、ＷＡＲＮ
ＩＮＧ［０−９９９］がＩＤを表していることや、ＩＤの後に続く文字列が警告メッセー
ジを表していることを指定する必要がある。
【００３０】
「解析結果フォーマット登録画面」（図９）は、これら指摘に用いるものである。また
ＷＡＲＮＩＮＧ［０−９９９］といった表現は正規表現であるので、上段の「正規表現指
定」で指定することができる。ＩＤの後に続く文字列が警告メッセージを表しているとい
った、正規表現で表せないものについては、下段の「情報抽出ロジック指定」で指定する
ことになる。
【００３１】
次に「解析結果フォーマット登録画面」（図９）上で「登録」ボタンＢ４が選択された
か否かを判断し（ステップＳ８）、「登録」ボタンＢ４が選択されたと判断すれば、入力
された情報（正規表現、情報抽出ロジック）を解析結果フォーマット定義記憶部２２へ登
録する（ステップＳ９）。図１１に、解析結果フォーマット定義記憶部２２に登録されて
いる情報の一例を示す。
【００３２】
次に「解析結果フォーマット登録画面」（図９）上で「コンパイル」ボタンＢ５が選択
されたか否かを判断し（ステップＳ１０）、「コンパイル」ボタンＢ５が選択されたと判
断すると、フォーマット定義編集・登録部１２に内蔵されたロジック・コンパイラ１２ａ
を起動して、入力された情報抽出ロジックを所定のプログラム言語でコンパイルする（ス
テップＳ１１）。
【００３３】
次にコンパイルが成功したか否かを判断し（ステップＳ１２）、コンパイルが成功した
と判断すると、コンパイル結果である実行可能ロジックを実行可能ロジック記憶部２３へ
登録する（ステップＳ１３）。一方、コンパイルが失敗したと判断すると、エラー表示を
行って、ユーザに情報抽出ロジックの修正を促し（ステップＳ１４）、その後、ステップ
Ｓ８へ戻る。
【００３４】
図１２は、静的解析ツール実行部１３の説明に用いるためのブロック図である。静的解
析ツール部１３は、ユーザからの操作を受けた統括制御部１１からの指令で起動するよう
になっている。静的解析ツール部１３は起動すると、まず「静的解析ツール起動画面」（
図１３）を表示するようになっている。
【００３５】
「静的解析ツール起動画面」（図１３）上では、静的解析ツールの実行に必要な情報と
して、解析対象ファイル指定、解析対象ファルダ指定、コンパイル・スイッチ指定、及び
インクルードファイル検索パス指定の情報を入力することができるようになっており、「
実行」ボタンＢ６が選択されると、静的解析ツール実行部１３が入力された情報、及び起
動引数フォーマット定義記憶部２１（図８）に登録されている情報を元に、静的解析ツー
ルＴｉ（ｉ＝１〜ｎ）を静的解析ツールＴ１から順に静的解析ツールＴｎまで起動するよ
うになっている。
【００３６】
静的解析ツールＴｉは、入力された情報に基づいて、解析対象ソースプログラム群記憶
部２４に登録されているソースプログラムを解析し、解析した結果を解析結果記憶部Ｍｉ
へ出力するようになっている。例えば、静的解析ツールＴ１で解析された結果は、解析結
果記憶部Ｍ１へ出力されて登録されることになる。
【００３７】
図１４は、警告情報抽出部１４の説明に用いるためのブロック図であり、図１５は、警
告情報抽出部１４の行う処理動作を示したフローチャートである。警告情報抽出部１４は
、静的解析ツール実行部１３による実行が終了すると、統括制御部１１からの指令で起動
するようになっている。
【００３８】
警告情報抽出部１４は起動すると、まず解析結果フォーマット定義記憶部２２（図１１
）及び実行可能ロジック記憶部２３から情報を読み込み（ステップＳ２１）、その後、静
的解析ツールＴ１〜Ｔｎで解析された結果を、解析結果記憶部Ｍ１から順に読み込む（ス
テップＳ２２）。
【００３９】
次に解析結果フォーマット定義記憶部２２（図１１）から読み込んだ正規表現、及び実
行可能ロジック記憶部２３から読み込んだ実行可能ロジックを起動し（ステップＳ２３）
、解析結果記憶部Ｍ１〜Ｍｎから読み込んだ解析結果から警告情報（静的解析ツール名、
ＩＤ、ファイルパス、行番号、カラム番号、警告メッセージ、行内容）を抽出し（ステッ
プＳ２４）、抽出した警告情報を警告情報格納領域３１へ出力する（ステップＳ２５）。
【００４０】
なおこのとき、警告情報毎に警告通番（通し番号）を付して、警告情報を登録するよう
になっている。図１６に、警告情報格納領域３１に記憶されている情報の一例を示す。図
中の「抽出済フラグ」の項目は、後述するマージ処理時に使用するものであり、初期設定
時には「ＯＦＦ」となっている。
【００４１】
図１７は、学習・推論部１５を構成する警告メッセージ類似度算出部１６の説明に用い
るためのブロック図である。学習・推論部１５は、統括制御部１１からの指令を受けて起
動するようになっている。また、学習・推論部１５を構成する警告メッセージ類似度算出
部１６は、固定メッセージ抽出部１６ａ、単語分解部１６ｂ、及び類義語含有度算出部１
６ｃとして機能し、学習・推論部１５からの指令を受けて起動するようになっている。
【００４２】
図１８は、警告メッセージ類似度算出部１６の行う処理動作を示したフローチャートで
ある。警告メッセージ類似度算出部１６の固定メッセージ抽出部１６ａは、警告情報格納
領域３１（図１６）に記憶されている、同一静的解析ツールによる警告情報に含まれる警
告メッセージのうち、同一ＩＤのものをすべて読み込む（ステップＳ３１）。例えば、ツ
ール名が「解析君」の静的解析ツールによるＩＤが「Ｗ１」の警告メッセージをすべて読
み込む。
【００４３】
次に、読み込んだ警告メッセージを相互に比較し、警告メッセージを固定文字列とパラ
メータ文字列とに仕分けし（ステップＳ３２）、ＩＤに対応付けて、固定文字列を固定文
字列格納領域３２へ格納する（ステップＳ３３）。例えば、ＩＤが「Ｗ１５」に対する警
告メッセージに「１２１行目の記述は誤りです。」、「２０３行目の記述は誤りです。」
、「２４１行目の記述は誤りです。」とあった場合、「行目の記述は誤りです。」が固定
文字列となり、「１２１」、「２０３」、「２４１」がパラメータ文字列となる。図１９
に、固定文字列格納領域３２に記憶されている情報の一例を示す。図中の「類義語番号列
」の項目は、類義語含有度の算出に使用するためのものである。
【００４４】
警告メッセージ類似度算出部１６の単語分解部１６ｂは、予め登録されている類義語を
示した単語帳データ記憶部２５に基づいて、仕分けすることによって得られた固定文字列
に使用されている単語を特定し（ステップＳ３４）、そして単語帳データ記憶部２５から
「類義語番号」を抽出する（ステップＳ３５）。図２０に、単語帳データ記憶部２５に記
憶されている情報の一例を示す。
【００４５】
次に、抽出した類義語番号（すなわち、使用されている単語の類義語番号）を固定文字
列格納領域３２（図１９）に追加登録する（ステップＳ３６）。例えば、ＩＤが「Ｗ１」
の固定文字列には、「ヘッダファイル」が使用されているので、類義語番号「０００４」
が追加登録され、ＩＤが「Ｗ２」の固定文字列には、「宣言」、「定義」が使用されてい
るので、類義語番号「０００１」が追加登録され、ＩＤが「ＷＲＮ００１」の固定文字列
には、「型指定」が使用されているので、類義語番号「０００３」が追加登録されている
。
【００４６】
その後、すべての警告メッセージに対して、ステップＳ３１〜Ｓ３６の処理を行ったか
否かを判断し（ステップＳ３７）、まだ残っているものがあると判断すれば、ステップＳ
３１へ戻り、次の警告メッセージを読み込む。例えば、ツール名が「解析君」の静的解析
ツールによるＩＤが「Ｗ１」の警告メッセージを読み込んだ後は、ツール名が「解析君」
の静的解析ツールによるＩＤが「Ｗ２」の警告メッセージを読み込む。
【００４７】
警告メッセージ類似度算出部１６の類義語含有度算出部１６ｃは、固定文字列格納領域
３２（図１９）に記憶されている固定文字列に使用されている単語を比較するために、２
種類のＩＤに対応付けて記憶されている類義語番号を読み込む（ステップＳ３８）。但し
、同一静的解析ツール間での比較は不要であるので、例えば、ＩＤ「Ｗ１」の類義語番号
とＩＤ「ＷＲＮ００１」の類義語番号とを読み込む。
【００４８】
次に、読み込んだ類義語番号に基づいて、固定文字列（すなわち、警告メッセージ）の
類似度を算出する（ステップＳ３９）。例えば、両者の固定文字列に同じ類義語が幾つ含
まれているかをカウントし、そのカウント結果（すなわち、類義語含有度）を類似度とす
る。
【００４９】
次に、算出した類似度をＩＤの組み合わせに対応付けて、警告メッセージ類似度マトリ
クス２６へ出力する（ステップＳ４０）。図２１に、警告メッセージ類似度マトリクス２
６に記憶されている情報の一例を示す。図２１からＩＤ「Ｗ１」とＩＤ「ＷＲＮ００１」
との類似度が「０」であることや、ＩＤ「Ｗ１」とＩＤ「ＷＲＮ００２」との類似度が「
６」であることが分かる。
【００５０】
その後、すべてのＩＤの組み合わせに対して、ステップＳ３８〜Ｓ４０の処理を行った
か否かを判断し（ステップＳ４１）、まだ残っている組み合わせがあると判断すれば、ス
テップＳ３８へ戻り、別の組み合わせの２種類のＩＤに対応付けて記憶されている類義語
を読み込む。
【００５１】
図２２は、学習・推論部１５を構成する警告箇所近似度算出部１７の説明に用いるため
のブロック図である。学習・推論部１５を構成する警告箇所近似度算出部１７は、警告箇
所データ抽出部１７ａ、ファイル属性情報抽出部１７ｂ、及び警告箇所間距離算出部１７
ｃとして機能し、学習・推論部１５からの指令を受けて起動するようになっている。
【００５２】
図２３は、警告箇所近似度算出部１７の行う処理動作を示したフローチャートである。
警告箇所近似度算出部１７の警告箇所データ抽出部１７ａは、警告情報格納領域３１（図
１６）に記憶されている、すべての警告通番について、警告情報（静的解析ツール名、Ｉ
Ｄ、ファイルパス、行番号、カラム番号）を読み込んで（ステップＳ５１）、警告通番に
対応付けて、読み込んだ警告情報を警告箇所データ格納領域３３に格納する（ステップＳ
５２）。図２４に、警告箇所データ格納領域３３に記憶されている情報の一例を示す。
【００５３】
警告箇所近似度算出部１７のファイル属性情報抽出部１７ｂは、警告箇所データ格納領
域３３（図２４）からファイルパスを読み込んで、オペレーティングシステムＯＳに問い
合わせをし、読み込んだファイルパスに該当するファイルの属性情報として、ファイル番
号（オペレーティングシステムＯＳがファイルを管理するために付している番号）、ファ
イルサイズ、ファイル更新時刻を取得し（ステップＳ５３）、これら情報を警告箇所デー
タ格納領域３３（図２４）に追加登録する（ステップＳ５４）。
【００５４】
警告箇所近似度算出部１７の警告箇所間距離算出部１７ｃは、警告箇所データ格納領域
３３（図２４）から、警告箇所データを２つずつ比較するために、ある２つの警告通番に
ついて、静的解析ツール名、ＩＤ、行番号、カラム番号、ファイル属性情報（ファイル番
号、ファイルサイズ、ファイル更新時刻）を読み込み（ステップＳ５５）、静的解析ツー
ル名から両者が同じ静的解析ツールによって警告されたものであるか否かを判断する（ス
テップＳ５６）。
【００５５】
両者が同じ静的解析ツールによって警告されたものでないと判断すれば、次にファイル
属性情報から両者が同じソースプログラムに対する警告であるか否かを判断する（ステッ
プＳ５７）。両者が同じソースプログラムに対する警告であると判断すれば、両者ＩＤ間
の類似度を警告メッセージ類似度マトリクス２６（図２１）から読み込み（ステップＳ５
８）、読み込んだ類似度が所定値（例えば、５）以上であるか否かを判断する（ステップ
Ｓ５９）。
【００５６】
読み込んだ類似度が前記所定値以上である（すなわち、両者の示す警告内容が同一の可
能性が高い）と判断すれば、両者それぞれの行番号及びカラム番号から警告箇所間距離を
算出し（ステップＳ６０）、両者の警告通番の組み合わせに対応付けて、算出した警告箇
所間距離を警告箇所近似度マトリクス２７に出力する（ステップＳ６１）。図２５に、警
告箇所近似度マトリクス２７に記憶されている情報の一例を示す。警告箇所間距離の求め
型としては、例えば、１行異なれば「＋１」し、１カラム異なれば「＋０．１」とすると
いった方法が挙げられる。
【００５７】
その後、すべての組み合わせに対して、ステップＳ５５〜Ｓ６１の処理を行ったか否か
を判断し（ステップＳ６２）、まだ残っている組み合わせがあると判断すれば、ステップ
Ｓ５５へ戻る。
また、ステップＳ５６において、同じ静的解析ツールによって警告されたものであると
判断した場合や、ステップＳ５７において、同じソースプログラムに対する警告でないと
判断した場合、ステップＳ５９において、両者の類似度は前記所定値以上でないと判断し
た場合には、そのままステップＳ６２へ進む。
【００５８】
図２６は、マージ処理実行部１８の説明に用いるためのブロック図であり、図２７は、
マージ処理実行部１８の行う処理動作を示したフローチャートである。マージ処理実行部
１８は、統括制御部１１からの指令で起動するようになっている。マージ処理実行部１８
は起動すると、まずカウントｋを１に設定し（ステップＳ７１）、警告情報格納領域３１
（図１６）から警告通番がカウントｋの警告情報を読み込む（ステップＳ７２）。
【００５９】
次に、警告箇所近似度マトリクス２７（図２５）から、前記警告情報と警告箇所間距離
が所定範囲内（例えば、５以内）の警告情報に付された警告通番をすべて抽出する（ステ
ップＳ７３）。すなわち、重複警告と認められるものをすべて抽出する。そして、抽出し
た警告通番に対応する、警告情報格納領域１３（図１６）の「抽出済みフラグ」を「ＯＮ
」に設定する（ステップＳ７４）。
【００６０】
次に、抽出の基準となった（すなわち、警告通番がカウンタｋの）警告情報からマージ
警告情報を作成し（ステップＳ７５）、作成したマージ警告情報を解析結果マージ記憶部
２８へ出力し（ステップＳ７６）、重複警告と認められる警告情報の警告通番を解析結果
マージ記憶部２８へ追加する（ステップＳ７７）。
【００６１】
図２８に、解析結果マージ記憶部２８に記憶されている情報の一例を示す。マージ警告
情報には「重複情報」の項目があり、重複警告が存在する場合には「有」項目が「１」と
され、「警告通番」（通番）項目に重複警告と認められる警告情報の警告通番が書き込ま
れることになる。
【００６２】
次に、カウントｋに１を加算し（ステップＳ７８）、警告通番がカウントｋの警告情報
が警告情報格納領域３１（図１６）に格納されているか否かを判断し（ステップＳ７９）
、当該警告情報が警告情報格納領域３１（図１６）に格納されていると判断すれば、当該
警告情報の「抽出済みフラグ」が「ＯＮ」であるか否かを判断する（ステップＳ８０）。
【００６３】
当該警告情報の「抽出済みフラグ」が「ＯＮ」であると判断すれば、ステップＳ７８へ
戻る。一方、当該警告情報の「抽出済みフラグ」が「ＯＮ」でないと判断すれば、重複警
告を検出するために、ステップＳ７２へ戻る。
また、ステップＳ７９において、当該警告情報が警告情報格納領域３１（図１６）に格
納されていない（すなわち、すべての警告情報についての検索が終了した）と判断すれば
、処理動作を終了する。
【００６４】
図２９は、マージ結果表示部１９の説明に用いるためのブロック図であり、図３０は、
マージ結果表示部１９の行う処理動作を示したフローチャートである。マージ結果表示部
１９は、統括制御部１１からの指令で起動するようになっている。マージ結果表示部１９
は起動すると、解析結果マージ記憶部２８（図２８）からマージ警告情報を読み込む（ス
テップＳ８１）。
【００６５】
次に、読み込んだ警告情報を記した「マージ警告表示画面」（図３１）を表示する（ス
テップＳ８２）。重複警告を有している警告情報には「！」を表示して重複警告が存在す
ることをユーザに知らせるようになっている。また、「マージ警告表示画面」（図３１）
上では、ユーザがマウスなどを使って特定の警告情報を選択することができるようになっ
ている。
【００６６】
次に「マージ警告表示画面」（図３１）上で、「重複警告参照」ボタンＢ６が選択され
たか否かを判断し（ステップＳ８３）、「重複警告参照」ボタンＢ６が選択されたと判断
すれば、解析結果マージ記憶部２８（図２８）に記憶されている「重複情報」に基づいて
、警告情報格納領域３１（図１６）から選択されている特定の警告情報と重複する警告と
認められる警告情報をすべて読み込み（ステップＳ８４）、読み込んだ警告情報を記した
「重複警告表示画面」（図３２）を表示する（ステップＳ８５）。「重複警告表示画面」
（図３２）上では、マージ処理実行部１８での処理で重複と判定されたものを、ユーザが
チェックを入れることによって重複警告から外すことができるようになっている。ここで
は、３行目の警告情報が重複警告から外されている。
【００６７】
次に「重複警告表示画面」（図３２）上で、「重複判定登録」ボタンＢ７が選択された
か否かを判断し（ステップＳ８６）、「重複判定登録」ボタンＢ７が選択されたと判断す
れば、ユーザから重複警告外しと指示されたＩＤの組み合わせを算出し（ステップＳ８７
）、算出したＩＤの組み合わせの減点値をユーザ判定減点値マトリクス２９から読み込む
（ステップＳ８８）。
【００６８】
図３３に、ユーザ判定減点値マトリクス２９に記憶されている情報の一例を示す。図３
３からＩＤ「Ｗ１」とＩＤ「ＷＲＮ００１」との類似度の減点値が「０」であることや、
ＩＤ「Ｗ１」とＩＤ「ＷＲＮ００２」との類似度の減点値が「−１」であることが分かる
。例えば、ユーザから重複警告外しと指示されたＩＤの組み合わせがＩＤ「Ｗ１」とＩＤ
「ＷＲＮ００２」であれば、減点値「−１」を読み込むことになる。
【００６９】
次に、読み込んだ減点値を１点減点し（ステップＳ８９）、減点したものを当該組み合
わせに対応付けてユーザ判定減点値マトリクス２９（図３３）へ出力する（ステップＳ９
０）。例えば、ＩＤ「Ｗ１」とＩＤ「ＷＲＮ００２」との類似度の減点値が「−２」とな
る。
【００７０】
これにより、例えば、警告箇所近似度算出部１７の処理動作（図２３のステップＳ５９
）で、ユーザ判定減点値マトリクス２９（図３３）の減点値を考慮に入れるようにすれば
、ＩＤ「Ｗ１」とＩＤ「ＷＲＮ００２」との類似度は「４」となり、所定値「５」未満と
なって類似範囲から外れることになる。
【００７１】
また、マージ警告情報については、ある警告通番の警告情報に基づいて作成するように
している（すなわち、メイン表示される警告情報にユーザの希望は反映されていない）が
、別の実施の形態では、例えば、「重複警告表示画面」（図３２）上で、メイン表示され
ることを希望する警告情報を選択できるようにし、その選択内容（ＩＤの組み合わせ、及
びメインとするＩＤ）を登録し、次回以降に反映させるようにしても良い。
【００７２】
例えば、ツール名「解析君」によるＩＤ「Ｗ１」の警告と、ツール名「スタティックア
ナライザ２」によるＩＤ「ＷＲＮ００２」の警告とが重複警告と判断され、ＩＤ「Ｗ１」
の警告情報に基づく内容がメイン表示されていたとしても、「重複警告表示画面」（図３
２）上で、ユーザがＩＤ「ＷＲＮ００２」の警告情報のメイン表示を希望することによっ
て、次回以降、この重複警告についてはＩＤ「ＷＲＮ００２」の警告情報に基づく内容を
メイン表示することができる。
【００７３】
上記実施の形態（１）に係る解析結果出力装置によれば、複数種の静的解析ツールＴ１
〜Ｔｎで解析されることによって得られる、ソースプログラムの記述誤りなどの問題点が
指摘された警告情報から、警告内容の各静的解析ツールＴ１〜Ｔｎ間における類似度情報
及び警告箇所情報に基づいて、同一指摘部分を整理して、重複する部分を省略して出力さ
れる。これにより、品質検証者の作業負担を軽減することができる。
【００７４】
また、上記実施の形態（１）に係る解析結果出力装置では、警告メッセージ類似度マト
リクス２６を作成することによって、警告内容（警告メッセージ）の類似度を判定するよ
うにしているが、別の実施の形態では、予めデフォルトとして用意された警告メッセージ
類似度マトリクスを用いて、警告内容の類似度を判定するようにしても良い。
【図面の簡単な説明】
【００７５】
【図１】静的解析ツールによる解析結果の一例を示した図である。
【図２】静的解析ツールによる解析結果の一例を示した図である。
【図３】本発明の実施の形態（１）に係る解析結果出力装置の要部を概略的に示したブロック図である。
【図４】フォーマット定義編集・登録部の説明に用いるためのブロック図である。
【図５】ファーマット定義編集・登録部の行う処理動作を示したフローチャートである。
【図６】表示装置に表示される表示画面の一例を示した図である。
【図７】表示装置に表示される表示画面の一例を示した図である。
【図８】起動引数フォーマット定義記憶部に記憶されている情報の一例を示した図である。
【図９】表示装置に表示される表示画面の一例を示した図である。
【図１０】解析結果のフォーマットを各静的解析ツール間で揃えた状態を示した図である。
【図１１】解析結果フォーマット定義記憶部に記憶されている情報の一例を示した図である。
【図１２】静的解析ツール実行部の説明に用いるためのブロック図である。
【図１３】表示装置に表示される表示画面の一例を示した図である。
【図１４】警告情報抽出部の説明に用いるためのブロック図である。
【図１５】警告情報抽出部の行う処理動作を示したフローチャートである。
【図１６】警告情報格納領域に記憶されている情報の一例を示した図である。
【図１７】学習・推論部を構成する警告メッセージ類似度算出部の説明に用いるためのブロック図である。
【図１８】警告メッセージ類似度算出部の行う処理動作を示したフローチャートである。
【図１９】固定文字列格納領域に記憶されている情報の一例を示した図である。
【図２０】単語帳データ記憶部に記憶されている情報の一例を示した図である。
【図２１】警告メッセージ類似度マトリクスに記憶されている情報の一例を示した図である。
【図２２】学習・推論部を構成する警告箇所近似度算出部の説明に用いるためのブロック図である。
【図２３】警告箇所近似度算出部の行う処理動作を示したフローチャートである。
【図２４】警告箇所データ格納領域に記憶されている情報の一例を示した図である。
【図２５】警告箇所近似度マトリクスに記憶されている情報の一例を示した図である。
【図２６】マージ処理実行部の説明に用いるためのブロック図である。
【図２７】マージ処理実行部の行う処理動作を示したフローチャートである。
【図２８】解析結果マージ記憶部に記憶されている情報の一例を示した図である。
【図２９】マージ結果表示部の説明に用いるためのブロック図である。
【図３０】マージ結果表示部の行う処理動作を示したフローチャートである。
【図３１】表示装置に表示される表示画面の一例を示した図である。
【図３２】表示装置に表示される表示画面の一例を示した図である。
【図３３】ユーザ判定減点値マトリクスに記憶されている情報の一例を示した図である。
【符号の説明】
【００７６】
１  解析結果出力装置
２  マイコン
１１  統括制御部
１２  フォーマット定義編集・登録部
１３  静的解析ツール実行部
１４  警告情報抽出部
１５  学習・推論部
１６  警告メッセージ類似度算出部
１７  警告箇所近似度算出部
１８  マージ処理実行部
１９  マージ結果表示部
２０  入力・表示制御部
２１  起動引数フォーマット定義記憶部
２２  解析結果フォーマット定義記憶部
２３  実行可能ロジック記憶部
２４  解析対象ソースプログラム群記憶部
２５  単語帳データ記憶部
２６  警告メッセージ類似度マトリクス
２７  警告箇所近似度マトリクス
２８  解析結果マージ記憶部
２９  ユーザ判定減点値マトリクス
３１  警告情報格納領域
３２  固定文字列格納領域
３３  警告箇所データ格納領域
【図１】
2009169573.tif 000003
【図２】
2009169573.tif 000004
【図３】
2009169573.tif 000005
【図４】
2009169573.tif 000006
【図５】
2009169573.tif 000007
【図６】
2009169573.tif 000008
【図７】
2009169573.tif 000009
【図８】
2009169573.tif 000010
【図９】
2009169573.tif 000011
【図１０】
2009169573.tif 000012
【図１１】
2009169573.tif 000013
【図１２】
2009169573.tif 000014
【図１３】
2009169573.tif 000015
【図１４】
2009169573.tif 000016
【図１５】
2009169573.tif 000017
【図１６】
2009169573.tif 000018
【図１７】
2009169573.tif 000019
【図１８】
2009169573.tif 000020
【図１９】
2009169573.tif 000021
【図２０】
2009169573.tif 000022
【図２１】
2009169573.tif 000023
【図２２】
2009169573.tif 000024
【図２３】
2009169573.tif 000025
【図２４】
2009169573.tif 000026
【図２５】
2009169573.tif 000027
【図２６】
2009169573.tif 000028
【図２７】
2009169573.tif 000029
【図２８】
2009169573.tif 000030
【図２９】
2009169573.tif 000031
【図３０】
2009169573.tif 000032
【図３１】
2009169573.tif 000033
【図３２】
2009169573.tif 000034
【図３３】
2009169573.tif 000035