JP2016018307A - 開発支援プログラム,開発支援方法及び開発支援装置 - Google Patents

開発支援プログラム,開発支援方法及び開発支援装置 Download PDF

Info

Publication number
JP2016018307A
JP2016018307A JP2014139439A JP2014139439A JP2016018307A JP 2016018307 A JP2016018307 A JP 2016018307A JP 2014139439 A JP2014139439 A JP 2014139439A JP 2014139439 A JP2014139439 A JP 2014139439A JP 2016018307 A JP2016018307 A JP 2016018307A
Authority
JP
Japan
Prior art keywords
source code
description
specifying information
line
development support
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.)
Granted
Application number
JP2014139439A
Other languages
English (en)
Other versions
JP6369177B2 (ja
Inventor
山村 太一
Taichi Yamamura
太一 山村
浩史 須永
Hiroshi Sunaga
浩史 須永
斎 齊藤
Hitoshi Saito
斎 齊藤
知朗 山本
Tomoaki Yamamoto
知朗 山本
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 JP2014139439A priority Critical patent/JP6369177B2/ja
Publication of JP2016018307A publication Critical patent/JP2016018307A/ja
Application granted granted Critical
Publication of JP6369177B2 publication Critical patent/JP6369177B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】改版されたソースコードの問題箇所から以前のソースコードの問題箇所と重複する箇所を有効に除外して出力する。
【解決手段】第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,第2の問題箇所が記述されているサブルーチンの先頭から少なくとも第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,第2のソースコードを解析して検出した第2の問題箇所の第2の記述特定情報が,第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,第2の問題箇所を,第2のソースコードの問題箇所としての出力の対象から除外する,処理をコンピュータに実行させるコンピュータ読み取り可能な開発支援プログラム。
【選択図】図3

Description

本発明は,開発支援プログラム,開発支援方法及び開発支援装置に関する。
開発支援プログラムは,コーディングされたソースコードを解析し,様々な観点で問題があると疑われる問題箇所を検出し,検出した問題箇所と疑われる問題点を記載する問題指摘文とを共に出力する。具体的には,開発支援プログラムは,コンピュータにより実行されることで,解析対象であるソースコードを実行することなく,ソースコードを構文解析し,文法ミス,変数の定義ミス,プログラム実行時に獲得したメモリ領域の解放処理の欠如,論理的ミスなどの問題が疑がわれる問題箇所を検出し,全ての問題箇所の行番号と,問題箇所として検出した理由である問題点を記述する問題指摘文とを共にリスト化した問題箇所出力データを生成する。
開発支援プログラムについては,例えば,以下の特許文献に記載されている。
開発支援プログラムが全ての問題箇所と問題指摘文を出力することは,最初にソースコードを開発する段階では,有用である。なぜなら,ソースコード上の問題が疑われる全ての箇所をプログラム開発者がチェックし,必要な修正を加えることができるからである。この場合,プログラム開発者は,問題が疑われる全ての問題箇所を問題指摘文を参考にして検討し,必要な場合に修正を加える。したがって,一部の問題箇所はチェックした結果問題が見いだされず,なんら修正を加えられない場合もある。
しかしながら,初版のまたは以前のソースコードを変更または追加して改版する段階では,以前のソースコードに残っている問題箇所は既に検討済みである。したがって,以前から残っている問題箇所は,改版のソースコードに対する問題箇所の出力データから除外することが求められる。除外することで,問題箇所リストに基づくチェック工程を短縮することができる。
以前のソースコードに対して出力された問題箇所を含む一連の処理を記述するソースコードのブロック,例えばサブルーチン,メソッド,関数(以下代表してサブルーチンと称する)と,改版のソースコードに対して出力された問題箇所を含むサブルーチンとが同じ場合は,問題箇所が重複している可能性が高い。そこで,開発支援プログラムは,改版のソースコードで検出した問題箇所を含むサブルーチンが,以前のソースコードで検出した問題箇所のサブルーチンと一致する場合は,同じ箇所に対する問題箇所と見なして,その問題箇所を改版のソースコードの問題箇所出力データから除外することを行う。
特開2004−126866号公報 特開平05−94343号公報
しかし,問題箇所を含むサブルーチンのソースコードが一致するか否かに基づいて重複する問題箇所を検出するためには,以前のソースコードを保持しておく必要があり,管理する資産量が多くなり,また,問題箇所を含むサブルーチンが一致するか否かの処理時間が長く,解析のスループットが悪くなる。さらに,改版されたソースコードには様々な変更が加えられるため,単にサブルーチンが一致するか否かで判断した場合,以前のソースコードに対する問題箇所に対して影響を与えないマイナーな変更しか加えられていない場合も,サブルーチンが不一致となり,実質的に重複する問題箇所を除外することができない。
そこで,実施の形態の第1の側面の目的は,改版されたソースコードの問題箇所から以前のソースコードの問題箇所と重複する箇所を除外して出力する開発支援プログラム,開発支援方法及び開発支援装置を提供することにある。
本実施の形態の第1の態様では,
第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,
前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,
前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する,
処理をコンピュータに実行させるコンピュータ読み取り可能な開発支援プログラムである。
第1の側面によれば,改版されたソースコードの問題箇所から以前のソースコードの問題箇所と重複する箇所を除外して出力する。
本実施の形態の開発支援プログラムを実行する開発支援装置の構成を示す図である。 第1のソースコードとそれを解析して生成された第1の問題箇所出力データ例と第2のソースコードとそれを解析して生成された第2の問題箇所出力データ例を示す図である。 本実施の形態における開発支援プログラムを利用した開発支援の工程を示すフローチャート図である。 本実施の形態における開発支援プログラムの工程S4,S5の処理のフローチャート図である。 図4の工程S44について説明する図である。 工程S44において問題箇所を含むサブルーチンを検出する方法について説明する図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第1の例を示す図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第2の例を示す図である。 図4の工程S44について説明する別の図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第3の例を示す図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第4の例を示す図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第5の例を示す図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第6の例を示す図である。 本実施の形態における開発支援プログラムの工程S4,S5の処理の第2のフローチャート図である。 本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第7の例を示す図である。
図1は,本実施の形態の開発支援プログラムを実行する開発支援装置の構成を示す図である。開発支援装置は,開発支援プログラム20と,開発支援プログラムを実行するCPU(Central Processing Unit)10と,開発支援プログラムやデータを一時的に記憶するRAM12と,入出力装置14とを有する。開発支援プログラム20は,例えばハードディスク等の大容量記憶装置に格納される。さらに,開発支援装置は,第1のソースコードを解析して生成された第1のソースコードの問題箇所出力データ22と,解析対象の第2のソースコード24とを大容量記憶装置に格納している。そして,開発支援装置は,開発支援プログラムをCPU10に実行させて,第2のソースコード24を解析し,第2のソースコードの問題箇所出力データ26を生成し,大容量記憶装置に格納する。第2のソースコードの問題箇所出力データ26は,入出力装置14から出力される。
図2は,第1のソースコードとそれを解析して生成された第1の問題箇所出力データ例と第2のソースコードとそれを解析して生成された第2の問題箇所出力データ例を示す図である。第2のソースコード24は,第1のソースコード21の一部を変更し,追加して更新された改版後のソースプログラムのコードである。
第1のソースコード21は,ファイル名a.cであり,1−3行のサブルーチンvoid func01と,5−9行のサブルーチンvoid func02とを有する。ここで,サブルーチンとは,一連の処理を記述するソースコードのブロックであり,メソッド,関数などを含む。なお,各サブルーチン内の処理の記述は省略されている。
図1の開発支援装置は,第1のソースコード21を解析して問題が疑われる問題箇所を検出し,第1の問題箇所出力データ22を生成する。図2の例では,第1のソースコード21のサブルーチンvoid func02内の7行目のif文の括弧内の記述「a+b>c」が,不等号の左辺に括弧がないため問題が疑われると判定され問題箇所として検出される。その結果,第1のソースコード21の第1の問題箇所出力データ22には,ファイル名FILEとして「a.c」,問題箇所を特定する問題箇所行番号30として「7行目」,問題が疑われる理由を記述する問題指摘文32として「if文に誤り」を有する問題箇所のデータが含まれている。なお,以降の図中,問題が疑われている箇所のソースコードには,理解を容易にするため,例えば「NG括弧がない」などのコメントを記述している。
一方,第2のソースコード24は,第1のソースコード21のサブルーチンvoid func01内に,3,4行目のコード41を追加して更新されている。その結果,サブルーチンvoid func02の行番号が7−11行に変更されているが,サブルーチンvoid func02内のソースコードに変更はない。
図1の開発支援装置は,第2のソースコード24を解析して問題が疑われる問題箇所を検出し,ファイル名FILEとして「a.c」,問題箇所を特定する問題箇所行番号30として「9行目」,問題が疑われる理由を記述する問題指摘文32として「if文に誤り」を有する問題箇所のデータが含まれる第2の問題箇所出力データ26を出力する。
しかしながら,第2のソースコード24は,第1のソースコード21内の1−3行目のサブルーチンvoid func01内に行番号3,4の追加コード41が追加されただけであるので,第1のソースコード21内の5−9行目のサブルーチンvoid func02と,第2のソースコード24内の7−11行目のサブルーチンvoid func02とは行番号は異なるが実質的には同じである。したがって,第2の問題箇所出力データ26の問題箇所は,第1の問題箇所データ22の問題箇所と問題箇所行番号30だけが異なるだけであり,問題箇所は実質的に同じであり重複している。
そこで,本実施の形態の開発支援プログラムは,上記のような第1のソースコードを解析して得た第1の問題箇所出力データ22と重複する問題箇所を,第2の問題箇所出力データ26から除外する処理を行う。
図3は,本実施の形態における開発支援プログラムを利用した開発支援の工程を示すフローチャート図である。まず,開発支援プログラムを利用するユーザは,第1のソースコード21を開発する(S1)。このソースコードの言語は,サブルーチン,C言語,JAVA(登録商標,Sun Microsystems社が開発したプログラミング言語),Visual Basic(Microsoft社のプログラミング言語)等のいずれのプログラミング言語でもよい。
次に,図1の開発支援装置は,第1のソースコード21を解析し,第1のソースコード21内の問題があると疑われる問題箇所を検出し,その問題箇所と問題指摘文を含む第1の問題箇所出力データ22を出力する(S2)。問題箇所出力データの具体例は,図2で説明したとおりである。
ユーザは,第1のソースコードの一部を変更,追加して更新し,改版された第2のソースコード24を開発する(S3)。改版された第2のソースコード24は,変更,追加が行われていない一部分では改版前の第1のソースコードと一致し,変更,追加が行われた他の部分では改版前の第1のソースコードと一致しない。
そして,開発支援装置は,第2のソースコード24を解析し,第2のソースコード24内の問題があると疑われる問題箇所を検出し,その問題箇所と問題指摘文を含む第2の問題箇所出力データ26_1を出力する(S4)。この第2のソースコードの問題箇所出力データ26_1は,変更,追加が行われていない一部分に対する問題箇所出力データ(旧問題箇所出力データ)と,変更,追加が行われた他の部分に対する問題箇所出力データ(新問題箇所出力データ)とを有する。したがって,旧問題箇所出力データは,第1のソースコードの問題箇所出力データと重複するデータであり,第1のソースコード21のデバッグ工程で原因がチェックされ問題がないことが確認されている問題箇所である。
そこで,開発支援装置は,第2のソースコードの問題箇所出力データの問題箇所26_1から,第1のソースコードの問題箇所出力データ22に含まれる問題箇所と重複する問題箇所を除外する(S5)。その結果,開発支援装置は,第2のソースコードに対する問題箇所出力データとして,第1のソースコードの問題箇所出力データの問題箇所を除外した,新たに問題の有無をチェックする必要がある問題箇所だけを含む問題箇所データを出力する。
本実施の形態の開発支援プログラムは,図3の工程S4とS5をコンピュータに実行させることで,第1のソースコードから更新された第2のソースコードの新規の問題箇所を含む問題箇所出力データを出力する。
図4は,本実施の形態における開発支援プログラムの工程S4,S5の処理のフローチャート図である。図4中,工程S41−S45は図3の工程S4に対応する処理であり,工程S51−S54は図3の工程S5に対応する処理である。
開発支援装置は,開発支援プログラムを実行して,第2のソースコードを構文解析し,第2のソースコード中の問題があると疑わしい問題箇所(第2の問題箇所)を検出する(S41)。問題があると疑われる問題箇所には,例えば,文法ミス,変数の定義ミス,プログラム実行時に獲得したメモリ領域の解放処理の欠如,論理的ミスなどの疑いが有る問題箇所が含まれる。
そして,開発支援装置は,開発支援プログラムを実行して,第2の問題箇所を検出すると(S42のYES),その第2の問題箇所を検出した理由を指摘する問題指摘文を生成する(S43)。さらに,開発支援装置は,開発支援プログラムを実行して,検出した第2の問題箇所が含まれるサブルーチンの先頭から少なくとも第2の問題箇所までのソースコードの記述を特定する第2の記述特定情報を生成する(S44)。
第2の記述特定情報は,望ましくは,第2の問題箇所が記述されているサブルーチンの先頭から少なくとも第2の問題箇所までの記述(特定対象の記述)のハッシュ値,符号化コードのいずれかであり,且つ望ましくは特定対象の記述よりもデータ量が少ない情報である。また,第2の記述特定情報は,第2の問題箇所が記述されているサブルーチンの先頭から少なくとも第2の問題箇所までのソースコードの記述そのものであってもよい。
そして,開発支援装置は,開発支援プログラムを実行して,上記の工程S41−S44を,第2のソースコードの記述全てに対して実行するまで繰り返す(S45)。その結果,開発支援装置は,図3の第2のソースコードの第2の問題箇所出力データ26_1を出力する。
図5は,図4の工程S44について説明する図である。図5には,第2のソースコード24の例として,1行目にサブルーチンvoid func02が示され,サブルーチンvoid func02内の4行目のif文が問題箇所として検出されるものとする。この場合,開発支援装置は,開発支援プログラムを実行して,サブルーチンvoid func02の先頭の1行目から4行目の問題箇所までの記述を問題箇所を特定する特定記述34_1とし,その特定記述34_1のハッシュ値を記述特定情報34として生成する。図5の例では,記述特定情報34は,「415fe51dbefb5・・・」である。記述特定情報34は,前述のとおり,特定記述34_1のハッシュ値以外に,符号化コードなどでもよく,さらに,記述そのもののデータでもよい。
図5には,第2のソースコード24に対して生成された第2の問題箇所出力データ26の例が示されている。第2の問題箇所出力データ26は,ファイル名FILE,問題箇所行30,問題指摘文32,記述特定情報34を有する。但し,記述特定情報34は必ずしも問題箇所出力データ26に含めなくても良く,ファイル名FILE,問題箇所行30,問題指摘文32に関連付けられていればよい。
図6は,工程S44において問題箇所を含むサブルーチンを検出する方法について説明する図である。開発支援装置は,開発支援プログラムを実行することで,BNF(Backus-Naur form)を用いた構文解析を行い,問題箇所を含むサブルーチンを検出する。図6には,サブルーチンの一種であるメソッドのBNF50を示す。BNF50によれば,メソッドの宣言文(MethodDeclaration)は,以下のような構文になることが規定されている。
MethodDeclaration : Type MethodName'(' FormalParameterListopt ')'{' BlockStatementsopt '}'
そこで,開発支援装置は,第2のソースコード24を構文解析し,ソースコード内の要素に分解し,上記のメソッドの宣言文と一致する要素群の記述を検出する。図5には,検出されたメソッドの宣言文の記述を要素に分解した表51が示される。このように,BNF定義によるメソッド宣言文と一致するソースコードの要素群が検出されると,そのソースコードがメソッド宣言文として判定される。このようなBNFを利用した構文解析を行うことで,問題箇所を含むサブルーチンを検出できる。
図4に戻り,開発支援プログラムの工程S5に対応する工程S51−S54ついて説明する。開発支援装置は,開発支援プログラムを実行することで,第2のソースコードの第2の問題箇所に対応する第2の記述特定情報34が,第1のソースコードを解析して検出した第1の問題箇所に対応する第1の記述特定情報のいずれかと一致するか否かをチェックする(S51)。そして,開発支援装置は,第2の問題箇所の第2の記述特定情報が,第1の問題箇所の第1の記述特定情報のいずれかと一致した場合(S52のYES),その一致した第2の記述特定情報に対応する第2の問題箇所を,第2の問題箇所出力データから除外する(S53)。そして,開発支援装置は,上記の工程S51−S53を全ての第2の問題箇所について実行する(S54)。
上記の工程S51を実行するためには,開発支援装置は,第1のソースコードを解析して第1の問題箇所を検出した際に,その第1の問題箇所に対応する第1の記述特定情報を生成しておく。この第1の記述特定情報を,第1の問題箇所に対応付けて出力データに含めておくことが望ましい。
記述特定情報により特定される記述を,サブルーチンの先頭から少なくとも問題箇所までの記述とした理由は,次のとおりである。すなわち,図2で示された問題箇所のif文は,サブルーチンvoid func02内に含まれ,その文法ミス,定義ミス,論理矛盾などは問題箇所のif文より前の記述に依存するのが一般的である。したがって,問題箇所を含むサブルーチンの先頭から最後までの記述を特定対象の記述として,第1のソースコードの問題箇所に対応する記述特定情報と比較する必要は必ずしもない。問題箇所を含むサブルーチンの先頭から最後までの記述を特定記述情報が特定する記述とすると,特定記述情報のデータ量が大きくなるだけでなく,問題箇所の後にその問題箇所に直接影響を与えない記述の変更や追加が行われた場合に,問題箇所が実質的に同じ問題点に対応するものであっても,第1のソースコードでは検出されなかった新たな問題箇所として検出されてしまう。
但し,問題箇所の記述が繰り返し制御記述(具体的にはループ文)内に含まれる場合は,記述特定情報として,問題箇所が記述されているサブルーチンの先頭からその問題箇所の記述を含む繰り返し制御記述(ループ文)の最後までの記述を特定する情報にする。ループ文の場合は,問題箇所の後の記述が問題箇所の記述に影響を与えるからである。このループ文の最後までの記述の場合であっても,サブルーチンの先頭から最後までの記述よりも特定対象の記述は少なくなり,さらに,ループ文の後に修正や追加が行われた場合でも実質t的に同じ問題箇所を検出できる。
[第1の第1,第2のソースコード例]
図7は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第1の例を示す図である。図7には,図3,図4の開発支援プログラムにより解析された第1,第2のソースコード21,24の例と,生成された第1,第2の問題箇所出力データ22,26の例が示されている。この例において,第2の問題箇所出力データ26から第1の問題箇所出力データ22と重複する問題箇所を除外する処理について説明する。
第1のソースコード21は,問題が疑われる問題箇所として,7行目のif文と,12行目のif文とを有している。そして,7行目のif文は5行目のサブルーチンvoid func02内の記述であり,12行目のif文は10行目のサブルーチンvoid func03内の記述である。
そこで,開発支援装置は,開発支援プログラムを実行することで,7行目のif文に対する第1の問題箇所出力データ22_1として,そのファイル名「a.c」,問題箇所行「7行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第1のソースコード21内の7行目のif文を含むサブルーチンvoid func02の先頭の5行目から7行目の問題箇所までの記述34_1のハッシュ値である。
また,開発支援装置は,開発支援プログラムを実行することで,12行目のif文に対する第1の問題箇所出力データ22_2として,そのファイル名「a.c」,問題箇所行「12行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「28ac3741de65・・・」を生成する。この記述特定情報は,第1のソースコード21内の12行目のif文を含むサブルーチンvoid func03の先頭の10行目から12行目の問題箇所までの記述34_2のハッシュ値である。
一方,第2のソースコード24には,第1のソースコード21に対して,3,4行目の記述42と14行目の記述42が追加されている。それに伴い,第2のソースコード24は,問題が疑われる問題箇所として,9行目のif文と,15行目のif文とを有している。そして,9行目のif文は7行目のサブルーチンvoid func02内の記述であり,15行目のif文は12行目のサブルーチンvoid func03内の記述である。
そこで,開発支援装置は,開発支援プログラムを実行することで,9行目のif文に対する第2の問題箇所出力データ26_1として,そのファイル名「a.c」,問題箇所行「9行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第2のソースコード24内の9行目のif文を含むサブルーチンvoid func02の先頭の7行目から9行目の問題箇所までの記述34_3のハッシュ値である。
また,開発支援装置は,開発支援プログラムを実行することで,15行目のif文に対する第2の問題箇所出力データ26_2として,そのファイル名「a.c」,問題箇所行「15行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「13fe28dd5690・・・」を生成する。この記述特定情報は,第2のソースコード24内の15行目のif文を含むサブルーチンvoid func03の先頭の12行目から15行目の問題箇所までの記述34_3のハッシュ値である。
そこで,開発支援装置は,開発支援プログラムを実行して,図4のS51−S54の重複する問題箇所を除外する処理を行う。すなわち,開発支援装置は,第2の問題箇所出力データ26_1の記述特定情報が,第1の問題箇所出力データ22_1,22_2のいずれかの記述特定情報と一致するか否かをチェックする(S51)。図7の例では,第2の問題箇所出力データ26_1の記述特定情報「415fe51dbefb5・・・」が,第1の問題箇所出力データ22_1の記述特定情報と一致することが検出される。その結果,第2の問題箇所出力データ26から9行目のif文に対する第2の問題箇所出力データ26_1を除外する(S53)。つまり,第2の問題箇所出力データ26_1は,第1の問題箇所出力データ22_1と行番号は異なるが,記述特定情報が一致するので,第2の問題箇所出力データ26_1と第1の問題箇所出力データ22_1は,同じ対象のif文を問題箇所として検出した出力データであることが理解できる。
次に,開発支援装置は,第2の問題箇所出力データ26_2の記述特定情報が,第1の問題箇所出力データ22_1,22_2のいずれかの記述特定情報と一致するか否かをチェックする(S51)。図7の例では,第2の問題箇所出力データ26_2の記述特定情報「13fe28dd5690・・・」が,第1の問題箇所出力データ22_2の記述特定情報と不一致であることが検出される。すなわち,第2のソースコード24は,第1のソースコード21に14行目の記述42が追加されているので,その14行目の記述42が15行目のif文に影響を与える可能性があり,15行目のif文に対する問題箇所は除外すべきではない。そこで,第2の問題箇所出力データ26_2については,記述特定情報が不一致になり,その結果,15行目のif文に対する第2の問題箇所出力データ26_2が除外されることなく第2の問題箇所出力データ26に含められる。このように,第2のソースコード24に対する問題箇所に影響を与える14行目の記述42の存在が,記述特定情報の照合での不一致判定により確認され,必要な問題箇所が除外されることを抑制している。
[第2の第1,第2のソースコード例]
図8は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第2の例を示す図である。図8には,図3,図4の開発支援プログラムにより解析された第1,第2のソースコードの例と,生成された第1,第2の問題箇所出力データの例が示されている。この例において,第2の問題箇所出力データから第1の問題箇所出力データと重複する問題箇所を除外する処理について説明する。
図8の例では,第2のソースコード24には,第1のソースコード21に対して6,7行目の記述43が追加されている。しかし,この追加の記述43は,4行目のif文の後の記述であり,4行目のif文の問題点に影響を与えない。
この場合,第1のソースコード21に対して,4行目のif文に対する第1の問題指摘出力データ22_1が生成され,その4行目の問題箇所の記述を含む特定記述34_1のハッシュ値である記述特定情報「415fe51dbefb5・・・」が生成されている。さらに,第2のソースコード24に対して,4行目のif文に対する第2の問題指摘出力データ26_1が生成され,その4行目の問題箇所の記述を含む特定記述34_3のハッシュ値である記述特定情報「415fe51dbefb5・・・」が生成されている。第1,第2の問題指摘出力データの問題箇所を含むサブルーチンvoid func02の先頭から問題箇所までの特定記述34_1,34_3が一致しているので,それらのハッシュ値である記述特定情報も一致している。その結果,第2の問題箇所出力データ26_2は第2の問題箇所出力データ26から除外される。この例では,第1,第2の問題箇所出力データ22_1,26_1はファイル名,行番号,問題指摘文,記述特定情報は全て一致しているので,当然に除外される。
[問題箇所がループ内に含まれる例]
図9は,図4の工程S44について説明する別の図である。図9には,第2のソースコード24の例として,1行目にサブルーチンvoid func02が示され,サブルーチンvoid func02内の4行目のif文が問題箇所として検出される例が示されている。この例では,4行目のif文の問題箇所の記述が,3行目〜5行目のfor文からなるループ内の記述されている。
この場合,開発支援装置は,開発支援プログラムを実行して,サブルーチンvoid func02の先頭の1行目から4行目の問題箇所を含むループの最終行の7行目までの記述を問題箇所を特定する特定記述34_5とし,その特定記述34_5のハッシュ値を記述特定情報34として生成する。
図9には,第2のソースコード24に対して生成された第2の問題箇所出力データ26の例が示されている。第2の問題箇所出力データ26は,ファイル名FILE,問題箇所行30,問題指摘文32に加えて,記述特定情報34を有する。または,記述特定情報34は,ファイル名FILE,問題箇所行30,問題指摘文32に関連付けられている。前述のとおり,問題箇所がループの中にある場合は,問題箇所の後にある追加または変更された記述であっても,ループ内の記述は,問題箇所に影響を及ぼすおそれがある。したがって,記述特定情報34により特定される記述は,問題箇所を含むサブルーチンの先頭から問題箇所を含むループの最後の行までとすることが望ましい。
[第3の第1,第2のソースコード例]
図10は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第3の例を示す図である。図10には,図3,図4の開発支援プログラムにより解析された第1,第2のソースコード21,24の例と,生成された第1,第2の問題箇所出力データ22,26の例が示されている。この例は,問題箇所がループ内に記述されている例である。この例において,第2の問題箇所出力データから第1の問題箇所出力データと重複する問題箇所を除外する処理について説明する。
第1のソースコード21は,問題が疑われる問題箇所として,8行目のif文と,16行目のif文とを有している。そして,7行目のif文は5行目のサブルーチンvoid func02内の記述であり7行目〜10行目のループ内の記述であり,12行目のif文は10行目のサブルーチンvoid func03内の記述であり15行目〜18行目のループ内の記述である。
そこで,開発支援装置は,開発支援プログラムを実行することで,8行目のif文に対する第1の問題箇所出力データ22_3として,そのファイル名「a.c」,問題箇所行「8行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第1のソースコード21内の8行目のif文を含むサブルーチンvoid func02の先頭の5行目からループ文の最後の10行目までの記述34_5のハッシュ値である。
また,開発支援装置は,開発支援プログラムを実行することで,16行目のif文に対する第1の問題箇所出力データ22_4として,そのファイル名「a.c」,問題箇所行「16行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「28ac3741de65・・・」を生成する。この記述特定情報は,第1のソースコード21内の16行目のif文を含むサブルーチンvoid func03の先頭の13行目からループ文の最後の18行目までの記述34_6のハッシュ値である。
なお,第1の問題箇所出力データ22_3,22_4内の記述特定情報のハッシュ値は,簡単のために,図7の例と同じになっている。
一方,第2のソースコード24は,第1のソースコード21に対して,3,4行目の記述44と20行目の記述44を追加して生成されている。それに伴い,第2のソースコード24は,10行目のif文と,18行目のif文とを,問題が疑われる問題箇所として有している。そして,10行目のif文は7行目のサブルーチンvoid func02内の記述であり9行目〜12行目のループ文内の記述であり,18行目のif文は15行目のサブルーチンvoid func03内の記述であり17−21行目のループ文内にある。
そこで,開発支援装置は,開発支援プログラムを実行することで,10行目のif文に対する第2の問題箇所出力データ26_3として,そのファイル名「a.c」,問題箇所行「10行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第2のソースコード24内の10行目のif文を含むサブルーチンvoid func02の先頭の7行目からループ文の最後の12行目までの記述34_7のハッシュ値である。
また,開発支援装置は,開発支援プログラムを実行することで,18行目のif文に対する第2の問題箇所出力データ26_4として,そのファイル名「a.c」,問題箇所行「18行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「13fe28dd5690・・・」を生成する。この記述特定情報は,第2のソースコード24内の18行目のif文を含むサブルーチンvoid func03の先頭の15行目からループ文の最後の21行目までの記述34_8のハッシュ値である。
そこで,開発支援装置は,開発支援プログラムを実行して,図4のS51−S54の重複する問題箇所を除外する処理を行う。すなわち,開発支援装置は,第2の問題箇所出力データ26_3の記述特定情報が,第1の問題箇所出力データ22_3,22_4のいずれかの記述特定情報と一致するか否かをチェックする(S51)。図10の例では,第2の問題箇所出力データ26_3の記述特定情報「415fe51dbefb5・・・」が,第1の問題箇所出力データ22_3の記述特定情報と一致することが検出される。その結果,第2の問題箇所出力データ26から10行目のif文に対する第2の問題箇所出力データ26_3を除外する(S53)。つまり,第2の問題箇所出力データ26_3は,第1の問題箇所出力データ22_3と行番号は異なるが,記述特定情報は一致するので,第2の問題箇所出力データ26_3と第1の問題箇所出力データ22_3は,同じ対象のif文を問題箇所として検出したことが理解できる。
次に,開発支援装置は,第2の問題箇所出力データ26_4の記述特定情報が,第1の問題箇所出力データ22_3,22_4のいずれかの記述特定情報と一致するか否かをチェックする(S51)。図10の例では,第2の問題箇所出力データ26_4の記述特定情報「13fe28dd5690・・・」が,第1の問題箇所出力データ22_4の記述特定情報と不一致であることが検出される。すなわち,第2のソースコード24には,第1のソースコード21に20行目の記述45が追加され,その記述45は18行目のif文の問題箇所と同じループ文内にあるので,その記述45が18行目のif文に影響を与える可能性があり,18行目のif文に対する問題箇所は除外すべきではない。そこで,第2の問題箇所出力データ26_4については,記述特定情報が不一致になり,その結果,18行目のif文に対する第2の問題箇所出力データ26_4は除外されることなく第2の問題箇所出力データ26に含められる。このように,第2のソースコード24に対する問題箇所に影響を与える20行目の記述45の存在が,記述特定情報の照合による不一致判定により確認され,必要な問題箇所が除外されることを抑制している。
[第4の第1,第2のソースコード例]
図11は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第4の例を示す図である。図11には,図3,図4の開発支援プログラムにより解析された第1,第2のソースコード21,24の例と,生成された第1,第2の問題箇所出力データ22,26の例が示されている。この例は,問題箇所の対象記述が同じでも異なるサブルーチン内の場合は,異なる問題箇所として除外されない例である。この例において,第2の問題箇所出力データから第1の問題箇所出力データと重複する問題箇所を除外する処理について説明する。
第1のソースコード21は,問題が疑われる問題箇所として,4行目のif文を有している。
そこで,開発支援装置は,開発支援プログラムを実行することで,4行目のif文に対する第1の問題箇所出力データ22_5として,そのファイル名「a.c」,問題箇所行「8行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第1のソースコード21内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の4行目のif文までの記述34_9のハッシュ値である。
一方,第2のソースコード24は,第1のソースコード21に対して,1〜6行目のサブルーチンvoid func02を追加して生成されている。それに伴い,第2のソースコード24は,4行目のif文と,10行目のif文とを,問題が疑われる問題箇所として有している。
そこで,開発支援装置は,開発支援プログラムを実行することで,4行目のif文に対する第2の問題箇所出力データ26_5として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第2のソースコード24内の4行目のif文を含むサブルーチンvoid func02の先頭の1行目からif文の4行目までの記述34_10のハッシュ値である。
また,開発支援装置は,開発支援プログラムを実行することで,10行目のif文に対する第2の問題箇所出力データ26_6として,そのファイル名「a.c」,問題箇所行「10行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第2のソースコード24内の10行目のif文を含むサブルーチンvoid func01の先頭の7行目からif文の10行目までの記述34_11のハッシュ値である。
そこで,開発支援装置は,開発支援プログラムを実行して,図4のS51−S54の重複する問題箇所を除外する処理を行う。すなわち,開発支援装置は,第2の問題箇所出力データ26_5の記述特定情報が,第1の問題箇所出力データ22_5の記述特定情報と一致するか否かをチェックする(S51)。図11の例では,第2の問題箇所出力データ26_5の記述特定情報「78ab09feffea・・・」が,第1の問題箇所出力データ22_5の記述特定情報と不一致であることが検出される。その結果,第2の問題箇所出力データ26から4行目のif文に対する第2の問題箇所出力データ26_5は除外しない。つまり,第2の問題箇所出力データ26_5は,第1の問題箇所出力データ22_5と行番号は同じであるが,記述特定情報は不一致であるので,第2の問題箇所出力データ26_5と第1の問題箇所出力データ22_5とは,異なる対象のif文を問題箇所として検出したことが理解できる。
次に,開発支援装置は,第2の問題箇所出力データ26_6の記述特定情報が,第1の問題箇所出力データ22_5の記述特定情報と一致するか否かをチェックする(S51)。図11の例では,第2の問題箇所出力データ26_6の記述特定情報「415fe51dbefb5・・・」が,第1の問題箇所出力データ22_5の記述特定情報と一致することが検出される。すなわち,第2のソースコード24には,第1のソースコード21に対して1〜6行目のサブルーチンvoid func02の記述が追加され,第1のソースコード21内の1〜6行のサブルーチンvoid func01の記述は,7〜12行に移動している。そこで,第2の問題箇所出力データ26_6については,記述特定情報が一致して,その結果,10行目のif文に対する第2の問題箇所出力データ26_6は除外されて第2の問題箇所出力データ26には含められない。
[第5の第1,第2のソースコード例]
図12は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第5の例を示す図である。第1のソースコード21は,4行目のif文を問題が疑われる問題箇所として有している。
開発支援装置は,開発支援プログラムを実行することで,第1のソースコード21に対して,4行目のif文に対する第1の問題箇所出力データ22_6として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第1のソースコード21内の4行目のif文を含む1行目のサブルーチンvoid func01の先頭から問題箇所の4行目までの記述34_12のハッシュ値である。
一方,第2のソースコード24は,第1のソースコード21に08−10行目の記述46を追加している。そして,第2のソースコード24に対して,4行目のif文と,8行目のif文とが問題箇所として検出される。
すなわち,開発支援装置は,開発支援プログラムを実行することで,第2のソースコード26に対して,4行目のif文に対する第2の問題箇所出力データ26_7として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第2のソースコード26内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の4行目までの記述34_13のハッシュ値である。
さらに,開発支援装置は,開発支援プログラムを実行することで,第2のソースコード24に対し,8行目のif文に対する第2の問題箇所出力データ26_8として,そのファイル名「a.c」,問題箇所行「8行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第2のソースコード24内の8行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の8行目までの記述34_14のハッシュ値である。
そこで,開発支援装置は,開発支援プログラムを実行して,図4のS51−S54の重複する問題箇所を除外する処理を行う。その結果,第2の問題箇所出力データ26_7の記述特定情報「78ab09feffea・・・」は,第1の問題箇所出力データ22_6の記述特定情報「78ab09feffea・・・」と一致し,除外される。また,第2の問題箇所出力データ26_8の記述特定情報「415fe51dbefb5・・・」は,第1の問題箇所出力データ22_6の記述特定情報「78ab09feffea・・・」と不一致となり,除外されない。
このように,第2のソースコード24の8−10行目に記述46が追加されても,4行目のif文の記述特定情報が,第1のソースコード21の4行目のif文の記述特定情報と一致し,第2の問題箇所出力データ26から除外される。そして,第2のソースコード24に追加された記述46内のif文に対する問題箇所出力データ26_8は,第2の問題箇所データ26から除外されない。
[第6の第1,第2のソースコード例]
図13は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第6の例を示す図である。第1のソースコード21は,4行目のif文と7行目のif文を問題が疑われる問題箇所として有している。
開発支援装置は,開発支援プログラムを実行することで,第1のソースコード21に対して,4行目のif文に対する第1の問題箇所出力データ22_7として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第1のソースコード21内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の4行目までの記述34_15のハッシュ値である。
同様に,開発支援装置は,第1のソースコード21に対して,7行目のif文に対する第1の問題箇所出力データ22_8として,そのファイル名「a.c」,問題箇所行「7行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「31b409faf0e0・・・」を生成する。この記述特定情報は,第1のソースコード21内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の7行目までの記述34_16のハッシュ値である。
一方,第2のソースコード24は,第1のソースコード21に07−08行目の記述47を追加している。そして,第2のソースコード24に対して,4行目のif文と9行目のif文とが問題箇所として検出される。
開発支援装置は,開発支援プログラムを実行することで,第2のソースコード24に対して,4行目のif文に対する第2の問題箇所出力データ26_9として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第2のソースコード24内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の4行目までの記述34_17のハッシュ値である。
さらに,開発支援装置は,開発支援プログラムを実行することで,第2のソースコード24に対し,9行目のif文に対する第2の問題箇所出力データ26_10として,そのファイル名「a.c」,問題箇所行「9行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「415fe51dbefb5・・・」を生成する。この記述特定情報は,第2のソースコード24内の9行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の9行目までの記述34_14のハッシュ値である。
そこで,開発支援装置は,開発支援プログラムを実行して,図4のS51−S54の重複する問題箇所を除外する処理を行う。その結果,第2の問題箇所出力データ26_9の記述特定情報「78ab09feffea・・・」は,第1の問題箇所出力データ22_7の記述特定情報「78ab09feffea・・・」と一致し,除外される。また,第2の問題箇所出力データ26_10の記述特定情報「415fe51dbefb5・・・」は,第1の問題箇所出力データ22_8の記述特定情報「78ab09feffea・・・」と不一致となり,除外されない。
このように,第2のソースコード24の7−8行目に記述47が問題箇所の9行目より前に追加されたため,9行目のif文の記述特定情報が,第1のソースコード21の7行目のif文の記述特定情報と不一致になり,第2の問題箇所出力データ26から除外されない。
図14は,本実施の形態における開発支援プログラムの工程S4,S5の処理の第2のフローチャート図である。図14は,図4のフローチャートの工程S51の代わりに工程S51_Bを有する。それ以外の工程は,図4と同じである。
図14のフローチャート図によれば,工程S51_Bにおいて,開発支援装置が,開発支援プログラムを実行して,第2の問題箇所に対応する第2の記述特定情報に加えて問題指摘文の両方が,第1のソースコードを解析して検出した第1の問題箇所に対応する第1の記述特定情報と問題指摘文の両方のいずれかと一致するかチェックする。そして,一致した場合は,その第2の問題箇所を第2の問題箇所出力データから除外する。
すなわち,図14の処理によれば,第2のソースコードを解析して得た問題箇所群から重複する問題箇所を除外する際に,記述特定情報が一致することに加えて問題指摘文が一致することもチェックする。このようにすることで次のような状況の場合に,新たに検出された問題箇所が除外されることを防止できる。
例えば,開発支援プログラムによる問題箇所検出項目の設定を第1のソースコードを解析した時と異なる設定に変更した場合に,第2のソースコードを解析して得られた問題箇所と問題指摘文が,同じif文に対して新たに検出される場合がある。そのような場合は,新たに検出された問題箇所と問題指摘文の出力を除外すべきでない。このような場合に,図14の処理を行って除外すべき問題箇所を判定すれば,新たに検出された問題箇所と問題指摘文を除外せずに第2の問題箇所出力データに残すことができる。
図14の工程S51_Bでは,問題箇所に対応する記述特定情報と問題指摘文とが一致するか否かの判定を行ったが,さらに,問題箇所に対応する記述特定情報と問題指摘文とファイル名とが一致するか否かの判定を行うようにしても良い。その場合,同じファイル内の同じ問題箇所,同じ問題指摘文,そして同じ記述特定情報とが一致する場合に,第2の問題箇所出力データから除外される。
[第7の第1,第2のソースコード例]
図15は,本実施の形態における第1,第2のソースコードとその第1,第2の問題箇所出力データの第7の例を示す図である。この例は,図14のフローチャートにしたがって第2の問題箇所出力データから新規に検出された問題箇所と問題指摘文のデータを除外することが防止される。
第1のソースコード21は,4行目のif文を問題が疑われる問題箇所として有している。開発支援装置は,開発支援プログラムを実行することで,第1のソースコード21に対して,4行目のif文に対する第1の問題箇所出力データ22_9として,そのファイル名「a.c」,問題箇所行「4行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第1のソースコード21内の4行目のif文を含むサブルーチンvoid func01の先頭の1行目から問題箇所の4行目までの記述34_19のハッシュ値である。
一方,第2のソースコード24は,第1のソースコード21に1,2,3,9行目の記述48を追加している。そして,第2のソースコード24に対して,7行目のif文が問題箇所として検出される。
開発支援装置は,第1のソースコードを解析した時の検出項目の設定に,「変数の定義ミス」を追加する変更を行った開発支援プログラムを実行する。設定の変更は第2のソースコード開発者により行われる。開発支援装置は,第2のソースコード24に対して,7行目のif文に対する第2の問題箇所出力データ26_11として,そのファイル名「a.c」,問題箇所行「7行目」,問題指摘文「if文に誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。この記述特定情報は,第2のソースコード24内の7行目のif文を含むサブルーチンvoid func01の先頭の4行目から問題箇所の7行目までの記述34_20のハッシュ値である。
さらに,開発支援装置は,第2のソースコード24に対して,7行目のif文の変数の定義に問題の可能性があることを理由に,第2の問題箇所出力データ26_12として,そのファイル名「a.c」,問題箇所行「7行目」。問題指摘文「変数aに誤り」を含むデータを生成し,それに対応する記述特定情報「78ab09feffea・・・」を生成する。問題箇所は,上記と同じ7行目のif文であるが,この問題の原因はif文の変数aの誤りの可能性である。したがって,記述特定情報は,第2のソースコード24内の同じ7行目のif文を含むサブルーチンvoid func01の先頭の4行目から問題箇所の7行目までの記述34_20のハッシュ値であり,上記の記述特定情報と同じである。第2のソースコード24では,4行目のサブルーチンvoid func01の括弧内の変数は,変数aが通常のビット数の整数であるのに対して,変数b,cは,短いビット数の整数に定義されている。そのため,変数aの整数の精度が変数b,cの整数の精度と正号しないことを理由に,上記のような問題指摘文「変数aに誤り」が検出されている。
そこで,開発支援装置は,開発支援プログラムを実行して,図14のS51−S54の重複する問題箇所を除外する処理を行う。その結果,第2の問題箇所出力データ26_11の記述特定情報「78ab09feffe・・・a」は,第1の問題箇所出力データ22_9の記述特定情報「78ab09feffea・・・」と一致し,さらに問題指摘文「if文に誤り」も一致し,除外される。ところが,第2の問題箇所出力データ26_12の記述特定情報「78ab09feffea・・・」は,第1の問題箇所出力データ22_9の記述特定情報「78ab09feffea・・・」と一致するが,問題指摘文「変数aに誤り」が不一致となり,第2の問題箇所出力データからは除外されない。
このように,第2のソースコード24の分析の設定を変更したことで初めて検出される問題箇所と問題指摘文は,たとえ同じ問題箇所に対する問題箇所出力データであっても,問題指摘文が異なる,つまり問題視した理由が異なる場合は,新たな問題箇所として第2の問題箇所出力データから除外されることはない。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,
前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,
前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する,
処理をコンピュータに実行させるコンピュータ読み取り可能な開発支援プログラム。
(付記2)
付記1において,
前記第2の記述特定情報を生成する工程において,前記第2の問題箇所の記述が繰り返し制御記述内に含まれる場合は,前記第2の記述特定情報として,前記第2の問題箇所が記述されているサブルーチンの先頭から前記第2の問題箇所の記述を含む前記繰り返し制御記述の最後までの記述を特定する記述特定情報を生成する,開発支援プログラム。
(付記3)
付記1または2において,
さらに,
前記第2の問題箇所の問題を記述する第2の問題指摘文を生成し,
前記出力として,前記第2の問題箇所と前記第2の問題指摘文とを出力し,
前記出力の対象から除外する工程において,前記第2の記述特定情報が前記第1の記述特定情報と一致することに加えて,前記第2の問題箇所の第2の問題指摘文と前記第1の問題箇所に対応する第1の問題指摘文とが一致する場合に,前記第2の問題箇所を,前記出力の対象から除外する,開発支援プログラム。
(付記4)
付記3において,
前記出力の対象から除外する工程において,前記第2の記述特定情報が前記第1の記述特定情報と一致することと,前記第2の問題指摘文と前記第1の問題指摘文とが一致することに加えて,前記第2のソースコードのファイル名と前記第2のソースコードのファイル名が一致する場合に,前記第2の問題箇所を,前記出力の対象から除外する,開発支援プログラム。
(付記5)
付記1または2において,
前記第1,第2の記述特定情報は,特定対象であるソースコードの記述のハッシュ値,符号化コードのいずれかであり,且つ前記特定対象であるソースコードの記述よりもデータ量が少ない,開発支援プログラム。
(付記6)
付記1または2において,
前記出力の対象から除外する工程において,前記第2の記述特定情報が,前記第1のソースコードを解析して検出された複数の第1の問題箇所に対応する第1の記述特定情報のいずれかと一致する場合に,当該一致した第2の問題箇所を,前記出力の対象から除外し,前記第2の記述特定情報が,前記複数の第1の問題箇所に対応する第1の記述特定情報の全てと不一致の場合に,前記出力の対象に含める,開発支援プログラム。
(付記7)
付記1または2において,
前記サブルーチンは,一連の処理を記述するソースコードのブロックであり,メソッド,関数を含む,開発支援プログラム。
(付記8)
付記1または2において,
前記問題箇所を検出する工程において,設定された解析対象に基づいて前記ソースコードに問題がある場合に問題箇所として検出する,開発支援プログラム。
(付記9)
第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,
前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,
前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する,
処理を有する開発支援方法。
(付記10)
付記9において,
前記第2の記述特定情報を生成する工程において,前記第2の問題箇所の記述が繰り返し制御記述内に含まれる場合は,前記第2の記述特定情報として,前記第2の問題箇所が記述されているサブルーチンの先頭から前記第2の問題箇所の記述を含む前記繰り返し制御記述の最後までの記述を特定する記述特定情報を生成する,開発支援方法。
(付記11)
第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出する手段と,
前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成する手段と,
前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する手段と,を有する開発支援装置。
20:開発支援プログラム
21:第1のソースコード
22:第1のソースコードの問題箇所出力データ
24:第2のソースコード
26:第2のソースコードの問題箇所出力データ
30:問題箇所
32:問題指摘文
34:記述特定情報

Claims (8)

  1. 第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,
    前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,
    前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する,
    処理をコンピュータに実行させるコンピュータ読み取り可能な開発支援プログラム。
  2. 請求項1において,
    前記第2の記述特定情報を生成する工程において,前記第2の問題箇所の記述が繰り返し制御記述内に含まれる場合は,前記第2の記述特定情報として,前記第2の問題箇所が記述されているサブルーチンの先頭から前記第2の問題箇所の記述を含む前記繰り返し制御記述の最後までの記述を特定する記述特定情報を生成する,開発支援プログラム。
  3. 請求項1または2において,
    さらに,
    前記第2の問題箇所の問題を記述する第2の問題指摘文を生成し,
    前記出力として,前記第2の問題箇所と前記第2の問題指摘文とを出力し,
    前記出力の対象から除外する工程において,前記第2の記述特定情報が前記第1の記述特定情報と一致することに加えて,前記第2の問題箇所の第2の問題指摘文と前記第1の問題箇所に対応する第1の問題指摘文とが一致する場合に,前記第2の問題箇所を,前記出力の対象から除外する,開発支援プログラム。
  4. 請求項3において,
    前記出力の対象から除外する工程において,前記第2の記述特定情報が前記第1の記述特定情報と一致することと,前記第2の問題指摘文と前記第1の問題指摘文とが一致することに加えて,前記第2のソースコードのファイル名と前記第2のソースコードのファイル名が一致する場合に,前記第2の問題箇所を,前記出力の対象から除外する,開発支援プログラム。
  5. 請求項1または2において,
    前記第1,第2の記述特定情報は,特定対象であるソースコードの記述のハッシュ値,符号化コードのいずれかであり,且つ前記特定対象であるソースコードの記述よりもデータ量が少ない,開発支援プログラム。
  6. 請求項1または2において,
    前記出力の対象から除外する工程において,前記第2の記述特定情報が,前記第1のソースコードを解析して検出された複数の第1の問題箇所に対応する第1の記述特定情報のいずれかと一致する場合に,当該一致した第2の問題箇所を,前記出力の対象から除外し,前記第2の記述特定情報が,前記複数の第1の問題箇所に対応する第1の記述特定情報の全てと不一致の場合に,前記出力の対象に含める,開発支援プログラム。
  7. 第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出し,
    前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成し,
    前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する,
    処理を有する開発支援方法。
  8. 第1のソースコードを更新して生成された第2のソースコードを解析して第2の問題箇所を検出する手段と,
    前記第2の問題箇所が記述されているサブルーチンの先頭から少なくとも前記第2の問題箇所までの記述を特定する第2の記述特定情報を生成する手段と,
    前記第2のソースコードを解析して検出した前記第2の問題箇所に対応する前記第2の記述特定情報が,前記第1のソースコードを解析して検出された第1の問題箇所に対応する第1の記述特定情報と一致する場合に,前記第2の問題箇所を,前記第2のソースコードの問題箇所としての出力の対象から除外する手段と,を有する開発支援装置。
JP2014139439A 2014-07-07 2014-07-07 開発支援プログラム,開発支援方法及び開発支援装置 Expired - Fee Related JP6369177B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014139439A JP6369177B2 (ja) 2014-07-07 2014-07-07 開発支援プログラム,開発支援方法及び開発支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014139439A JP6369177B2 (ja) 2014-07-07 2014-07-07 開発支援プログラム,開発支援方法及び開発支援装置

Publications (2)

Publication Number Publication Date
JP2016018307A true JP2016018307A (ja) 2016-02-01
JP6369177B2 JP6369177B2 (ja) 2018-08-08

Family

ID=55233509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014139439A Expired - Fee Related JP6369177B2 (ja) 2014-07-07 2014-07-07 開発支援プログラム,開発支援方法及び開発支援装置

Country Status (1)

Country Link
JP (1) JP6369177B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017151594A (ja) * 2016-02-23 2017-08-31 日本電気株式会社 支援装置、支援方法及びプログラム
JP2021002137A (ja) * 2019-06-20 2021-01-07 株式会社日立社会情報サービス 欠陥検出装置、欠陥検出方法、及び欠陥検出プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004126866A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP2014010699A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 更新判定プログラムおよび更新判定装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004126866A (ja) * 2002-10-01 2004-04-22 Mitsubishi Electric Corp 記述出力抑制プログラム解析装置及び記述出力抑制プログラム解析方法
JP2013045307A (ja) * 2011-08-24 2013-03-04 Nec Corp 静的解析システム、静的解析結果表示方法及びプログラム
JP2014010699A (ja) * 2012-06-29 2014-01-20 Fujitsu Ltd 更新判定プログラムおよび更新判定装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017151594A (ja) * 2016-02-23 2017-08-31 日本電気株式会社 支援装置、支援方法及びプログラム
JP2021002137A (ja) * 2019-06-20 2021-01-07 株式会社日立社会情報サービス 欠陥検出装置、欠陥検出方法、及び欠陥検出プログラム
JP7261101B2 (ja) 2019-06-20 2023-04-19 株式会社日立社会情報サービス 欠陥検出装置、欠陥検出方法、及び欠陥検出プログラム

Also Published As

Publication number Publication date
JP6369177B2 (ja) 2018-08-08

Similar Documents

Publication Publication Date Title
US9389849B2 (en) Test case pattern matching
JP6287549B2 (ja) ソースコードをポーティングする方法及び装置
US9256419B2 (en) Dynamic software updates
US8230397B2 (en) Automated solution that detects configuration problems in an eclipse-based software application
US20120304153A1 (en) Context-sensitive analysis framework using value flows
US20220083450A1 (en) Automated bug fixing using deep learning
US9304893B1 (en) Integrated software development and test case management system
US20140068559A1 (en) Annotation-based infrastructure for automatically generating "predictable" ids for visual components in a web-application
US8627286B2 (en) Fully declarative build system for build optimization
CN106406918B (zh) 源代码自动合并方法和源代码自动合并装置
US8296254B2 (en) Data flow analyzing apparatus, data flow analyzing method and data flow analyzing program
US20020194579A1 (en) Code verification system and method
JP5845888B2 (ja) ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム
KR20140050323A (ko) 라이선스 검증 방법 및 그 장치
US9557965B2 (en) Method for programming language dependent merging of program codes
JP6369177B2 (ja) 開発支援プログラム,開発支援方法及び開発支援装置
JP5369565B2 (ja) プログラムのエラー情報出力装置、エラー情報出力方法およびエラー情報出力プログラム
JP7384054B2 (ja) 自動化されたソフトウェアプログラム修復
CN110286912B (zh) 代码检测方法、装置及电子设备
JP6451417B2 (ja) デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム
JP2020129372A (ja) 自動化されたソフトウェアプログラム修復
US20050010895A1 (en) Software Specification Processing System
CN109597638B (zh) 基于实时计算引擎解决数据处理、设备联动的方法及装置
JP6748357B2 (ja) 解析装置、解析プログラムおよび解析方法
Hamilton Extracting the essence of distillation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180124

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: 20180612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180625

R150 Certificate of patent or registration of utility model

Ref document number: 6369177

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees