JP5125938B2 - バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法 - Google Patents

バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法 Download PDF

Info

Publication number
JP5125938B2
JP5125938B2 JP2008244848A JP2008244848A JP5125938B2 JP 5125938 B2 JP5125938 B2 JP 5125938B2 JP 2008244848 A JP2008244848 A JP 2008244848A JP 2008244848 A JP2008244848 A JP 2008244848A JP 5125938 B2 JP5125938 B2 JP 5125938B2
Authority
JP
Japan
Prior art keywords
identification information
syntax
syntax identification
similarity
bug
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.)
Expired - Fee Related
Application number
JP2008244848A
Other languages
English (en)
Other versions
JP2010079447A (ja
Inventor
孝次 佐々木
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008244848A priority Critical patent/JP5125938B2/ja
Priority to US12/543,975 priority patent/US20100077382A1/en
Publication of JP2010079447A publication Critical patent/JP2010079447A/ja
Application granted granted Critical
Publication of JP5125938B2 publication Critical patent/JP5125938B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00—Error detection; Error correction; Monitoring
    • G06F11/36—Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604—Analysis of software for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

この発明は、ソースコードを構成する複数の構文の中から、バグの可能性がある構文を検出するバグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法に関する。
ソフトウェア開発では、ソフトウェア開発者により作成されたソースコード内にあるバグを取り除く作業が行われる。このバグを取り除く作業に要するソフトウェア開発者の手間を軽減させることを目的として、ソースコードを構成する複数の構文の中から、バグの可能性がある構文を検出するツールがある(例えば、特許文献1参照)。以下では、上記したツールを適用したバグ検出支援装置について簡単に説明する。
バグ検出支援装置は、複数の検出条件情報を予め記憶部に記憶する。ここで、検出条件情報とは、バグの可能性がある構文を検出するための検出条件を示した情報であり、例えば、検出条件情報「条件式‘if’で、代入演算子‘=’を使用している」である。そして、バグ検出支援装置は、ソフトウェア開発者からソースコードの入力および検出要求を受け付けると、ソースコードと各検出条件情報とを照らし合わせる。続いて、バグ検出支援装置は、ソースコードを構成する各構文の中から、各検出条件情報の内でいずれかの検出条件情報を満足する構文(例えば、構文「if(b=0)」など)を検出する。
次に、バグ検出支援装置は、検出された構文に一意に付与されている構文識別情報(例えば、構文の行番号)と、検出された構文が満足している検出条件情報とを対応付けて列挙した構文識別情報一覧を生成する。そして、バグ検出支援装置は、生成した構文識別情報一覧をソフトウェア開発者に対して表示出力する。
構文識別情報一覧を参照したソフトウェア開発者は、構文識別情報一覧の中にある各構文識別情報に対応するソースコード上の構文について、バグであるか否かを1つずつ目視で確認する。例えば、ソフトウェア開発者は、等値演算子‘==’を使用すべき構文に代入演算子‘=’を使用していないかを確認する。そして、ソフトウェア開発者は、バグであると判断した場合に、バグを取り除く。
特開2005−228241号公報
ところで、従来のバグ検出支援装置では、バグであるか否かを確認する作業を行うソフトウェア開発者に無駄な手間を強いることがあるという課題があった。すなわち、従来のバグ検出支援装置は、バグの可能性がある構文の構文識別情報を列挙して出力しているに過ぎない。そのため、ソフトウェア開発者は、列挙された構文識別情報に対応する全ての構文について、1つずつソースコードを確認して、バグであるか否かを確認しなければならなかった。したがって、従来のバグ検出支援装置では、バグでない構文についてもソースコードを確認するという無駄な手間をソフトウェア開発者に強いるという問題点があった。
そこで、バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法は、上述した従来技術の課題を解決するためになされたものであり、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能なバグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、開示のバグ検出支援プログラムは、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力手順と、前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出手順と、前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出手順によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定手順と、前記構文識別情報特定手順により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力手順とをコンピュータに実行させることを要する。
また、開示の類似構文識別情報一覧出力プログラムは、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせることで、バグの可能性がある構文を識別するための構文識別情報が列挙されて生成された構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出手順と、前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出手順によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定手順と、前記構文識別情報特定手順により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力手順とをコンピュータに実行させることを要する。
また、開示のバグ検出支援装置は、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力部と、前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出部と、前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出部によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定部と、前記構文識別情報特定部により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力部とを有することを要する。
また、開示のバグ検出支援方法は、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力ステップと、前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出ステップと、前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出ステップによって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定ステップと、前記構文識別情報特定ステップにより特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力ステップとを含むことを要する。
開示のバグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法によれば、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。
以下に添付図面を参照して、この発明に係るバグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法の実施例を詳細に説明する。なお、以下では、この発明が適用されたバグ検出支援装置を実施例として説明する。
以下の実施例1では、実施例1に係るバグ検出支援装置の概要、バグ検出支援装置の構成、バグ検出支援装置による処理の流れを順に説明し、最後に実施例1の効果を説明する。
[実施例1に係るバグ検出支援装置の概要]
まず、図1を用いて実施例1に係るバグ検出支援装置を説明する。図1は、実施例1に係るバグ検出支援装置の概要を説明するための図である。
実施例1に係るバグ検出支援装置は、バグの可能性がある構文の構文識別情報を列挙した構文識別情報一覧をソフトウェア開発者に対して出力すること概要とし、特に、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させる。
すなわち、バグ検出支援装置は、バグの可能性がある構文の検出要求をソフトウェア開発者から受け付けると、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出する。続いて、バグ検出支援装置は、図1の(A)示すように、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をソフトウェア開発者に対して出力する。
構文識別情報一覧を参照したソフトウェア開発者は、構文識別情報一覧の中から任意に選択した所定の構文識別情報に対応するソースコード上の構文について、バグであるか否かを確認する。続いて、ソフトウェア開発者は、バグであるか否かを確認した構文識別情報の選択指示をバグ検出支援装置に入力する。
バグ検出支援装置は、図1の(B)示すように、構文識別情報の選択指示をソフトウェア開発者から受け付けると、図1の(C)示すように、構文識別情報一覧の中にある各構文識別情報に対応する構文と、ソフトウェア開発者により選択された構文識別情報に対応する構文との間の類似度を算出する。続いて、バグ検出支援装置は、図1の(D)示すように、構文識別情報一覧の中にある各構文識別情報の中から、算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する。そして、バグ検出支援装置は、図1の(E)示すように、特定された構文識別情報を列挙した類似構文識別情報一覧を生成して、生成された類似構文識別情報一覧をソフトウェア開発者により選択された構文識別情報と対応付けてソフトウェア開発者に出力する。
このようなことから、実施例1に係るバグ検出支援装置は、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。例えば、実施例1に係るバグ検出支援装置は、バグが検出された構文の構文識別情報の選択をソフトウェア開発者から受け付けた場合には、バグが検出された構文と類似する構文の構文識別情報を列挙した類似構文識別情報一覧を出力する。そのため、ソフトウェア開発者は、類似構文識別情報一覧に列挙された構文識別情報に対応する構文だけバグであるか否かを確認すれば、バグがある構文を効率よく検出することができる。したがって、実施例1に係るバグ検出支援装置は、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。
また、実施例1に係るバグ検出支援装置は、バグが検出されなかった構文の構文識別情報の選択をソフトウェア開発者から受け付けた場合には、バグが検出されなかった構文と類似する構文の構文識別情報を列挙した類似構文識別情報一覧を出力する。そのため、ソフトウェア開発者は、類似構文識別情報一覧に列挙された構文識別情報について、バグであるか否かを確認する必要が無く、ソースコードのバグ確認作業に関する手間を省くことができる。したがって、実施例1に係るバグ検出支援装置は、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。
[バグ検出支援装置の構成]
次に、図2〜図7を用いて、図1で説明したバグ検出支援装置の構成を説明する。図2は、バグ検出支援装置の構成を示すブロック図である。図3は、ソースコード記憶部に記憶される情報の一例を示した図である。図4は、解析データ記憶部に記憶される情報の一例を示した図である。図5は、構文識別情報一覧の一例を示した図である。図6は、選択構文識別情報一覧の一例を示した図である。図7は、類似構文識別情報一覧の一例を示した図である。
図2に示すように、バグ検出支援装置10は、入力部11、出力部12、ソースコード記憶部21、解析データ記憶部22、検出条件情報記憶部23、ログ記憶部24、選択指示情報記憶部25、類似度算出結果記憶部26、ソースコード解析部31、構文識別情報一覧出力部32、類似度算出部33および類似構文識別情報一覧出力部34を有する。なお、類似構文識別情報一覧出力部34は、構文識別情報特定部ともいう。
このうち、入力部11は、各種の情報の入力を受付ける。具体的には、入力部11は、キーボードやマウスなどを備えて構成される。
出力部12は、各種の情報を出力する。具体的には、出力部12は、モニタやディスプレイを備えて構成され、例えば、構文識別情報を列挙した構文識別情報一覧などを表示出力する。
ソースコード記憶部21は、ソフトウェア開発者により作成されたソースコードを記憶する(図3参照)。また、解析データ記憶部22は、ソースコードを静的解析して生成された解析データを記憶する。ここで、解析データとは、例えば、言語要素に変換されたソースコードを示したプログラムモデルと、データの参照関係や関数の呼び出し関係を示したデータモデルと、データの処理の流れを示したフローモデルとを含むデータである(図4参照)。
検出条件情報記憶部23は、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報を記憶する。具体的には、検出条件情報記憶部23は、検出条件情報を識別するための検出条件識別情報と、検出条件情報とを対応付けて記憶する。例えば、検出条件情報記憶部23は、検出条件識別情報「pgr0722」と、検出条件情報「条件式‘if’で、代入演算子‘=’を使用している」とを対応付けて記憶する。
ログ記憶部24は、バグの可能性がある構文の構文識別情報と、検出条件識別情報とを対応付けてなるログを記憶する。具体的には、ログ記憶部24は、ログとして、ソースコードのファイル名、構文識別情報(例えば、構文の行番号)、検出条件識別情報が属するグループを示したグループ名(例えば、グループ名「a」)、検出条件識別情報およびメッセージ(例えば、「条件式‘if(i=func())」’で、代入演算子‘=’を使用している」)を対応付けて記憶する。
選択指示情報記憶部25は、構文識別情報一覧の中から選択された構文識別情報、検出条件識別情報、ソースコードのファイル名およびメッセージを対応付けて記憶する。また、類似度算出結果記憶部26は、ソースコードのファイル名、構文識別情報および構文間の類似度合いを示した類似度を対応付けて記憶する。
ソースコード解析部31は、ソースコードを静的解析して、プログラムモデルと、データモデルと、フローモデルとを含む解析データを生成する。具体的には、ソースコード解析部31は、ソフトウェア開発者から検出要求を受け付けると、ソースコード記憶部21からソースコードを読み出して、ソースコードを静的解析して解析データを生成する。続いて、ソースコード解析部31は、生成した解析データを解析データ記憶部22に格納する。
構文識別情報一覧出力部32は、ソースコードと、複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して構文識別情報一覧を生成する。そして、構文識別情報一覧出力部32は、生成した構文識別情報一覧をソフトウェア開発者に対して出力する。具体的には、構文識別情報一覧出力部32は、解析データ記憶部22に解析データが格納されると、解析データ記憶部22から解析データを読み出すとともに、検出条件情報記憶部23から全ての検出条件情報を読み出す。
続いて、構文識別情報一覧出力部32は、解析データを構成する各構文の中から、いずれかの検出条件情報を満足する構文をバグの可能性がある構文として検出する。そして、構文識別情報一覧出力部32は、バグの可能性がある構文を検出すると、検出した構文に一意に付与されている構文識別情報や、その構文が満足している検出条件情報の検出条件識別情報などを対応付けたログを生成して、生成したログをログ記憶部24に格納する。
その後、構文識別情報一覧出力部32は、全てのバグの可能性がある構文を解析データの中から検出すると、ログ記憶部24に格納した全てのログを読み出し、構文識別情報を列挙した構文識別情報一覧を生成する。そして、構文識別情報一覧出力部32は、生成した構文識別情報一覧を出力部12を介してソフトウェア開発者に対して表示出力する。例えば、構文識別情報一覧出力部32は、図5に示すように、指摘メッセージビューワに構文識別情報一覧を出力する。
類似度算出部33は、構文識別情報一覧の中から、いずれかの構文識別情報の選択をソフトウェア開発者から受け付けた場合に、構文識別情報一覧の中にある各構文識別情報に対応する構文と、ソフトウェア開発者により選択された構文識別情報に対応する構文との間の類似度を算出する。
具体的には、類似度算出部33は、構文識別情報一覧の中から、いずれかの構文識別情報の選択を入力部を介してソフトウェア開発者から受け付けると、ソフトウェア開発者により選択された構文識別情報や、検出条件識別情報などを選択指示情報記憶部25に格納する。続いて、類似度算出部33は、ソフトウェア開発者により選択された構文識別情報や、検出条件識別情報などを列挙した選択構文識別情報一覧を生成して、生成した選択構文識別情報一覧を出力部12を介してソフトウェア開発者に対して表示出力する。例えば、類似度算出部33は、図6に示すように、類似度ビューワに選択構文識別情報一覧を出力する。
そして、類似度算出部33は、選択構文識別情報一覧の中から、いずれかの構文識別情報の選択を入力部を介してソフトウェア開発者から受け付けると、ソフトウェア開発者により選択された構文識別情報に対応する検出条件識別情報を選択指示情報記憶部25から読み出す。続いて、類似度算出部33は、読み出した検出条件識別情報と同一の検出条件識別情報を含むログをログ記憶部24に記憶されている全てのログの中から検索して、検索した各ログに含まれている構文識別情報を取得する。
次に、類似度算出部33は、解析データ記憶部22に記憶されている解析データの中から、取得した各構文識別情報に基づいて、比較対象となる各構文を抽出するとともに、ソフトウェア開発者により選択された構文識別情報に基づいて、比較元となる構文を抽出する。続いて、類似度算出部33は、比較対象となる各構文それぞれについて、比較元となる構文と比較して、構文間の類似度合いを示した類似度を算出する。そして、類似度算出部33は、比較対象の構文の構文識別情報や、算出した類似度などを対応づけて類似度算出結果記憶部26に格納する。
類似構文識別情報一覧出力部34は、構文識別情報一覧の中にある各構文識別情報の中から、類似度算出部33によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する。そして、類似構文識別情報一覧出力部34は、特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をソフトウェア開発者により選択された構文識別情報と対応付けてソフトウェア開発者に出力する。
具体的には、類似構文識別情報一覧出力部34は、類似度算出結果記憶部26に記憶されている全ての構文識別情報の中から、予め設定されている所定の閾値以上の類似度に対応する構文識別情報を特定する。そして、類似構文識別情報一覧出力部34は、特定した構文識別情報を列挙した類似構文識別情報一覧を生成して、生成された類似構文識別情報一覧をソフトウェア開発者により選択された構文識別情報と対応付けて出力部12を介してソフトウェア開発者に対して表示出力する。例えば、類似構文識別情報一覧出力部34は、図7に示すように、類似度ビューワに類似構文識別情報一覧を出力する。
[バグ検出支援装置による処理]
次に、図8を用いて、バグ検出支援装置10による処理を説明する。図8は、バグ検出支援装置による処理の流れを示すフローチャート図である。図8に示すように、構文識別情報一覧出力部32は、ソースコードからバグの可能性がある構文を検出して、構文識別情報一覧を生成し、出力する(ステップS101)。
続いて、類似度算出部33は、構文識別情報一覧の中から、いずれかの構文識別情報の選択を受け付けると(ステップS102肯定)、ソフトウェア開発者により選択された構文識別情報を列挙した選択構文識別情報一覧を生成し、出力する(ステップS103)。そして、類似度算出部33は、選択構文識別情報一覧の中から、いずれかの構文識別情報の選択を受け付けると(ステップS104肯定)、ソフトウェア開発者により選択された構文識別情報と同一の検出条件識別情報に対応する構文識別情報を取得する(ステップS105)。
続いて、類似度算出部33は、取得した各構文識別情報に対応する構文と、ソフトウェア開発者により選択された構文識別情報に対応する構文との間の類似度を算出する(ステップS106)。その後、類似構文識別情報一覧出力部34は、取得された全ての構文識別情報について類似度が算出されると(ステップS107肯定)、所定の閾値以上の類似度の構文識別情報を列挙した類似構文識別情報一覧を生成して、出力し(ステップS108)、処理を終了する。
[実施例1の効果]
上記したように、実施例1によれば、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。例えば、バグ検出支援装置10は、バグが検出された構文の構文識別情報の選択をソフトウェア開発者から受け付けた場合には、バグが検出された構文と類似する構文の構文識別情報を列挙した類似構文識別情報一覧を出力する。そのため、ソフトウェア開発者は、類似構文識別情報一覧に列挙された構文識別情報に対応する構文について、ソースコードを確認して、バグであるか否かを確認すれば、バグがある構文を効率よく検出することができる。したがって、バグ検出支援装置10は、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。
また、バグ検出支援装置10は、バグが検出されなかった構文の構文識別情報の選択をソフトウェア開発者から受け付けた場合には、バグが検出されなかった構文と類似する構文の構文識別情報を列挙した類似構文識別情報一覧を出力する。そのため、ソフトウェア開発者は、類似構文識別情報一覧に列挙された構文識別情報について、ソースコードを確認して、バグであるか否かを確認する必要が無く、ソースコードのバグ確認作業に関する手間を省くことができる。したがって、バグ検出支援装置10は、バグでない構文についてソースコードを確認するという無駄な手間の発生を抑制して、バグであるか否かを確認する作業に要するソフトウェア開発者の手間を軽減させることが可能である。
さて、構文間の類似度を算出する方法については、種々の異なる形態にて実施されてよいものである。そこで、以下の実施例2では、ソフトウェア開発者により設定された算出定義情報を用いて構文間の類似度を算出するバグ検出支援装置10について説明する。なお、以下では、実施例2に係るバグ検出支援装置の構成、バグ検出支援装置による処理の流れ、実施例2の効果を説明する。
[バグ検出支援装置の構成]
まず、図9〜図13を用いて、実施例2に係るバグ検出支援装置の構成を説明する。図9は、実施例2に係るバグ検出支援装置の構成を示すブロック図である。図10は、算出定義情報記憶部に記憶される情報の一例を示した図である。図11および図12は、類似度算出部による処理を説明するための図である。図13は、類似構文識別情報一覧の一例を示した図である。
実施例2に係るバグ検出支援装置の構成は、図9に示すように、算出定義情報記憶部27をさらに有する他は、実施例1に係るバグ検出支援装置の構成と、以下に説明する点が異なる。すなわち、算出定義情報記憶部27は、類似度を算出するための算出定義を示した複数の算出定義情報を記憶する。具体的に一例をあげて説明すると、図10に示すように、算出定義情報記憶部27は、算出定義情報を識別するための算出定義識別情報と、算出定義情報とを対応付けて記憶する。ここで、例えば、算出定義識別情報「pgr0722−1」とは、検出条件識別情報「pgr0722」に対応していることを意味する。また、例えば、算出定義識別情報「共通−1」とは、全ての検出条件識別情報に対応していることを意味する。
類似度算出部33は、類似度を算出するための算出定義を示した複数の算出定義情報の中から、単数または複数の算出定義情報の選択と、各算出定義情報それぞれの重みを示した重み情報とをソフトウェア開発者から受け付ける。続いて、類似度算出部33は、構文識別情報一覧の中にある構文識別情報それぞれについて、算出定義情報ソフトウェア開発者により選択された各算出定義情報を用いて、各算出定義情報に対応する類似度をそれぞれ算出する。そして、類似度算出部33は、重み情報を用いて、算出された各算出定義情報に対応する類似度に対してそれぞれ重み付けして得た値の合計値を算出する。
具体的には、類似度算出部33は、選択構文識別情報一覧の中から、いずれかの構文識別情報の選択を入力部を介してソフトウェア開発者から受け付けると、ソフトウェア開発者により選択された構文識別情報に対応する検出条件識別情報を選択指示情報記憶部25から読み出す。次に、類似度算出部33は、選択指示情報記憶部25から読み出した検出条件識別情報に対応する算出定義情報を算出定義情報記憶部27に記憶されている全ての算出定義情報の中から取得する。そして、類似度算出部33は、取得した各算出定義情報を列挙したダイアルログを生成して、図11に示すように、生成したダイアルログを出力部12を介してソフトウェア開発者に対して表示出力する。
ここで、類似度算出部33は、ダイアルログに示された各算出定義情報の中から、単数または複数の算出定義情報の選択および各算出定義情報それぞれの重みを示した重み情報の入力を受け付ける。続いて、類似度算出部33は、読み出した検出条件識別情報と同一の検出条件識別情報を含むログをログ記憶部24に記憶されている全てのログの中から検索して、検索した各ログに含まれている構文識別情報を取得する。次に、類似度算出部33は、解析データ記憶部22に記憶されている解析データの中から、取得した各構文識別情報に基づいて、比較対象となる各構文を抽出するとともに、ソフトウェア開発者により選択された構文識別情報に基づいて、比較元となる構文を抽出する。
続いて、類似度算出部33は、ソフトウェア開発者により選択された構文識別情報それぞれについて、ソフトウェア開発者により選択された各算出定義情報を用いて、各算出定義情報に対応する類似度をそれぞれ算出する。そして、類似度算出部33は、構文識別情報それぞれについて、重み情報を用いて、算出された各算出定義情報に対応する類似度に対してそれぞれ重み付けして得た値の合計値を算出する。
例えば、類似度算出部33は、構文識別情報(行番号)「50」について、算出定義識別情報「pgr0722−1」に対応する類似度「◎」を算出する(図12参照)。続いて、類似度算出部33は、算出定義識別情報「pgr0722−1」に対応する類似度に対して重み付を行う(図12の(×2)参照)。そして、類似度算出部33は、類似度を算出すべき算出定義識別情報が無くなるまで、構文識別情報「50」について、各算出定義識別情報に対応する類似度を算出して、算出された類似度に対してそれぞれ重み付を行う。
ここで、類似度を算出すべき算出定義識別情報が無くなると、類似度算出部33は、構文識別情報「50」について、各類似度に対してそれぞれ重み付けして得た値の合計値「16」を算出する。そして、類似度算出部33は、類似度を算出すべき構文識別情報が無くなるまで、各構文識別情報について、各算出定義情報に対応する類似度をそれぞれ算出し、算出された類似度に対してそれぞれ重み付けして得た値の合計値を算出する。
なお、算出定義識別情報「pgr0722−1」〜「pgr0722−4」に対応する類似度は、比較元となる構文および比較対象となる構文が、ともに算出定義識別情報を満足しているか否かで類似度「◎」もしくは、類似度「×」を算出するものとする。例えば、算出定義識別情報「pgr0722−1」に対応する類似度は、比較元となる構文および比較対象となる構文において、代入演算子‘=’の右辺の文字列が完全に一致するともに、代入演算子‘=’の左辺の文字列が完全に一致すれば、類似度「◎」となる。
また、算出定義識別情報「共通1」〜「共通3」に対応する類似度は、構文間の文字列比較による一致率を算出して、類似度「◎(80%以上で一致)」、類似度「○(31%〜79%で一致)」もしくは、類似度「×(30%以下で一致)」を算出するものとする。ここで、類似度「◎」は、2点に換算され、類似度「○」は、1点に換算され、類似度「×」は、1点に換算されるものとする。また、図12に示した類似点とは、各算出定義識別情報に対応する合計値を、合計値の満点(図12に示す例では「16」)で除算して得た値である。
類似構文識別情報一覧出力部34は、各算出定義情報に対応する類似度に対してそれぞれ重み付けして得た値の合計値が予め設定されている所定の閾値以上の構文識別情報を特定する。そして、類似構文識別情報一覧出力部34は、特定した構文識別情報と、各算出定義情報に対応する類似度とを応付けて列挙した類似構文識別情報一覧を生成して、生成された類似構文識別情報一覧をソフトウェア開発者により選択された構文識別情報と対応付けて出力する。例えば、類似構文識別情報一覧出力部34は、図13に示すように、類似度ビューワに類似構文識別情報一覧を出力する。
[バグ検出支援装置による処理]
次に、図14を用いて、バグ検出支援装置10による処理を説明する。図14は、実施例2に係るバグ検出支援装置による処理の流れを示すフローチャート図である。なお、以下では、実施例1に係るバグ検出支援装置による処理と異なる点についてのみ説明する。
図14に示すように、類似度算出部33は、選択構文識別情報一覧の中から、いずれかの構文識別情報の選択を受け付けると(ステップS204肯定)、算出定義情報設定処理を実行する(ステップS205)。具体的には、類似度算出部33は、ソフトウェア開発者により選択された構文識別情報に対応する算出定義情報を列挙したダイアルログを出力して、算出定義情報の選択および重み情報の入力を受け付ける。
そして、類似度算出部33は、ソフトウェア開発者により選択された構文識別情報と同一の検出条件識別情報に対応する構文識別情報を取得する(ステップS206)。続いて、類似度算出部33は、ソフトウェア開発者により選択された構文識別情報について、各算出定義情報に対応する類似度を算出して、算出された類似度に対して重み付を行う(ステップS207)。
その後、類似度を算出すべき算出定義情報が無くなると(ステップS208否定)、類似度算出部33は、算出された類似度に対してそれぞれ重み付けして得た値の合計値を算出する(ステップS209)。続いて、類似度算出部33は、類似度を算出すべき構文識別情報が無くなるまで、構文識別情報を取得して(ステップS206)、上記した処理を繰り返し実行する。そして、類似度を算出すべき構文識別情報が無くなると(ステップS210否定)、類似構文識別情報一覧出力部34は、合計値が予め設定されている所定の閾値以上の構文識別情報を列挙した類似構文識別情報一覧を生成して、出力し(ステップS211)、処理を終了する。
[実施例2の効果]
上記したように、実施例2によれば、バグ検出支援装置は、ソフトウェア開発者により設定された算出定義情報に応じて生成した類似構文識別情報一覧を出力することが可能である。そのため、ソフトウェア開発者は、所望する視点でバグであるか否かを確認することができるため、確認作業を効率よく行うことができる。
また、実施例2によれば、バグ検出支援装置は、ソフトウェア開発者により重み付けされた算出定義情報に応じて生成した類似構文識別情報一覧を出力することが可能である。そのため、ソフトウェア開発者は、同一視点でバグであるか否かを確認することができるため、確認作業をさらに効率よく行うことができる。
また、実施例2によれば、バグ検出支援装置は、構文識別情報と、各算出定義情報に対応する類似度とを応付けて列挙した類似構文識別情報一覧を出力することが可能である。そのため、ソフトウェア開発者は、類似構文識別情報一覧の中にある各構文識別情報について、選択した構文識別情報とどのように類似しているかを一意に把握することができるため、バグ確認作業を効率よく行うことができる。
さて、これまで実施例1および実施例2について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、実施例3として、他の実施例を説明する。
(1)算出定義情報の重みの履歴を保存
例えば、実施例2では、ダイアルログを出力して、算出定義情報の選択と、算出定義情報の重み付けをソフトウェア開発者に要求する場合を説明した。しかしながら、バグ検出支援装置10が、類似度を算出する際に、予め記憶部に記憶された各算出定義情報の重みを自動的に読み出すようにすれば、算出定義情報の選択と、算出定義情報の重み付けを入力する作業に要するソフトウェア開発者の手間を省くことができる。
具体的には、バグ検出支援装置10は、図15に示すように、算出定義識別情報と、算出定義情報の重みを示した重み情報とを対応付けた履歴を記憶部に記憶する。そして、類似度算出部33は、図16に示すように、構文識別情報一覧の中から、いずれかの構文識別情報の選択を受け付けると、ソフトウェア開発者により選択された構文識別情報に対応する算出定義識別情報の重みの履歴が記憶部に記憶されているか否かを判定する(ステップS301)。
ここで、履歴が記憶部に記憶されていない場合には(ステップS301否定)、類似度算出部33は、算出定義識別情報を列挙したダイアルログを出力して、算出定義識別情報および重み情報の入力を受け付ける(ステップS302)。そして、類似度算出部33は、受け付けた算出定義識別情報と、重み情報とを対応付けて記憶部に格納して(ステップS303)、算出定義情報設定処理を終了する。一方では、履歴が記憶部に記憶されている場合には、類似度算出部33は、記憶部から構文識別情報に対応する算出定義識別情報の重みを読み出し(ステップS304)、算出定義情報設定処理を終了する。なお、図15は、履歴の一例を示した図である。図16は、算出定義情報設定処理の流れを示すフローチャート図である。
(2)一致率と、換算後の点数とを任意に設定
また、実施例2では、構文間の文字列比較による一致率を、類似度を示す点数に換算する場合を説明したが、図17に示すようなダイアルログを出力して、ソフトウェア開発者が一致率と、換算後の点数とを任意に設定できるようにしてもよい。なお、図17は、一致率と、換算後の点数とを設定するためのダイアルログの一例を示した図である。
(3)一致率の算出方法
また、実施例2では、構文間の文字列比較により一致率を算出する場合を説明したが、図18の(A−1)および(A−2)に示すように、識別子の記載方法が異なる場合であってもソース記述が一致するとみなしてもよい。また、図18の(B−1)および(B−2)に示すように、構文に記載されている内容が異なる場合であってもソース記述の構文が一致するものとみなしてよい。図18は、一致率の算出方法について説明するための図である。
(4)装置構成など
また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報(例えば、図3、図4、図10および図15に示した記憶情報や図15に示した重み情報)については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、例えば、図2に示したログ記憶部24と、選択指示情報記憶部25とを統合して構成するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
(5)バグ検出支援プログラム
ところで、本発明はあらかじめ用意されたプログラムをバグ検出支援装置10としてのコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図19を用いて、上記の実施例に示したバグ検出支援装置10と同様の機能を有するバグ検出支援プログラムを実行するコンピュータを一例として説明する。図19は、バグ検出支援プログラムを実行するコンピュータを示す図である。
同図に示すように、バグ検出支援装置10としてのコンピュータ110は、入力部120、ROM130、CPU140、HDD150、RAM160および出力部170をバス180などで接続して構成される。
ROM130には、上記の実施例1に示したバグ検出支援装置10と同様の機能を発揮するバグ検出支援プログラム、つまり、図19に示すようにソースコード解析プログラム130aと、構文識別情報一覧出力プログラム130bと、類似度算出プログラム130cと、類似構文識別情報一覧出力プログラム130dとが、あらかじめ記憶されている。なお、これらのプログラム130a〜プログラム130dについては、図2に示したバグ検出支援装置10の各構成要素と同様、適宜統合または、分散してもよい。
そして、CPU140がこれらのプログラム130a〜プログラム130dをROM130から読み出して実行することで、図19に示すように、プログラム130a〜プログラム130dは、ソースコード解析プロセス140aと、構文識別情報一覧出力プロセス140bと、類似度算出プロセス140cと、類似構文識別情報一覧出力プロセス140dとして機能するようになる。なお、プロセス140a〜プロセス140dは、図2に示した、ソースコード解析部31、構文識別情報一覧出力部32、類似度算出部33および類似構文識別情報一覧出力部34にそれぞれ対応する。
また、HDD150には、図19に示すように、検出条件情報データテーブル150aが設けられる。そして、CPU140は、検出条件情報データテーブル150aから、検出条件情報データ160dを読み出してRAM160に格納し、RAM160に格納された検出条件情報データデータ160dおよび入力部120を介して入力されたソースコード160a、選択指示データ160eに基づいて処理を実行する。
なお、データ160a〜データ160fは、図2に示したソースコード記憶部21、解析データ記憶部22、検出条件情報記憶部23、ログ記憶部24、選択指示情報記憶部25および類似度算出結果記憶部26に対応する。
なお、上記した各プログラム130a〜プログラム130dについては、必ずしも最初からROM130に記憶させておく必要はなく、例えば、コンピュータ110に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」、またはコンピュータ110の内外に備えられるHDDなどの「固定用の物理媒体」、さらには公衆回線、インターネット、LAN、WANなどを介してコンピュータ110に接続される「他のコンピュータ(またはサーバ)」などに各プログラムを記憶させておき、コンピュータ110がこれから各プログラムを読み出して実行するようにしてもよい。
(6)バグ検出支援方法
また、上記したバグ検出支援装置により、以下のようなバグ検出支援方法が実現される。すなわち、複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力ステップと(例えば、図8のステップS103)、前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出ステップ(例えば、図8のステップS106)と、前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出ステップによって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定ステップと、前記構文識別情報特定ステップにより特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力ステップと(例えば、図8のステップS108)とを含んだバグ検出支援方法が実現される。
実施例1に係るバグ検出支援装置の概要を説明するための図である。 バグ検出支援装置の構成を示すブロック図である。 ソースコード記憶部に記憶される情報の一例を示した図である。 解析データ記憶部に記憶される情報の一例を示した図である。 構文識別情報一覧の一例を示した図である。 選択構文識別情報一覧の一例を示した図である。 類似構文識別情報一覧の一例を示した図である。 バグ検出支援装置による処理の流れを示すフローチャート図である。 実施例2に係るバグ検出支援装置の構成を示すブロック図である。 算出定義情報記憶部に記憶される情報の一例を示した図である。 類似度算出部による処理を説明するための図である。 類似度算出部による処理を説明するための図である。 類似構文識別情報一覧の一例を示した図である。 実施例2に係るバグ検出支援装置による処理の流れを示すフローチャート図である。 履歴の一例を示した図である。 算出定義情報設定処理の流れを示すフローチャート図である。 一致率と、換算後の点数とを設定するためのダイアルログの一例を示した図である。 一致率の算出方法について説明するための図である。 バグ検出支援プログラムを実行するコンピュータを示す図である。
符号の説明
10 バグ検出支援装置
11 入力部
12 出力部
21 ソースコード記憶部
22 解析データ記憶部
23 検出条件情報記憶部
24 ログ記憶部
25 選択指示情報記憶部
26 類似度算出結果記憶部
27 算出定義情報記憶部
31 ソースコード解析部
32 構文識別情報一覧出力部
33 類似度算出部
34 類似構文識別情報一覧出力部
110 コンピュータ
120 入力部
130 ROM(Read Only Memory)
130a ソースコード解析プログラム
130b 構文識別情報一覧出力プログラム
130c 類似度算出プログラム
130d 類似構文識別情報一覧出力プログラム
140 CPU(Central Processing Unit)
140a ソースコード解析プロセス
140b 構文識別情報一覧出力プロセス
140c 類似度算出プロセス
140d 類似構文識別情報一覧出力プロセス
150 HDD(Hard Disk Drive)
150a 検出条件情報データテーブル
160 RAM(Random Access Memory)
160a ソースコード
160b 解析データ
160c 検出条件情報
160d ログデータ
160e 選択指示データ
160f 類似度算出結果データ
170 出力部
180 バス

Claims (8)

  1. 複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力手順と、
    前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出手順と、
    前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出手順によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定手順と、
    前記構文識別情報特定手順により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力手順と、
    をコンピュータに実行させるバグ検出支援プログラム。
  2. 前記構文識別情報一覧出力手順は、前記構文識別情報と、当該構文識別情報に対応する構文が満足している検出条件情報とを対応付けて列挙した構文識別情報一覧を生成し、
    前記類似度算出手順は、前記構文識別情報一覧の中から、ユーザにより選択された構文識別情報と同一の検出条件識別情報に対応する構文識別情報を抽出して、抽出された構文識別情報それぞれについて類似度を算出し、
    前記構文識別情報特定手順は、ユーザにより選択された構文識別情報と同一の検出条件識別情報に対応する各構文識別情報の中から、前記類似度算出手順によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する請求項1に記載のバグ検出支援プログラム。
  3. 前記類似度を算出するための算出定義を示した複数の算出定義情報の中から、単数または複数の算出定義情報の選択をユーザから受け付ける算出定義情報選択受付手順をさらにコンピュータに実行させ、
    前記類似度算出手順は、前記構文識別情報一覧の中にある各構文識別情報それぞれについて、前記算出定義情報選択受付手順によって受け付けられた各算出定義情報に対応する類似度をそれぞれ算出し、
    前記構文識別情報特定手順は、前記類似度算出手順によって算出された各算出定義情報に対応する類似度の合計値が予め設定されている所定の閾値以上の構文識別情報を特定する請求項1または2に記載のバグ検出支援プログラム。
  4. ユーザにより選択された各算出定義情報それぞれの重みを示した重み情報をユーザから受け付ける重み情報受付手順をさらにコンピュータに実行させ、
    前記構文識別情報特定手順は、前記重み情報受付手順によって受け付けられた重み情報を用いて、前記類似度算出手順によって算出された各算出定義情報に対応する類似度に対してそれぞれ重み付けして得た値の合計値が予め設定されている所定の閾値以上の構文識別情報を特定する請求項3に記載のバグ検出支援プログラム。
  5. 前記類似構文識別情報一覧出力手順は、前記構文識別情報特定手順により特定された構文識別情報と、前記類似度算出手順によって算出された各算出定義情報に対応する類似度とを応付けて列挙した類似構文識別情報一覧を生成して、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する請求項3または4に記載のバグ検出支援プログラム。
  6. 複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせることで、バグの可能性がある構文を識別するための構文識別情報が列挙されて生成された構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出手順と、
    前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出手順によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定手順と、
    前記構文識別情報特定手順により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力手順と、
    をコンピュータに実行させる類似構文識別情報一覧出力プログラム。
  7. 複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力部と、
    前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出部と、
    前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出部によって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定部と、
    前記構文識別情報特定部により特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力部と、
    を有するバグ検出支援装置。
  8. 複数の構文により構成されるソースコードと、バグの可能性がある構文を検出するための検出条件を示した複数の検出条件情報とを照らし合わせて、バグの可能性がある構文を検出し、検出された構文に一意に付与されている構文識別情報を列挙して生成した構文識別情報一覧をユーザに出力する構文識別情報一覧出力ステップと、
    前記構文識別情報一覧の中から、いずれかの構文識別情報の選択をユーザから受け付けた場合に、前記構文識別情報一覧の中にある各構文識別情報に対応する構文と、前記選択された構文識別情報に対応する構文との間の類似度を算出する類似度算出ステップと、
    前記構文識別情報一覧の中にある各構文識別情報の中から、前記類似度算出ステップによって算出された類似度が予め設定されている所定の閾値以上の構文識別情報を特定する構文識別情報特定ステップと、
    前記構文識別情報特定ステップにより特定された構文識別情報を列挙して類似構文識別情報一覧を生成し、生成された類似構文識別情報一覧をユーザにより選択された構文識別情報と対応付けてユーザに出力する類似構文識別情報一覧出力ステップと、
    を含むバグ検出支援方法。
JP2008244848A 2008-09-24 2008-09-24 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法 Expired - Fee Related JP5125938B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008244848A JP5125938B2 (ja) 2008-09-24 2008-09-24 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
US12/543,975 US20100077382A1 (en) 2008-09-24 2009-08-19 Computer-readable recording medium string a bug detection support program, similar structure identification information list output program, bug detection support apparatus, and bug detection support method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008244848A JP5125938B2 (ja) 2008-09-24 2008-09-24 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法

Publications (2)

Publication Number Publication Date
JP2010079447A JP2010079447A (ja) 2010-04-08
JP5125938B2 true JP5125938B2 (ja) 2013-01-23

Family

ID=42038912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008244848A Expired - Fee Related JP5125938B2 (ja) 2008-09-24 2008-09-24 バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法

Country Status (2)

Country Link
US (1) US20100077382A1 (ja)
JP (1) JP5125938B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819632B2 (en) * 2010-07-09 2014-08-26 Salesforce.Com, Inc. Techniques for distributing information in a computer network related to a software anomaly
CN103492251B (zh) * 2011-04-22 2016-04-20 丰田自动车株式会社 车辆及车辆用控制方法
US8811726B2 (en) * 2011-06-02 2014-08-19 Kriegman-Belhumeur Vision Technologies, Llc Method and system for localizing parts of an object in an image for computer vision applications
JP2013003664A (ja) * 2011-06-13 2013-01-07 Sony Corp 情報処理装置および方法
US20140372988A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Using a Static Analysis for Configuring a Follow-On Dynamic Analysis for the Evaluation of Program Code
JP6121828B2 (ja) * 2013-07-26 2017-04-26 Necエンジニアリング株式会社 静的解析装置、静的解析方法、および、コンピュータ・プログラム
JP6369269B2 (ja) * 2014-10-01 2018-08-08 日本電気株式会社 検証支援装置、検証支援方法およびコンピュータプログラム
JP7664779B2 (ja) * 2021-07-12 2025-04-18 株式会社日立製作所 不具合解析支援装置及び不具合解析支援方法
CN115437934A (zh) * 2022-09-06 2022-12-06 平安壹钱包电子商务有限公司 程序中方法耗时的检测方法、装置及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5903757A (en) * 1992-09-10 1999-05-11 International Business Machines Corporation Monitoring and handling of exception conditions in computer system
JP3112623B2 (ja) * 1994-09-21 2000-11-27 三菱電機コントロールソフトウェア株式会社 プログラム生産支援装置
JP2001125783A (ja) * 1999-10-26 2001-05-11 Fujitsu Ltd 同種命令群抽出方法および同種命令群抽出装置
US6763517B2 (en) * 2001-02-12 2004-07-13 Sun Microsystems, Inc. Automated analysis of kernel and user core files including searching, ranking, and recommending patch files
CA2360650A1 (en) * 2001-10-31 2003-04-30 Ibm Canada Limited-Ibm Canada Limitee Algorithm to create and compare debug scenarios of a computer process
JP2003280903A (ja) * 2002-03-26 2003-10-03 Hitachi Software Eng Co Ltd ソースプログラム比較情報生成システム
JP2004062394A (ja) * 2002-07-26 2004-02-26 Toshiba Corp 類似修正箇所検索方法とそのためのプログラム
CN100351805C (zh) * 2002-12-26 2007-11-28 三菱电机株式会社 加工程序编制装置
US7503035B2 (en) * 2003-11-25 2009-03-10 Software Analysis And Forensic Engineering Corp. Software tool for detecting plagiarism in computer source code
US7606893B2 (en) * 2003-12-30 2009-10-20 Sap Ag System and method for integrated logging and tracing functions in an enterprise network
JP2005228241A (ja) * 2004-02-16 2005-08-25 Matsushita Electric Ind Co Ltd バグ管理方法および装置
US8171549B2 (en) * 2004-04-26 2012-05-01 Cybersoft, Inc. Apparatus, methods and articles of manufacture for intercepting, examining and controlling code, data, files and their transfer
US7493596B2 (en) * 2004-06-30 2009-02-17 International Business Machines Corporation Method, system and program product for determining java software code plagiarism and infringement
US7614043B2 (en) * 2005-08-26 2009-11-03 Microsoft Corporation Automated product defects analysis and reporting
US7840946B2 (en) * 2006-06-02 2010-11-23 International Business Machines Corporation System and method for matching a plurality of ordered sequences with applications to call stack analysis to identify known software problems
US8429628B2 (en) * 2007-12-28 2013-04-23 International Business Machines Corporation System and method for comparing partially decompiled software
US8171458B2 (en) * 2008-10-10 2012-05-01 International Business Machines Corporation Method for source-related risk detection and alert generation

Also Published As

Publication number Publication date
JP2010079447A (ja) 2010-04-08
US20100077382A1 (en) 2010-03-25

Similar Documents

Publication Publication Date Title
JP2010079447A (ja) バグ検出支援プログラム、類似構文識別情報一覧出力プログラム、バグ検出支援装置およびバグ検出支援方法
US20150169676A1 (en) Generating a Table of Contents for Unformatted Text
JP2017041171A (ja) テストシナリオ生成支援装置およびテストシナリオ生成支援方法
US9495638B2 (en) Scalable, rule-based processing
US12001325B2 (en) Test data generation apparatus, test data generation method and program
US20140033097A1 (en) Method and apparatus of testing a computer program
US20050183033A1 (en) Apparatus and methods for displaying dialog box text messages including languages having different reading orders
CN102598008A (zh) Windows内核改变搜索方法
JP5937245B1 (ja) 運用手順評価装置および運用手順評価プログラム
JP4888790B2 (ja) 契約定義関数検証装置、その方法及びそのプログラム
JP2010198522A (ja) ソースコード解析方法およびソースコード解析支援システム
JP2011013887A (ja) ソフトウェア開発支援装置
CN111079407B (zh) 对用户输入的内容进行解析的方法和装置
JP6048119B2 (ja) 異常原因推定プログラム、異常原因推定装置及び異常原因推定方法
JP4972970B2 (ja) ソースプログラム中の関数呼出し異常パターン検出プログラム
JP2016057715A (ja) 図形式プログラム解析装置
JP2009223803A (ja) 状態遷移表処理方法及び状態遷移表処理プログラム
JPWO2018116522A1 (ja) 判定装置、判定方法及び判定プログラム
JP2018084939A (ja) 修正支援プログラム、修正支援方法、修正支援装置、およびコンパイラ
JP2009053767A (ja) プログラム解析装置、および、プログラム解析方法
JP6437899B2 (ja) 文書校正支援装置、文書校正支援方法、および文書校正支援プログラム
JP2018028798A (ja) 情報処理装置及びプログラム
JP2017151594A (ja) 支援装置、支援方法及びプログラム
JP2008020972A (ja) ソフトウエア解析システム
JP4983027B2 (ja) チェックプログラム及びチェック方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120927

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121002

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121015

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151109

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees