JP2009169573A - 解析結果出力装置、及び解析結果出力方法 - Google Patents

解析結果出力装置、及び解析結果出力方法 Download PDF

Info

Publication number
JP2009169573A
JP2009169573A JP2008005380A JP2008005380A JP2009169573A JP 2009169573 A JP2009169573 A JP 2009169573A JP 2008005380 A JP2008005380 A JP 2008005380A JP 2008005380 A JP2008005380 A JP 2008005380A JP 2009169573 A JP2009169573 A JP 2009169573A
Authority
JP
Japan
Prior art keywords
analysis result
analysis
warning
information
static analysis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2008005380A
Other languages
English (en)
Inventor
Takero Sawada
武朗 澤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Ten Ltd
Original Assignee
Denso Ten Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Ten Ltd filed Critical Denso Ten Ltd
Priority to JP2008005380A priority Critical patent/JP2009169573A/ja
Publication of JP2009169573A publication Critical patent/JP2009169573A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】複数種の静的解析ツールを使用した場合における、品質検証者の作業負担を軽減する。
【解決手段】複数種の静的解析ツールT1〜Tnで解析されることによって得られる、ソースプログラムの問題点が指摘された解析結果から、指摘問題内容の各静的解析ツールT1〜Tn間における類似度情報、及び指摘箇所情報に基づいて、同一指摘部分を検出するマージ処理実行部18と、その検出結果に基づいて、同一指摘部分を整理して解析結果を表示するマージ結果表示部19とを装備する。
【選択図】図3

Description

本発明は解析結果出力装置、及び解析結果出力方法に関し、より詳細には、静的解析ツ
ールで解析されることによって得られる、ソースプログラムの問題点を指摘した解析結果
を出力する解析結果出力装置、及び解析結果出力方法に関する。
品質の高いソフトウェアの開発を支援するものとして、例えば、ソースプログラムを静
的解析し、単純なコーディングミスや論理的な誤り、性能を劣化させるような記述などを
指摘する静的解析ツールがある。
静的解析ツールには有償、無償、そして内製のものなど色々とある。また、静的解析ツ
ールは各々独自の特徴を持っており、それぞれ得意とする検査項目が異なる。例えば、静
的解析ツールAで指摘される問題点が、それとは異なる静的解析ツールBでは指摘されな
かったり、その逆に、静的解析ツールAでは指摘されない問題点が、静的解析ツールBで
は指摘されるといったことがある。そのため、ソースプログラムの品質検証には、静的解
析ツールを複数種使用し、指摘漏れの無いようにするのが望ましい。
ところで、静的解析ツールが各々独自の特徴を持っていて、ある静的解析ツールでは指
摘されない問題点が別の静的解析ツールでは指摘されるということがあっても、問題点の
多くはどの静的解析ツールでも指摘される。つまり、指摘解析ツールを複数種使用した場
合、同じ問題点に対して指摘が重複することになる。
図1は静的解析ツールAによる解析結果を示した一例であり、図2は静的解析ツールB
による解析結果を示した一例である。図中a1、a2、b1、b2は指摘メッセージ等を
示している。静的解析ツールAによる解析結果(図1)と静的解析ツールBによる解析結
果(図2)とではその表示フォーマットは異なっているが、表示a1、b1は同一問題点
を表している。
そのため、ソースプログラムの品質を検証する者は、どの指摘問題点が重複しているの
かを比較検討しなければならない。つまり、解析結果をまとめるマージ作業が必要となる

しかしながら、マージ作業は簡単ではない。よって、品質検証者の作業負担が大きくな
る。
下記の特許文献1、2には、バージョン更新されたソースプログラムの静的解析による
解析結果を出力する場合に、バージョン更新前(すなわち、旧バージョン)のソースプロ
グラムの解析結果やその解析結果への対応結果を考慮に入れて、出力する解析結果を少な
くし、品質検証の作業効率を向上させることについて記載されています。
しかしながら、これら特許文献1、2には、静的解析ツールを複数種使用した場合への
対応策については記載されていません。
また、複数種の静的解析ツールで解析されることによって得られる解析結果をマージす
るマージシステムを作成しようとすれば、どのような問題点が重複して指摘されるのかを
検討し、その検討結果を踏まえて、マージシステムの仕様書、設計書、そして検査書を作
成する必要があり、作成は簡単ではない。
また、このようなマージシステムに、新たな指摘解析ツールを追加実装する場合には、
また新たにどのような問題点が重複して指摘されるのかを検討しなければならない。つま
り、仕様書、設計書、検査書を新たに作成しなければならない。これでは、著しく効率を
低下させることになる。
特開2004−126866号公報 特開2006−344145号公報
課題を解決するための手段及びその効果
本発明は上記課題に鑑みなされたものであって、複数種の静的解析ツールを使用した場
合における、品質検証者の作業負担を軽減することのできる解析結果出力装置、及び解析
結果出力方法を提供することを目的としている。
上記目的を達成するために本発明に係る解析結果出力装置(1)は、複数種の静的解析
ツールで解析されることによって得られる、ソースプログラムの問題点が指摘された解析
結果から、指摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に
基づいて、同一指摘部分を検出する検出手段と、該検出手段による検出結果に基づいて、
同一指摘部分を整理して前記解析結果を出力する出力手段とを備えていることを特徴とし
ている。
例えば、静的解析ツールAで指摘された問題内容と、静的解析ツールBで指摘された問
題内容とが同一又は非常に似ており、なおかつ問題箇所が同一又は非常に近い場合、静的
解析ツールA、Bで指摘されたこれら問題は同一部分について指摘されたものと認められ
る。
問題箇所についてはプログラムの行、及びカラム(列)で表示することができる。問題
箇所の表現方法については静的解析ツールによって若干の違いが生じることがある。例え
ば、ある問題箇所に対し、静的解析ツールAでは143行、12カラムと表現され、静的
解析ツールBでは145行、11カラムと表現されることがある。
上記解析結果出力装置(1)によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果から、指
摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同
一指摘部分が検出される。従って、同一指摘部分を精度良く検出することができる。
さらに、上記解析結果出力装置(1)によれば、前記検出手段による検出結果に基づい
て、同一指摘部分を整理して前記解析結果が出力される。例えば、重複する部分を省略し
て出力する。これにより、品質検証者の作業負担を軽減することができる。
また、本発明に係る解析結果出力方法(1)は、複数種の静的解析ツールで解析される
ことによって得られる、ソースプログラムの問題点が指摘された解析結果から、指摘問題
内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同一指摘
部分を検出するステップと、検出結果に基づいて、同一指摘部分を整理して前記解析結果
を出力するステップとを有していることを特徴としている。
上記解析結果出力方法(1)によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果から、指
摘問題内容の各静的解析ツール間における類似度情報、及び指摘箇所情報に基づいて、同
一指摘部分を検出する。従って、同一指摘部分を精度良く検出することができる。
さらに、上記解析結果出力方法(1)によれば、検出結果に基づいて、同一指摘部分を
整理して前記解析結果を出力する。例えば、重複する部分を省略して出力する。これによ
り、品質検証者の作業負担を軽減することができる。
また、本発明に係る解析結果出力方法(2)は、複数種の静的解析ツールで解析される
ことによって得られる、ソースプログラムの問題点が指摘された解析結果を、同一指摘部
分について整理して出力するステップを有していることを特徴としている。
上記解析結果出力方法(2)によれば、複数種の静的解析ツールで解析されることによ
って得られる、ソースプログラムの記述誤りなどの問題点が指摘された解析結果を、同一
指摘部分を整理して前記解析結果を出力する。例えば、重複する部分を省略して出力する
。これにより、品質検証者の作業負担を軽減することができる。
以下、本発明に係る解析結果出力装置、及び解析結果出力方法の実施の形態を図面に基
づいて説明する。図3は実施の形態(1)に係る解析結果出力装置の要部を概略的に示し
たブロック図である。図中1は解析結果出力装置を示しており、解析結果出力装置1は図
示しないCPU、ROM、及びRAMを備えたマイコン2と、I/F(入出力インターフ
ェース)3と、キーボードやマウスなどを含む入力装置4と、表示装置5とを含んで構成
されている。
マイコン2はROMに格納されたプログラムを実行することによって、解析結果出力装
置1全体を統括する統括制御部11、フォーマット定義編集・登録部12、静的解析ツー
ルTi(i=1〜n)を実行する静的解析ツール実行部13、警告情報抽出部14、警告
メッセージ類似度算出部16と警告箇所近似度算出部17とを含む学習・推論部15、マ
ージ処理実行部18、マージ結果表示部19、及び入力・表示制御部20として機能する
ことができるようになっている。
また、マイコン2には起動引数フォーマット定義記憶部21、解析結果フォーマット定
義記憶部22、実行可能ロジック記憶部23、解析対象ソースプログラム群記憶部24、
単語帳データ記憶部25、警告メッセージ類似度マトリクス26、警告箇所近似度マトリ
クス27、解析結果マージ記憶部28、ユーザ判定減点値マトリクス29、及び静的解析
ツールTiで解析することによって得られる解析結果を記憶する解析結果記憶部Miが形
成されている。
図4は、フォーマット定義編集・登録部12の説明に用いるためのブロック図であり、
図5は、ファーマット定義編集・登録部12の行う処理動作を示したフローチャートであ
る。フォーマット定義編集・登録部12は、ユーザからの操作を受けた統括制御部11か
らの指令で起動するようになっている。
フォーマット定義編集・登録部12は起動すると、まず「フォーマット登録メイン画面
」(図6)を表示し(ステップS1)、次に「ツール起動引数フォーマット」ボタンB1
が選択されたか否かを判断し(ステップS2)、「ツール起動引数フォーマット」ボタン
B1が選択されたと判断すると、「ツール起動引数フォーマット登録画面」(図7)を表
示する(ステップS3)。
「ツール起動引数フォーマット登録画面」(図7)上では、静的解析ツール起動引数の
フォーマットとして、静的解析ツール名、コマンド・パス、解析対象ファイル指定引数、
解析対象ファルダ指定引数、コンパイル・スイッチ指定引数、インクルードファイル検索
指定引数、及び解析結果ファイル指定引数の情報を入力することができるようになってい
る。
次に「ツール起動引数フォーマット登録画面」(図7)上で「登録」ボタンB3が選択
されたか否かを判断し(ステップS4)、「登録」ボタンB3が選択されたと判断すれば
、これら入力された情報を起動引数フォーマット定義記憶部21へ登録する(ステップS
5)。これにより、静的解析ツールの自動実行が可能となる。図8に、起動引数フォーマ
ット定義記憶部21に登録されている情報の一例を示す。
一方、ステップS2において、「フォーマット登録メイン画面」(図6)上で「ツール
起動引数フォーマット」ボタンB1は選択されていないと判断すれば、次に「解析結果フ
ォーマット登録」ボタンB2が選択されたか否かを判断し(ステップS6)、「解析結果
フォーマット登録」ボタンB2が選択されたと判断すると、「解析結果フォーマット登録
画面」(図9)を表示する(ステップS7)。
「解析結果フォーマット登録画面」(図9)上では、静的解析ツールの解析フォーマッ
トとして、正規表現指定、情報抽出ロジック指定を入力することができるようになってい
る。図1、図2に示したように、静的解析ツールが異なると、解析結果のフォーマットが
異なる。例えば、図1では「WARNING013」でID(解析結果を識別する符号)
が表示され、ファイル名の後に続く「%」で挟まれた数字「143」で警告箇所(問題の
発生している箇所)の行番号が表示されているのに対し、図2では「《W27》」でID
が表示され、ファイル名の後に続く「:」で挟まれた数字「143」で警告箇所の行番号
が表示されている。
このように、静的解析ツールが異なると、解析結果のフォーマットも異なる。フォーマ
ットが異なっていると、どの指摘が重複しているのかの比較処理を効率良く行うことがで
きない。そのため、解析結果のフォーマットを揃えるのが良い。図10は、解析結果のフ
ォーマットを各静的解析ツール間で揃えた状態を示したものである。
解析結果のフォーマットを揃えるには、それぞれの解析結果から情報を抽出して、例え
ば、図10に示したようなフォーマットに埋め込んでいく必要がある。例えば、WARN
ING[0−999]がIDを表していることや、IDの後に続く文字列が警告メッセー
ジを表していることを指定する必要がある。
「解析結果フォーマット登録画面」(図9)は、これら指摘に用いるものである。また
WARNING[0−999]といった表現は正規表現であるので、上段の「正規表現指
定」で指定することができる。IDの後に続く文字列が警告メッセージを表しているとい
った、正規表現で表せないものについては、下段の「情報抽出ロジック指定」で指定する
ことになる。
次に「解析結果フォーマット登録画面」(図9)上で「登録」ボタンB4が選択された
か否かを判断し(ステップS8)、「登録」ボタンB4が選択されたと判断すれば、入力
された情報(正規表現、情報抽出ロジック)を解析結果フォーマット定義記憶部22へ登
録する(ステップS9)。図11に、解析結果フォーマット定義記憶部22に登録されて
いる情報の一例を示す。
次に「解析結果フォーマット登録画面」(図9)上で「コンパイル」ボタンB5が選択
されたか否かを判断し(ステップS10)、「コンパイル」ボタンB5が選択されたと判
断すると、フォーマット定義編集・登録部12に内蔵されたロジック・コンパイラ12a
を起動して、入力された情報抽出ロジックを所定のプログラム言語でコンパイルする(ス
テップS11)。
次にコンパイルが成功したか否かを判断し(ステップS12)、コンパイルが成功した
と判断すると、コンパイル結果である実行可能ロジックを実行可能ロジック記憶部23へ
登録する(ステップS13)。一方、コンパイルが失敗したと判断すると、エラー表示を
行って、ユーザに情報抽出ロジックの修正を促し(ステップS14)、その後、ステップ
S8へ戻る。
図12は、静的解析ツール実行部13の説明に用いるためのブロック図である。静的解
析ツール部13は、ユーザからの操作を受けた統括制御部11からの指令で起動するよう
になっている。静的解析ツール部13は起動すると、まず「静的解析ツール起動画面」(
図13)を表示するようになっている。
「静的解析ツール起動画面」(図13)上では、静的解析ツールの実行に必要な情報と
して、解析対象ファイル指定、解析対象ファルダ指定、コンパイル・スイッチ指定、及び
インクルードファイル検索パス指定の情報を入力することができるようになっており、「
実行」ボタンB6が選択されると、静的解析ツール実行部13が入力された情報、及び起
動引数フォーマット定義記憶部21(図8)に登録されている情報を元に、静的解析ツー
ルTi(i=1〜n)を静的解析ツールT1から順に静的解析ツールTnまで起動するよ
うになっている。
静的解析ツールTiは、入力された情報に基づいて、解析対象ソースプログラム群記憶
部24に登録されているソースプログラムを解析し、解析した結果を解析結果記憶部Mi
へ出力するようになっている。例えば、静的解析ツールT1で解析された結果は、解析結
果記憶部M1へ出力されて登録されることになる。
図14は、警告情報抽出部14の説明に用いるためのブロック図であり、図15は、警
告情報抽出部14の行う処理動作を示したフローチャートである。警告情報抽出部14は
、静的解析ツール実行部13による実行が終了すると、統括制御部11からの指令で起動
するようになっている。
警告情報抽出部14は起動すると、まず解析結果フォーマット定義記憶部22(図11
)及び実行可能ロジック記憶部23から情報を読み込み(ステップS21)、その後、静
的解析ツールT1〜Tnで解析された結果を、解析結果記憶部M1から順に読み込む(ス
テップS22)。
次に解析結果フォーマット定義記憶部22(図11)から読み込んだ正規表現、及び実
行可能ロジック記憶部23から読み込んだ実行可能ロジックを起動し(ステップS23)
、解析結果記憶部M1〜Mnから読み込んだ解析結果から警告情報(静的解析ツール名、
ID、ファイルパス、行番号、カラム番号、警告メッセージ、行内容)を抽出し(ステッ
プS24)、抽出した警告情報を警告情報格納領域31へ出力する(ステップS25)。
なおこのとき、警告情報毎に警告通番(通し番号)を付して、警告情報を登録するよう
になっている。図16に、警告情報格納領域31に記憶されている情報の一例を示す。図
中の「抽出済フラグ」の項目は、後述するマージ処理時に使用するものであり、初期設定
時には「OFF」となっている。
図17は、学習・推論部15を構成する警告メッセージ類似度算出部16の説明に用い
るためのブロック図である。学習・推論部15は、統括制御部11からの指令を受けて起
動するようになっている。また、学習・推論部15を構成する警告メッセージ類似度算出
部16は、固定メッセージ抽出部16a、単語分解部16b、及び類義語含有度算出部1
6cとして機能し、学習・推論部15からの指令を受けて起動するようになっている。
図18は、警告メッセージ類似度算出部16の行う処理動作を示したフローチャートで
ある。警告メッセージ類似度算出部16の固定メッセージ抽出部16aは、警告情報格納
領域31(図16)に記憶されている、同一静的解析ツールによる警告情報に含まれる警
告メッセージのうち、同一IDのものをすべて読み込む(ステップS31)。例えば、ツ
ール名が「解析君」の静的解析ツールによるIDが「W1」の警告メッセージをすべて読
み込む。
次に、読み込んだ警告メッセージを相互に比較し、警告メッセージを固定文字列とパラ
メータ文字列とに仕分けし(ステップS32)、IDに対応付けて、固定文字列を固定文
字列格納領域32へ格納する(ステップS33)。例えば、IDが「W15」に対する警
告メッセージに「121行目の記述は誤りです。」、「203行目の記述は誤りです。」
、「241行目の記述は誤りです。」とあった場合、「行目の記述は誤りです。」が固定
文字列となり、「121」、「203」、「241」がパラメータ文字列となる。図19
に、固定文字列格納領域32に記憶されている情報の一例を示す。図中の「類義語番号列
」の項目は、類義語含有度の算出に使用するためのものである。
警告メッセージ類似度算出部16の単語分解部16bは、予め登録されている類義語を
示した単語帳データ記憶部25に基づいて、仕分けすることによって得られた固定文字列
に使用されている単語を特定し(ステップS34)、そして単語帳データ記憶部25から
「類義語番号」を抽出する(ステップS35)。図20に、単語帳データ記憶部25に記
憶されている情報の一例を示す。
次に、抽出した類義語番号(すなわち、使用されている単語の類義語番号)を固定文字
列格納領域32(図19)に追加登録する(ステップS36)。例えば、IDが「W1」
の固定文字列には、「ヘッダファイル」が使用されているので、類義語番号「0004」
が追加登録され、IDが「W2」の固定文字列には、「宣言」、「定義」が使用されてい
るので、類義語番号「0001」が追加登録され、IDが「WRN001」の固定文字列
には、「型指定」が使用されているので、類義語番号「0003」が追加登録されている
その後、すべての警告メッセージに対して、ステップS31〜S36の処理を行ったか
否かを判断し(ステップS37)、まだ残っているものがあると判断すれば、ステップS
31へ戻り、次の警告メッセージを読み込む。例えば、ツール名が「解析君」の静的解析
ツールによるIDが「W1」の警告メッセージを読み込んだ後は、ツール名が「解析君」
の静的解析ツールによるIDが「W2」の警告メッセージを読み込む。
警告メッセージ類似度算出部16の類義語含有度算出部16cは、固定文字列格納領域
32(図19)に記憶されている固定文字列に使用されている単語を比較するために、2
種類のIDに対応付けて記憶されている類義語番号を読み込む(ステップS38)。但し
、同一静的解析ツール間での比較は不要であるので、例えば、ID「W1」の類義語番号
とID「WRN001」の類義語番号とを読み込む。
次に、読み込んだ類義語番号に基づいて、固定文字列(すなわち、警告メッセージ)の
類似度を算出する(ステップS39)。例えば、両者の固定文字列に同じ類義語が幾つ含
まれているかをカウントし、そのカウント結果(すなわち、類義語含有度)を類似度とす
る。
次に、算出した類似度をIDの組み合わせに対応付けて、警告メッセージ類似度マトリ
クス26へ出力する(ステップS40)。図21に、警告メッセージ類似度マトリクス2
6に記憶されている情報の一例を示す。図21からID「W1」とID「WRN001」
との類似度が「0」であることや、ID「W1」とID「WRN002」との類似度が「
6」であることが分かる。
その後、すべてのIDの組み合わせに対して、ステップS38〜S40の処理を行った
か否かを判断し(ステップS41)、まだ残っている組み合わせがあると判断すれば、ス
テップS38へ戻り、別の組み合わせの2種類のIDに対応付けて記憶されている類義語
を読み込む。
図22は、学習・推論部15を構成する警告箇所近似度算出部17の説明に用いるため
のブロック図である。学習・推論部15を構成する警告箇所近似度算出部17は、警告箇
所データ抽出部17a、ファイル属性情報抽出部17b、及び警告箇所間距離算出部17
cとして機能し、学習・推論部15からの指令を受けて起動するようになっている。
図23は、警告箇所近似度算出部17の行う処理動作を示したフローチャートである。
警告箇所近似度算出部17の警告箇所データ抽出部17aは、警告情報格納領域31(図
16)に記憶されている、すべての警告通番について、警告情報(静的解析ツール名、I
D、ファイルパス、行番号、カラム番号)を読み込んで(ステップS51)、警告通番に
対応付けて、読み込んだ警告情報を警告箇所データ格納領域33に格納する(ステップS
52)。図24に、警告箇所データ格納領域33に記憶されている情報の一例を示す。
警告箇所近似度算出部17のファイル属性情報抽出部17bは、警告箇所データ格納領
域33(図24)からファイルパスを読み込んで、オペレーティングシステムOSに問い
合わせをし、読み込んだファイルパスに該当するファイルの属性情報として、ファイル番
号(オペレーティングシステムOSがファイルを管理するために付している番号)、ファ
イルサイズ、ファイル更新時刻を取得し(ステップS53)、これら情報を警告箇所デー
タ格納領域33(図24)に追加登録する(ステップS54)。
警告箇所近似度算出部17の警告箇所間距離算出部17cは、警告箇所データ格納領域
33(図24)から、警告箇所データを2つずつ比較するために、ある2つの警告通番に
ついて、静的解析ツール名、ID、行番号、カラム番号、ファイル属性情報(ファイル番
号、ファイルサイズ、ファイル更新時刻)を読み込み(ステップS55)、静的解析ツー
ル名から両者が同じ静的解析ツールによって警告されたものであるか否かを判断する(ス
テップS56)。
両者が同じ静的解析ツールによって警告されたものでないと判断すれば、次にファイル
属性情報から両者が同じソースプログラムに対する警告であるか否かを判断する(ステッ
プS57)。両者が同じソースプログラムに対する警告であると判断すれば、両者ID間
の類似度を警告メッセージ類似度マトリクス26(図21)から読み込み(ステップS5
8)、読み込んだ類似度が所定値(例えば、5)以上であるか否かを判断する(ステップ
S59)。
読み込んだ類似度が前記所定値以上である(すなわち、両者の示す警告内容が同一の可
能性が高い)と判断すれば、両者それぞれの行番号及びカラム番号から警告箇所間距離を
算出し(ステップS60)、両者の警告通番の組み合わせに対応付けて、算出した警告箇
所間距離を警告箇所近似度マトリクス27に出力する(ステップS61)。図25に、警
告箇所近似度マトリクス27に記憶されている情報の一例を示す。警告箇所間距離の求め
型としては、例えば、1行異なれば「+1」し、1カラム異なれば「+0.1」とすると
いった方法が挙げられる。
その後、すべての組み合わせに対して、ステップS55〜S61の処理を行ったか否か
を判断し(ステップS62)、まだ残っている組み合わせがあると判断すれば、ステップ
S55へ戻る。
また、ステップS56において、同じ静的解析ツールによって警告されたものであると
判断した場合や、ステップS57において、同じソースプログラムに対する警告でないと
判断した場合、ステップS59において、両者の類似度は前記所定値以上でないと判断し
た場合には、そのままステップS62へ進む。
図26は、マージ処理実行部18の説明に用いるためのブロック図であり、図27は、
マージ処理実行部18の行う処理動作を示したフローチャートである。マージ処理実行部
18は、統括制御部11からの指令で起動するようになっている。マージ処理実行部18
は起動すると、まずカウントkを1に設定し(ステップS71)、警告情報格納領域31
(図16)から警告通番がカウントkの警告情報を読み込む(ステップS72)。
次に、警告箇所近似度マトリクス27(図25)から、前記警告情報と警告箇所間距離
が所定範囲内(例えば、5以内)の警告情報に付された警告通番をすべて抽出する(ステ
ップS73)。すなわち、重複警告と認められるものをすべて抽出する。そして、抽出し
た警告通番に対応する、警告情報格納領域13(図16)の「抽出済みフラグ」を「ON
」に設定する(ステップS74)。
次に、抽出の基準となった(すなわち、警告通番がカウンタkの)警告情報からマージ
警告情報を作成し(ステップS75)、作成したマージ警告情報を解析結果マージ記憶部
28へ出力し(ステップS76)、重複警告と認められる警告情報の警告通番を解析結果
マージ記憶部28へ追加する(ステップS77)。
図28に、解析結果マージ記憶部28に記憶されている情報の一例を示す。マージ警告
情報には「重複情報」の項目があり、重複警告が存在する場合には「有」項目が「1」と
され、「警告通番」(通番)項目に重複警告と認められる警告情報の警告通番が書き込ま
れることになる。
次に、カウントkに1を加算し(ステップS78)、警告通番がカウントkの警告情報
が警告情報格納領域31(図16)に格納されているか否かを判断し(ステップS79)
、当該警告情報が警告情報格納領域31(図16)に格納されていると判断すれば、当該
警告情報の「抽出済みフラグ」が「ON」であるか否かを判断する(ステップS80)。
当該警告情報の「抽出済みフラグ」が「ON」であると判断すれば、ステップS78へ
戻る。一方、当該警告情報の「抽出済みフラグ」が「ON」でないと判断すれば、重複警
告を検出するために、ステップS72へ戻る。
また、ステップS79において、当該警告情報が警告情報格納領域31(図16)に格
納されていない(すなわち、すべての警告情報についての検索が終了した)と判断すれば
、処理動作を終了する。
図29は、マージ結果表示部19の説明に用いるためのブロック図であり、図30は、
マージ結果表示部19の行う処理動作を示したフローチャートである。マージ結果表示部
19は、統括制御部11からの指令で起動するようになっている。マージ結果表示部19
は起動すると、解析結果マージ記憶部28(図28)からマージ警告情報を読み込む(ス
テップS81)。
次に、読み込んだ警告情報を記した「マージ警告表示画面」(図31)を表示する(ス
テップS82)。重複警告を有している警告情報には「!」を表示して重複警告が存在す
ることをユーザに知らせるようになっている。また、「マージ警告表示画面」(図31)
上では、ユーザがマウスなどを使って特定の警告情報を選択することができるようになっ
ている。
次に「マージ警告表示画面」(図31)上で、「重複警告参照」ボタンB6が選択され
たか否かを判断し(ステップS83)、「重複警告参照」ボタンB6が選択されたと判断
すれば、解析結果マージ記憶部28(図28)に記憶されている「重複情報」に基づいて
、警告情報格納領域31(図16)から選択されている特定の警告情報と重複する警告と
認められる警告情報をすべて読み込み(ステップS84)、読み込んだ警告情報を記した
「重複警告表示画面」(図32)を表示する(ステップS85)。「重複警告表示画面」
(図32)上では、マージ処理実行部18での処理で重複と判定されたものを、ユーザが
チェックを入れることによって重複警告から外すことができるようになっている。ここで
は、3行目の警告情報が重複警告から外されている。
次に「重複警告表示画面」(図32)上で、「重複判定登録」ボタンB7が選択された
か否かを判断し(ステップS86)、「重複判定登録」ボタンB7が選択されたと判断す
れば、ユーザから重複警告外しと指示されたIDの組み合わせを算出し(ステップS87
)、算出したIDの組み合わせの減点値をユーザ判定減点値マトリクス29から読み込む
(ステップS88)。
図33に、ユーザ判定減点値マトリクス29に記憶されている情報の一例を示す。図3
3からID「W1」とID「WRN001」との類似度の減点値が「0」であることや、
ID「W1」とID「WRN002」との類似度の減点値が「−1」であることが分かる
。例えば、ユーザから重複警告外しと指示されたIDの組み合わせがID「W1」とID
「WRN002」であれば、減点値「−1」を読み込むことになる。
次に、読み込んだ減点値を1点減点し(ステップS89)、減点したものを当該組み合
わせに対応付けてユーザ判定減点値マトリクス29(図33)へ出力する(ステップS9
0)。例えば、ID「W1」とID「WRN002」との類似度の減点値が「−2」とな
る。
これにより、例えば、警告箇所近似度算出部17の処理動作(図23のステップS59
)で、ユーザ判定減点値マトリクス29(図33)の減点値を考慮に入れるようにすれば
、ID「W1」とID「WRN002」との類似度は「4」となり、所定値「5」未満と
なって類似範囲から外れることになる。
また、マージ警告情報については、ある警告通番の警告情報に基づいて作成するように
している(すなわち、メイン表示される警告情報にユーザの希望は反映されていない)が
、別の実施の形態では、例えば、「重複警告表示画面」(図32)上で、メイン表示され
ることを希望する警告情報を選択できるようにし、その選択内容(IDの組み合わせ、及
びメインとするID)を登録し、次回以降に反映させるようにしても良い。
例えば、ツール名「解析君」によるID「W1」の警告と、ツール名「スタティックア
ナライザ2」によるID「WRN002」の警告とが重複警告と判断され、ID「W1」
の警告情報に基づく内容がメイン表示されていたとしても、「重複警告表示画面」(図3
2)上で、ユーザがID「WRN002」の警告情報のメイン表示を希望することによっ
て、次回以降、この重複警告についてはID「WRN002」の警告情報に基づく内容を
メイン表示することができる。
上記実施の形態(1)に係る解析結果出力装置によれば、複数種の静的解析ツールT1
〜Tnで解析されることによって得られる、ソースプログラムの記述誤りなどの問題点が
指摘された警告情報から、警告内容の各静的解析ツールT1〜Tn間における類似度情報
及び警告箇所情報に基づいて、同一指摘部分を整理して、重複する部分を省略して出力さ
れる。これにより、品質検証者の作業負担を軽減することができる。
また、上記実施の形態(1)に係る解析結果出力装置では、警告メッセージ類似度マト
リクス26を作成することによって、警告内容(警告メッセージ)の類似度を判定するよ
うにしているが、別の実施の形態では、予めデフォルトとして用意された警告メッセージ
類似度マトリクスを用いて、警告内容の類似度を判定するようにしても良い。
静的解析ツールによる解析結果の一例を示した図である。 静的解析ツールによる解析結果の一例を示した図である。 本発明の実施の形態(1)に係る解析結果出力装置の要部を概略的に示したブロック図である。 フォーマット定義編集・登録部の説明に用いるためのブロック図である。 ファーマット定義編集・登録部の行う処理動作を示したフローチャートである。 表示装置に表示される表示画面の一例を示した図である。 表示装置に表示される表示画面の一例を示した図である。 起動引数フォーマット定義記憶部に記憶されている情報の一例を示した図である。 表示装置に表示される表示画面の一例を示した図である。 解析結果のフォーマットを各静的解析ツール間で揃えた状態を示した図である。 解析結果フォーマット定義記憶部に記憶されている情報の一例を示した図である。 静的解析ツール実行部の説明に用いるためのブロック図である。 表示装置に表示される表示画面の一例を示した図である。 警告情報抽出部の説明に用いるためのブロック図である。 警告情報抽出部の行う処理動作を示したフローチャートである。 警告情報格納領域に記憶されている情報の一例を示した図である。 学習・推論部を構成する警告メッセージ類似度算出部の説明に用いるためのブロック図である。 警告メッセージ類似度算出部の行う処理動作を示したフローチャートである。 固定文字列格納領域に記憶されている情報の一例を示した図である。 単語帳データ記憶部に記憶されている情報の一例を示した図である。 警告メッセージ類似度マトリクスに記憶されている情報の一例を示した図である。 学習・推論部を構成する警告箇所近似度算出部の説明に用いるためのブロック図である。 警告箇所近似度算出部の行う処理動作を示したフローチャートである。 警告箇所データ格納領域に記憶されている情報の一例を示した図である。 警告箇所近似度マトリクスに記憶されている情報の一例を示した図である。 マージ処理実行部の説明に用いるためのブロック図である。 マージ処理実行部の行う処理動作を示したフローチャートである。 解析結果マージ記憶部に記憶されている情報の一例を示した図である。 マージ結果表示部の説明に用いるためのブロック図である。 マージ結果表示部の行う処理動作を示したフローチャートである。 表示装置に表示される表示画面の一例を示した図である。 表示装置に表示される表示画面の一例を示した図である。 ユーザ判定減点値マトリクスに記憶されている情報の一例を示した図である。
符号の説明
1 解析結果出力装置
2 マイコン
11 統括制御部
12 フォーマット定義編集・登録部
13 静的解析ツール実行部
14 警告情報抽出部
15 学習・推論部
16 警告メッセージ類似度算出部
17 警告箇所近似度算出部
18 マージ処理実行部
19 マージ結果表示部
20 入力・表示制御部
21 起動引数フォーマット定義記憶部
22 解析結果フォーマット定義記憶部
23 実行可能ロジック記憶部
24 解析対象ソースプログラム群記憶部
25 単語帳データ記憶部
26 警告メッセージ類似度マトリクス
27 警告箇所近似度マトリクス
28 解析結果マージ記憶部
29 ユーザ判定減点値マトリクス
31 警告情報格納領域
32 固定文字列格納領域
33 警告箇所データ格納領域

Claims (10)

  1. 複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
    点が指摘された解析結果から、指摘問題内容の各静的解析ツール間における類似度情報、
    及び指摘箇所情報に基づいて、同一指摘部分を検出する検出手段と、
    該検出手段による検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力す
    る出力手段とを備えていることを特徴とする解析結果出力装置。
  2. 前記出力手段が、重複する部分を省略して前記解析結果を出力するものであることを特
    徴とする請求項1記載の解析結果出力装置。
  3. 前記出力手段が、同一指摘部分を並べて出力するものであり、
    使用者により同一指摘部分でないと指定された場合、指定内容を同一指摘部分の検出に
    反映するように構成されていることを特徴とする請求項1又は請求項2記載の解析結果出
    力装置。
  4. 静的解析ツールによって指摘される問題内容に対するメッセージに基づいて、指摘問題
    内容の各静的解析ツール間における類似度を算出する算出手段と、
    該算出手段により算出された類似度に基づいて、指摘問題内容の各静的解析ツール間に
    おける類似度情報を示すマトリクスを作成する作成手段と、
    複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの(記
    述誤りなどの)問題点が指摘された解析結果から、前記作成手段により作成されたマトリ
    クスに基づいて、同一指摘部分を検出する検出手段と、
    該検出手段による検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力す
    る出力手段とを備えていることを特徴とする解析結果出力装置。
  5. 前記算出手段が、前記メッセージに含まれる単語の類似度及び頻度に基づいて、指摘問
    題内容の各静的解析ツール間における類似度を算出するものであることを特徴とする請求
    項4記載の解析結果出力装置。
  6. 前記算出手段が、前記メッセージの固定部に含まれる単語の類似度及び頻度に基づいて
    、指摘問題内容の各静的解析ツール間における類似度を算出するものであることを特徴と
    する請求項5記載の解析結果出力装置。
  7. 静的解析ツールで解析することによって得られる解析結果から情報を抽出する抽出手段
    と、
    該抽出手段によって抽出された情報を整理することによって、前記解析結果のフォーマ
    ットを各静的解析ツール間で揃える整理手段とを備えていることを特徴とする請求項4〜
    6のいずれかの項に記載の解析結果出力装置。
  8. 静的解析ツールで解析することによって得られる解析結果のフォーマットをユーザが定
    義するための環境を設定する設定手段を備え、
    前記抽出手段が、前記定義に基づいて、前記解析結果から情報を抽出するものであるこ
    とを特徴とする請求項7記載の解析結果出力装置。
  9. 複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
    点が指摘された解析結果から、指摘問題内容の各静的解析ツール間における類似度情報、
    及び指摘箇所情報に基づいて、同一指摘部分を検出するステップと、
    検出結果に基づいて、同一指摘部分を整理して前記解析結果を出力するステップとを有
    していることを特徴とする解析結果出力方法。
  10. 複数種の静的解析ツールで解析されることによって得られる、ソースプログラムの問題
    点が指摘された解析結果を、同一指摘部分について整理して出力するステップを有してい
    ることを特徴とする解析結果出力方法。
JP2008005380A 2008-01-15 2008-01-15 解析結果出力装置、及び解析結果出力方法 Withdrawn JP2009169573A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008005380A JP2009169573A (ja) 2008-01-15 2008-01-15 解析結果出力装置、及び解析結果出力方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008005380A JP2009169573A (ja) 2008-01-15 2008-01-15 解析結果出力装置、及び解析結果出力方法

Publications (1)

Publication Number Publication Date
JP2009169573A true JP2009169573A (ja) 2009-07-30

Family

ID=40970686

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008005380A Withdrawn JP2009169573A (ja) 2008-01-15 2008-01-15 解析結果出力装置、及び解析結果出力方法

Country Status (1)

Country Link
JP (1) JP2009169573A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129121A (ja) * 2009-12-18 2011-06-30 Korea Electronics Telecommun 静的分析道具統合管理装置及びシステム
JP2012256220A (ja) * 2011-06-09 2012-12-27 Nec Corp 判定作業支援システム、判定作業支援方法、及びプログラム
JP2016004569A (ja) * 2014-06-16 2016-01-12 トヨタ自動車株式会社 静的分析および性能データを使用するコードベースのリスク分析
JP2020086928A (ja) * 2018-11-26 2020-06-04 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011129121A (ja) * 2009-12-18 2011-06-30 Korea Electronics Telecommun 静的分析道具統合管理装置及びシステム
JP2012256220A (ja) * 2011-06-09 2012-12-27 Nec Corp 判定作業支援システム、判定作業支援方法、及びプログラム
JP2016004569A (ja) * 2014-06-16 2016-01-12 トヨタ自動車株式会社 静的分析および性能データを使用するコードベースのリスク分析
US10275333B2 (en) 2014-06-16 2019-04-30 Toyota Jidosha Kabushiki Kaisha Risk analysis of codebase using static analysis and performance data
JP2020086928A (ja) * 2018-11-26 2020-06-04 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル
JP7238361B2 (ja) 2018-11-26 2023-03-14 日本電気株式会社 エラー出力装置、エラー出力方法、学習装置、学習済みモデルの生成方法、プログラム、および学習済みモデル

Similar Documents

Publication Publication Date Title
JP4876511B2 (ja) ロジック抽出支援装置
US7870540B2 (en) Dynamic object validation
US8380650B2 (en) Information extraction rule making support system, information extraction rule making support method, and information extraction rule making support program
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
CN113434395B (zh) 测试用例的自动化生成方法、装置、设备及介质
US8347223B2 (en) GUI evaluation system, method, and program for evaluating a text input component
WO2017141893A1 (ja) ソフトウェア分析装置及びソフトウェア分析方法
KR101711772B1 (ko) 시스템 구축 지원 장치
JP2009169573A (ja) 解析結果出力装置、及び解析結果出力方法
US9047411B1 (en) Programming environment for executing program code despite errors and for providing error indicators
JP2005301859A (ja) コード検索プログラム及びコード検索装置
JP5937245B1 (ja) 運用手順評価装置および運用手順評価プログラム
US8788449B2 (en) Interface for creating and editing boolean logic
JP5188421B2 (ja) ソースコード解析方法およびソースコード解析支援システム
JP2014164677A (ja) 仕様検証支援装置、仕様検証支援方法及びプログラム
JP2006277282A (ja) モデル評価解析システムおよびモデル評価解析プログラム
JP6516343B2 (ja) アプリケーションユーザーインターフェース自動テスト方法、電子装置、システム及び記憶媒体
US20150082278A1 (en) Clone detection method and clone function commonalizing method
JP2016057715A (ja) 図形式プログラム解析装置
JP2008020972A (ja) ソフトウエア解析システム
JP2007264863A (ja) 業務使用解析装置
JP2011175446A (ja) 要件・バグレポート処理システム及びその方法
JP2007310829A (ja) データ処理装置、データ処理方法およびデータ処理プログラム
JP2015133031A (ja) プログラム分析装置及びプログラム分析方法
WO2018123039A1 (ja) プログラム比較装置およびプログラム差分照合方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101220

A072 Dismissal of procedure

Free format text: JAPANESE INTERMEDIATE CODE: A073

Effective date: 20120508

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120605