JP6665576B2 - Support device, support method, and program - Google Patents
Support device, support method, and program Download PDFInfo
- Publication number
- JP6665576B2 JP6665576B2 JP2016031761A JP2016031761A JP6665576B2 JP 6665576 B2 JP6665576 B2 JP 6665576B2 JP 2016031761 A JP2016031761 A JP 2016031761A JP 2016031761 A JP2016031761 A JP 2016031761A JP 6665576 B2 JP6665576 B2 JP 6665576B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- indication information
- source code
- corrected
- indication
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Description
本発明は、支援装置、支援方法及びプログラムに関する。 The present invention relates to a support device, a support method, and a program.
ソフトウェアの開発においては、ソースコードの静的検証ツールが用いられる場合がある。この場合には、静的検証ツールを用いたソースコードの検証は、例えば次のように行われる。静的検証ツールによる検証の結果に基づいて、ソースコードが開発者によって修正される。そして、ソースコードの修正後に、必要に応じて再度静的検証ツールによる検証が行われ、静的検証ツールによって指摘された問題が修正されたことが確認される。 In software development, a source code static verification tool may be used. In this case, the verification of the source code using the static verification tool is performed as follows, for example. The source code is modified by the developer based on the result of the verification by the static verification tool. Then, after the source code is corrected, verification is again performed by the static verification tool as necessary, and it is confirmed that the problem pointed out by the static verification tool has been corrected.
特許文献1には、判定作業支援システムに関する技術が記載されている。特許文献1に記載の判定作業支援システムでは、検証結果の指摘についてクローンコードと思われる情報をベースに、各指摘について代入処理や条件分岐といった問題発生に関わる情報が抽出される。そして、特許文献1に記載の判定作業支援システムでは、コードの類似性と問題発生に関わる処理を利用し検証結果の類似指摘を事前に統一し、ユーザが指摘を精査した時に、類似指摘が同じ精査結果となるように処理される。 Patent Literature 1 describes a technology related to a determination work support system. In the determination work support system described in Patent Literature 1, information relating to the occurrence of a problem such as an assignment process or a conditional branch is extracted for each indication based on information considered to be a clone code for the indication of the verification result. Then, in the determination work support system described in Patent Document 1, the similar indications of the verification results are unified in advance by using the processing related to the similarity of the code and the occurrence of the problem, and when the user examines the indications, the similar indications are the same. Processed to result in scrutiny.
特許文献2には、プログラム改善支援システムに関する技術が記載されている。特許文献2に記載のシステムは、任意に作成されるプログラムに関する静的解析結果に基づいて、警告を解消し得る具体的なプログラム修正方法を、容易に、更に場合によっては適切な評価付きで、把握することができるようにする。 Patent Literature 2 describes a technique related to a program improvement support system. The system described in Patent Literature 2 easily and, in some cases, with an appropriate evaluation, corrects a specific program correction method capable of eliminating a warning based on a static analysis result of an arbitrarily created program. Be able to grasp.
特許文献3には、ソースコードの静的解析装置に関する技術が記載されている。特許文献3に記載の装置では、解析対象ソースコード生成部が、前回解析時の解析結果を参照して、対象ソースコードから修正部分を抽出した再解析用のソースコードを生成し、静的解析部は再解析用のソースコードの解析を実行する。 Patent Literature 3 describes a technique relating to a static analysis device of a source code. In the apparatus described in Patent Literature 3, an analysis target source code generation unit generates a re-analysis source code in which a corrected portion is extracted from the target source code with reference to an analysis result obtained in a previous analysis, and performs static analysis. The section performs analysis of the source code for re-analysis.
静的検証ツールによる検証の結果に基づいてソースコードが修正される場合には、当該修正に起因して、新たな不具合が生じる場合がある。新たに生じた不具合は、静的検証ツールによって再度の検証が行われた場合に検出される可能性がある。 When the source code is corrected based on the result of the verification by the static verification tool, a new defect may occur due to the correction. The newly generated defect may be detected when the verification is performed again by the static verification tool.
しかしながら、各特許文献に記載の技術等では、ソースコードの修正に伴って新たな不具合が生じた場合に、当該不具合の原因となった修正に関連する静的検証ツールの指摘に関する情報が提供されない。すなわち、当初の検証結果に含まれる指摘のいずれに対する修正に起因して新たな不具合が生じたかを示す情報が提供されない。したがって、各特許文献に記載の技術では、ソースコードに含まれる不具合の効率的な修正や分析が困難な場合がある。 However, in the technology described in each patent document, when a new defect occurs due to the correction of the source code, information on indication of a static verification tool related to the correction that caused the defect is not provided. . That is, information indicating whether a new defect has occurred due to correction of any of the indications included in the initial verification result is not provided. Therefore, it may be difficult to efficiently correct or analyze a defect included in the source code using the technology described in each patent document.
本発明は、上記課題を解決するためになされたものであって、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することを主たる目的とする。 The present invention has been made to solve the above problems, and has as its main object to provide a support device or the like that enables efficient correction and analysis of a defect included in a source code.
本発明の一態様における支援装置は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する第1の指摘情報生成手段と、修正されたソースコードに対して前記静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する第2の指摘情報生成手段と、第1及び前記第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する分析手段とを備える。 The support device according to one aspect of the present invention includes a first verification result and the corrected source based on a first verification result verified by a static verification tool on a source code and a corrected source code. First indication information generating means for generating first indication information including correspondence information indicating a correspondence with a code, and a correction related to a second verification result verified by the static verification tool on the corrected source code Second pointing information generating means for generating second pointing information including post information, and analyzing means for analyzing the association between the corresponding information and the corrected information based on the first and second pointing information. Prepare.
本発明の一態様における支援方法は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と修正されたソースコードとの対応を示す第1の指摘情報を生成し、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成し、第1及び前記第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。 The support method according to one aspect of the present invention includes a first verification result and a corrected source code based on a first verification result verified by a static verification tool on source code and a corrected source code. Generating first indication information indicating a correspondence with the code, generating second indication information including corrected information on a second verification result verified by the static verification tool on the corrected source code; The association between the correspondence information and the corrected information is analyzed based on the first and second indication information.
本発明の一態様におけるプログラムは、コンピュータに、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する処理と、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する処理と、第1及び第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する処理とを実行させる。 The program according to one aspect of the present invention has the computer verify and correct the first verification result based on the first verification result verified by the static verification tool on the source code and the corrected source code. A process of generating first indication information including correspondence information indicating a correspondence with a source code, and a second process including corrected information on a second verification result obtained by a static verification tool verifying the corrected source code. And a process of analyzing the association between the correspondence information and the corrected information based on the first and second indication information.
本発明によると、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することができる。 According to the present invention, it is possible to provide a support device or the like that enables efficient correction and analysis of a defect included in a source code.
本発明の各実施形態について、添付の図面を参照して説明する。本発明の各実施形態において、各装置(システム)の各構成要素 は、機能単位のブロックを示している。各装置(システム)の各構成要素の一部又は全部は、例えば図10に示すような情報処理装置500とプログラムとの任意の組み合わせにより実現される。情報処理装置500は、一例として、以下のような構成を含む。
Each embodiment of the present invention will be described with reference to the accompanying drawings. In each embodiment of the present invention, each component of each device (system) indicates a block of a functional unit. Some or all of the components of each device (system) are realized by, for example, an arbitrary combination of an
・CPU(Central Processing Unit)501
・ROM(Read Only Memory)502
・RAM(Random Access Memory)503
・RAM503にロードされるプログラム504
・プログラム504を格納する記憶装置505
・記録媒体506の読み書きを行うドライブ装置507
・通信ネットワーク509と接続する通信インターフェース508
・データの入出力を行う入出力インターフェース510
・各構成要素を接続するバス511
各実施形態における各装置の各構成要素は、これらの機能を実現するプログラム504をCPU501が取得して実行することで実現される。各装置の各構成要素の機能を実現するプログラム504は、例えば、予め記憶装置505やRAM503に格納されており、必要に応じてCPU501が読み出す。なお、プログラム504は、通信ネットワーク509を介してCPU501に供給されてもよいし、予め記録媒体506に格納されており、ドライブ装置507が当該プログラムを読み出してCPU501に供給してもよい。
・ CPU (Central Processing Unit) 501
・ ROM (Read Only Memory) 502
・ RAM (Random Access Memory) 503
A
A
A
A
An input /
A
Each component of each device in each embodiment is realized by the
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個の情報処理装置500とプログラムとの任意の組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つの情報処理装置500とプログラムとの任意の組み合わせにより実現されてもよい。
There are various modifications of the method of realizing each device. For example, each device may be realized by an arbitrary combination of a separate
また、各装置の各構成要素の一部又は全部は、汎用または専用の回路 (circuitry)、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップ によって構成されてもよいし、バスを介して接続される複数のチップ によって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。 In addition, a part or all of each component of each device is realized by a general-purpose or dedicated circuit, a processor, or a combination thereof. These may be constituted by a single chip, or may be constituted by a plurality of chips connected via a bus. Some or all of the components of each device may be realized by a combination of the above-described circuit and the like and a program.
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。 When a part or all of each component of each device is realized by a plurality of information processing devices or circuits, the plurality of information processing devices or circuits may be centrally arranged or distributed. Is also good. For example, the information processing device, the circuit, and the like may be realized as a form in which each is connected via a communication network, such as a client and server system or a cloud computing system.
まず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態における支援装置を示す図である。 First, a first embodiment of the present invention will be described. FIG. 1 is a diagram illustrating a support device according to the first embodiment of the present invention.
図1に示すとおり、本発明の第1の実施形態における支援装置100は、第1の指摘情報生成部110と、第2の指摘情報生成部120と、分析部130とを備える。第1の指摘情報生成部110は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する。第2の指摘情報生成部120は、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する。分析部130は、第1及び第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。
As shown in FIG. 1, the
本実施形態において、第1の検証結果11及び第2の検証結果12のそれぞれは、静的検証ツール(不図示)がソースコードに対して検証を行った結果を含む。静的検証ツールは、プログラムのソースコードを主に解析して問題の有無を解析するツールである。静的検証ツールは、プログラムのソースフローを参照して、当該プログラムのデータフローや、設定されたデータ、値、構造等の検証を行うことで、当該プログラムの問題の有無を検証する。すなわち、静的検証ツールは、プログラムの実行ファイルを実行することなくプログラムの問題の有無を検証する。静的検証ツールでは、形式手法と呼ばれる技術等が用いられる。
In the present embodiment, each of the
第1の検証結果11及び第2の検証結果12のそれぞれには、静的検証ツールによって検出された問題の各々の詳細を示す指摘が含まれる。指摘は、問題を区別する識別番号、問題の種類や、ソースコードにおける当該問題の原因となった箇所の情報等から構成される。問題の原因となった箇所の情報は、例えばソースコードのファイル名、行番号、関数名、変数名などがあるが、これ以外の情報であってもよい。第1の検証結果11及び第2の検証結果12のそれぞれに含まれる指摘の数は特に限定されない。
Each of the
なお、支援装置100は、図2に示すような構成であってもよい。すなわち、支援装置100は、図1に示す構成の他に、第1の指摘情報記憶部111と、第2の指摘情報記憶部121とを備える。第1の指摘情報記憶部111は、上述した第1の指摘情報を記憶する。第2の指摘情報記憶部121は、上述した第2の指摘情報を記憶する。第1の指摘情報記憶部111及び第2の指摘情報記憶部121は、それぞれ、上述した図10に示す情報処理装置500が備える記憶装置505等にて実現される。
Note that the
次に、本発明の第1の実施形態における支援装置100の各構成要素について説明する。
Next, each component of the
第1の指摘情報生成部110は、第1の検証結果11と、修正されたソースコードとに基づいて、第1の指摘情報を生成する。第1の検証結果11は、検証の対象とされたソースコードに対して静的検証ツールによる検証が行われた結果である。また、修正されたソースコードは、検証の対象とされたソースコードに対して、静的検証ツールによって指摘された不具合が修正されたソースコードである。
The first indication
本実施形態においては、修正されたソースコードの修正に関する情報は、図1に示す構成管理情報12にて管理されている場合を想定する。すなわち、構成管理情報12には、静的検証ツールによって検証の対象とされたソースコードやそのソースコード名、当該ソースコードが修正された場合にソースコードの修正個所に関する情報やその行番号等が含まれる。ソースコードの修正個所に関する情報には、例えば修正されたソースコードと修正前のソースコードとの差分が含まれる。そして、第1の指摘情報生成部110は、修正されたソースコードとして、一例として構成管理情報12にて管理されている修正個所に関する情報を用いて第1の指摘情報を生成する。構成管理情報12は、例えばソースコードのバージョン管理システム等にて管理されてもよい。
In the present embodiment, it is assumed that the information on the correction of the corrected source code is managed by the
第1の指摘情報は、第1の検証結果に含まれる指摘の各々と修正されたソースコードとの対応を示す。第1の指摘情報には、対応に関する情報である対応情報が含まれる。すなわち、第1の検証結果11に含まれる対応情報は、第1の検証結果11に含まれる指摘が示すソースコードの問題の各々に応じてソースコードが修正された場合に、当該指摘の各々とソースコードの修正個所との対応を示す。なお、第1の指摘情報に含まれる対応情報の数は特に限定されず、第1の指摘情報11に含まれる指摘に応じて変化する。
The first indication information indicates a correspondence between each indication included in the first verification result and the corrected source code. The first indication information includes correspondence information that is information on the correspondence. That is, when the source code is corrected according to each of the problems in the source code indicated by the indication included in the
図3は、第1の指摘情報の一例を示す。図3に示す第1の指摘情報は、静的検証ツールによって検証された第1の検証結果11のうち、一つの指摘に関する第1の指摘情報である。すなわち、図3に示す第1の指摘情報は、一つの対応情報を含む。図3に示す第1の指摘情報の例では、「ファイル名」、「関数名」及び「変数名」の各々の項は、主に第1の検証結果11に含まれる情報である。「修正で追加された行」及び「行番号」の項は、主に修正されたソースコードに関する情報である。なお、第1の検証結果11に複数の指摘が含まれる場合には、複数の指摘の各々に対して同様の第1の指摘情報が生成される。
FIG. 3 shows an example of the first indication information. The first indication information shown in FIG. 3 is the first indication information relating to one indication among the first verification results 11 verified by the static verification tool. That is, the first indication information shown in FIG. 3 includes one piece of correspondence information. In the example of the first indication information illustrated in FIG. 3, each item of “file name”, “function name”, and “variable name” is information mainly included in the
図2に示す例では、「ファイル名」は、当該指摘に対応する問題の原因となる箇所が存在するソースコードのファイル名を示す。同様に、「関数名」は、問題の原因となる箇所が存在する関数の名前を示す。また、「変数名」は、問題に関連する変数の変数名を示す。「修正で追加された行」は、当該指摘に応じて問題が修正された場合、ソースコードに対して修正された箇所を示す。この欄にて示されるソースコードは、問題の修正に際して元のソースコードに変更が加えられた箇所でもよいし、問題を修正するためにソースコードに対して新たに追加された箇所でもよい。「行番号」は、修正されたソースコードにおいて、上述した「修正で追加された行」が存在する箇所の番号を示す。また、「変数利用有無」は、ソースコードの「修正で追加された行」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、「変数名」の欄にて示される変数が、「修正で追加された行」の各々において参照または代入されているかに基づいて定められる。図3に示す例では、行番号が「10」の行においては、「変数名」として示される変数strへの参照があることから、「変数利用有無」が「あり」とされている。また、行番号が「11」及び「12」の行においては、「変数名」として示される変数strへの代入及び参照がないことから、「変数利用有無」が「なし」とされている。 In the example illustrated in FIG. 2, “file name” indicates a file name of a source code in which a location causing a problem corresponding to the indication exists. Similarly, the “function name” indicates the name of the function in which the part causing the problem exists. The “variable name” indicates a variable name of a variable related to the question. The “line added by the correction” indicates a portion corrected in the source code when the problem is corrected in response to the indication. The source code indicated in this column may be a portion where the original source code is changed when the problem is corrected, or a portion newly added to the source code to correct the problem. “Line number” indicates the number of the place where the above-mentioned “line added by correction” exists in the corrected source code. The "variable use presence / absence" indicates whether the variable indicated in the "variable name" column is used for each "line added by correction" of the source code. Whether or not a variable is used is determined based on whether the variable indicated in the column of “variable name” is referred to or substituted in each of the “line added by modification”. In the example illustrated in FIG. 3, in the line with the line number “10”, there is a reference to the variable str indicated as “variable name”, and thus “variable use” is set to “Yes”. Further, in the rows with the row numbers “11” and “12”, there is no assignment or reference to the variable str indicated as “variable name”, so “variable use presence” is set to “none”.
第1の指摘情報生成部110は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号との対応に基づいて、第1の指摘情報を生成する。すなわち、第1の指摘情報生成部110は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号とが合致する場合に、これらの情報に基づいて上述したような第1の指摘情報の対応情報を生成する。
The first indication
一例として、第1の指摘情報生成部110は、識別番号が合致する場合には、第1の検証結果11に基づいて、第1の指摘情報に含まれる対応情報のうち、「ファイル名」、「関数名」及び「変数名」の各々の項に関する情報を生成する。また、第1の指摘情報生成部110は、構成管理情報12に含まれる修正されたソースコードの修正に関する情報に基づいて、第1の指摘情報に含まれる対応情報のうち「修正で追加された行」及び「行番号」の項に関する情報を生成する。
As an example, when the identification numbers match, the first indication
併せて、第1の指摘情報生成部110は、「変数名」及び「修正で追加された行」の項に関する情報を参照して「変数利用有無」の項に関する情報を生成する。すなわち、第1の指摘情報生成部110は、「変数名」にて示される変数が「修正で追加された行」にて利用されている場合に、「変数利用有無」を「あり」とする。また、第1の指摘情報生成部110は、「変数名」にて示される変数が「修正で追加された行」にて利用されていない場合に、「変数利用有無」を「なし」とする。
At the same time, the first indication
なお、本実施形態においては、ソースコードが修正される場合に、ソースコードの修正個所の各々に、修正に対応する指摘の識別番号が付されていることを想定する。識別番号は、一例として、修正されたソースコードがバージョン管理システムへコミットされる場合に、修正担当者又はコミット担当者によって、コミットの際のコメントとして識別番号が記載される。 In the present embodiment, when the source code is corrected, it is assumed that the identification number of the indication corresponding to the correction is attached to each of the correction points of the source code. As an example, when the corrected source code is committed to the version control system, the identification number is described as a comment at the time of commit by the person in charge of modification or the person in charge of commit.
第1の指摘情報生成部110によって生成された第1の指摘情報は、後述する分析部130へ適宜送られる。また、図2に示すように、第1の指摘情報記憶部111が設けられている場合には、第1の指摘情報生成部110は、第1の指摘情報を、第1の指摘情報記憶部111に格納する。この場合には、分析部130は、必要に応じて第1の指摘情報記憶部111に格納された第1の指摘情報を読み出して利用する。
The first indication information generated by the first indication
第2の指摘情報生成部120は、第2の検証結果13に基づいて、第2の指摘情報を生成する。第2の指摘情報は、第2の検証結果13に含まれる指摘の各々に関する修正後情報を含む。第2の検証結果13は、第1の検証結果11に基づいてソースコードが修正された場合に、修正されたソースコードに対して静的検証ツールによって検証が行われた結果である。第2の検証結果13は、第1の検証結果11と同種の情報を含む。第2の指摘情報に含まれる修正後情報の数は、第2の検証結果13に含まれる指摘に応じて変化する。
The second indication
第2の指摘情報に含まれる情報の各々は、第2の検証結果13に含まれる指摘と同様の情報を含む。また、第2の指摘情報に含まれる修正後情報の各々には、第2の検証結果13に含まれる指摘の各々に対応する問題の原因となった変数について、当該変数の使用の有無に関する情報が含まれる。
Each of the information included in the second indication information includes the same information as the indication included in the
図4は、第2の指摘情報の一例を示す。図4に示す第2の指摘情報は、静的検証ツールによって検証された第2の検証結果13のうち、一つの指摘に関する修正後情報である。図4に示す第2の指摘情報の例では、「変数利用有無」の項を除く各項は、主に第2の検証結果13に含まれる情報である。また、図4に示す第2の指摘情報の例のうち、「指摘トレース」及び「変数利用有無」を除く各項は、第1の指摘情報に含まれる同じ名称の項目と同様の情報を示す。
FIG. 4 shows an example of the second indication information. The second indication information shown in FIG. 4 is the corrected information on one indication among the second verification results 13 verified by the static verification tool. In the example of the second indication information illustrated in FIG. 4, each item except the item of “variable use presence / absence” is information mainly included in the
また、「指摘トレース」の項は、第2の検証結果13に含まれる指摘に関連するソースコードの箇所を示す。詳しくは、「指摘トレース」は、第2の検証結果13に含まれる指摘にて示された変数への値の代入又は参照に関連するソースコードの箇所を示す。「変数利用有無」の項は、ソースコードの「指摘トレース」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、第1の指摘情報における「変数利用有無」の項と同様に、「指摘トレース」において変数に対する参照または代入が行われているか否かに基づいて定められる。
The “pointing trace” section indicates a part of the source code related to the pointing contained in the
第2の指摘情報生成部120は、第2の検証結果13に含まれる指摘に基づいて、第2の指摘情報に含まれる修正後情報のうち、「変数利用有無」の項を除く各項に関する情報を生成する。また、第2の指摘情報生成部120は、第2の指摘情報に含まれる修正後情報の「変数名」及び「指摘トレース」の項に基づいて、「変数利用有無」の項に関する情報を生成する。
The second indication
第2の指摘情報生成部120によって生成された第2の指摘情報は、分析部130へ適宜送られる。また、図2に示すように、第2の指摘情報記憶部121が設けられている場合には、第1の指摘情報生成部120は、第2の指摘情報を、第2の指摘情報記憶部121に格納する。分析部130は、この場合に、第2の指摘情報記憶部121に格納された第2の指摘情報を読み出して利用する。
The second indication information generated by the second indication
分析部130は、第1の指摘情報と第2の指摘情報との関連を分析する。すなわち、分析部130は、第2の指摘情報に含まれる修正後情報の各々について、第1の指摘情報に関連する対応情報が存在するか否かを分析する。第2の指摘情報に含まれる対応情報の各々について、関連する第1の指摘情報の対応情報が存在する場合には、当該対応情報は、第1の検証結果11に基づくソースコードの修正に起因して生じた不具合に関連すると判断することができる。
The
分析部130は、一例として、第2の指摘情報に含まれる修正後情報の各々について、第1の指摘情報に含まれる指摘との間の関係が所定の条件を満たすか否かを判断することで、第1の指摘情報に関連する指摘が存在するか否かを分析する。すなわち、分析部130は、第2の指摘情報に含まれる修正後情報の各々について、当該指摘の各項目が合致する第1の指摘情報の対応情報の有無を判定することで、所定の関係を満たすか否かを判断する。
As an example, the
一例として、分析部130は、図3に示す第1の指摘情報の対応情報及び図4に示す第2の指摘情報の修正後情報の同じ名称の項目について、各々の内容が合致するかを判定する。また、分析部130は、図4に示す第2の指摘情報に含まれる「指摘トレース」の項の内容に、図3に示す第1の指摘情報に含まれる「修正で追加された行」の項の内容が含まれるか否かを判定する。そして、全ての項目について内容が合致する場合に、分析部130は、第2の指摘情報に含まれる指摘は、第1の検証結果に基づくソースコードの修正に起因する不具合であると分析する。
As an example, the
なお、本実施形態においては、分析部130は、ソースコードの修正に起因して生じた同じ変数に関する不具合を分析の対象とする。
Note that, in the present embodiment, the
図9は、分析部130が、図3に示す第1の指摘情報に含まれる対応情報、及び図4に示す第2の指摘情報に含まれる修正後情報に関して判定する場合の例を示す。分析部130は、まず、ファイル名が合致するか否かを判定する。図9に示す例では、第1の指摘情報の対応情報に含まれる「ファイル名」、及び第2の指摘情報の修正後情報に含まれる「ファイル名」は、いずれも「a.java」であり、合致する。したがって、分析部130は、例えば、ファイル名が合致すると判定する。同様に、分析部130は、「関数名」及び「変数名」の項目についても合致すると判定する。
FIG. 9 illustrates an example in which the
また、第2の指摘情報の修正後情報における「指摘トレース」には、第1の指摘情報の対応情報における「修正で指摘された行」に含まれる行が存在する。したがって、分析部130は、「指摘トレース」には、第1の指摘情報における「修正で指摘された行」に含まれる行が存在すると判定する。また、分析部130は、「指摘トレース」に「修正で指摘された行」に含まれる行が存在すると判定した場合に、判定の対象となる行の情報について、「行番号」及び「変数利用有無」が合致するか否かを判定する。図9に示す例では、「if(str==null){」との行について、「行番号」と「変数利用有無」との合致が判定される。この場合には、分析部130は、いずれも合致すると判定する。
In the “pointing trace” in the information after the modification of the second pointing information, there is a line included in the “line pointed out by the correction” in the corresponding information of the first pointing information. Therefore, the
すなわち、図9に示す例では、図3に示す第1の指摘情報に含まれる対応情報及び図4に示す第2の指摘情報に含まれる修正後情報の対応する項目について、各々の内容が合致する。したがって、分析部130は、図4に示す第2の指摘情報に含まれる修正後情報について、第1の指摘情報には関連する対応情報が存在すると分析する。すなわち、分析部130は、図4に示す第2の指摘情報に含まれる修正後情報は、図3に示す第1の検証結果に基づくソースコードの修正に起因する不具合であるとする。
That is, in the example shown in FIG. 9, the contents of the corresponding information included in the corresponding information included in the first indication information shown in FIG. 3 and the corresponding items of the post-correction information included in the second indication information shown in FIG. I do. Therefore, the analyzing
上述のような分析に際して、分析部130は、第2の指摘情報に含まれる修正後情報のうち、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした修正後情報を分析済の指摘情報として特定する。特定された分析済の指摘情報は、第2の指摘情報に含まれる他の修正後情報と区分される。分析済の指摘情報は、例えばバッファ(不図示)等に格納される。分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報を、一覧の形式で出力してもよい。
At the time of the above-described analysis, the
例えば、分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧が記載されたファイルを出力してもよい。又は、分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧を、図示しない表示装置へ出力してもよい。分析部130は、これらの修正後情報の一覧を、静的検証ツールから出力される指摘と併せて出力してもよい。
For example, the
次に、図5から8に示すフローチャートを用いて、本発明の第1の実施形態における支援装置100の動作の一例を説明する。最初に、図5に示すフローチャートを用いて、本実施形態における支援装置100の動作の概略を説明する。
Next, an example of the operation of the
まず、第1の指摘情報生成部110は、第1の指摘情報を生成する(ステップS11)。支援装置100が第1の指摘情報記憶部111を備える場合には、生成された第1の指摘情報は、必要に応じて第1の指摘情報記憶部111に格納されてもよい。本ステップにおける第1の指摘情報生成部110の詳細な動作の例は後述する。
First, the first indication
次に、第2の指摘情報生成部120は、第1の指摘情報を生成する(ステップS12)。支援装置100が第2の指摘情報記憶部121を備える場合には、生成された第2の指摘情報は、必要に応じて第2の指摘情報記憶部121に格納されてもよい。本ステップにおける第2の指摘情報生成部120の詳細な動作の例は後述する。
Next, the second indication
次に、分析部130は、ステップS11にて生成された第1の指摘情報と、ステップS12にて生成された第2の指摘情報との関連を分析する(ステップS13)。本ステップにおける分析部130の詳細な動作の例は後述する。また、分析の結果は、図示しない出力手段等を介して必要に応じて出力される。
Next, the
続いて、図6に示すフローチャートを用いて、本実施形態における支援装置100が備える第1の指摘情報生成部110の動作の一例を説明する。
Next, an example of the operation of the first indication
第1の指摘情報生成部110は、最初に、静的検証ツールがソースコードを検証した際に出力する第1の検証結果を取得する(ステップS101)。そして、第1の指摘情報生成部110は、第1の検証結果に含まれる指摘情報の各々を取得する。
First, the first indication
続いて、第1の指摘情報生成部110は、修正されたソースコードに関する情報を取得する(ステップS102)。すなわち、第1の指摘情報生成部110は、構成管理情報12から、ソースコードの修正箇所に関する情報を取得する。
Subsequently, the first indication
続いて、第1の指摘情報生成部110は、第1の検証結果に含まれる指摘情報と、ソースコードの修正個所に関する情報に基づいて、第1の指摘情報を生成する(ステップS103)。第1の指摘情報生成部110は、識別番号等に基づいて、第1の検証結果に含まれる指摘情報と、ソースコードの修正箇所との対応を求めて第1の指摘情報に含まれる対応情報の各々を生成する。
Subsequently, the first indication
なお、支援装置100が第1の指摘情報記憶部111を備える場合には、第1の指摘情報生成部110は、必要に応じてステップS103にて生成された第1の指摘情報を第1の指摘情報記憶部111に格納する(ステップS104)。支援装置100が第1の指摘情報記憶部111を備えない場合には、第1の指摘情報生成部110は、本ステップの処理を行わなくてもよい。
When the
続いて、図7に示すフローチャートを用いて、本実施形態における支援装置100が備える第2の指摘情報生成部120の動作の一例を説明する。
Next, an example of the operation of the second indication
第2の指摘情報生成部120は、最初に、静的検証ツールが修正されたソースコードを検証した際に出力する第2の検証結果13を取得する(ステップS201)。
First, the second indication
続いて、第2の指摘情報生成部120は、ステップS201にて取得された第2の検証結果に基づいて、第2の指摘情報を生成する(ステップS202)。
Subsequently, the second indication
なお、支援装置100が第2の指摘情報記憶部121を備える場合には、第2の指摘情報生成部120は、必要に応じてステップS202にて生成された第2の指摘情報を第2の指摘情報記憶部121に格納する(ステップS203)。支援装置100が第2の指摘情報記憶部121を備えない場合には、第2の指摘情報生成部120は、本ステップの処理を行わなくてもよい。
When the
続いて、図8に示すフローチャートを用いて、本実施形態における支援装置100が備える分析部130の動作の一例を説明する。
Next, an example of the operation of the
分析部130は、第1の指摘情報生成部110によって生成された第1の指摘情報を取得する(ステップS301)。図2に示すように、支援装置100が第1の指摘情報記憶部111を備える場合には、分析部130は、第1の指摘情報記憶部111に記憶された第1の指摘情報を取得してもよい。
The
続いて、分析部130は、第2の指摘情報生成部120によって生成された第2の指摘情報を取得する(ステップS302)。図2に示すように、支援装置100が第2の指摘情報記憶部121を備える場合には、分析部130は、第1の指摘情報記憶部121に記憶された第2の指摘情報を取得してもよい。
Subsequently, the
続いて、分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たすかを分析する(ステップS303)。すなわち、分析部130は、第2の指摘情報に含まれる指摘の各々について、当該指摘の各項目が合致する第1の指摘情報の指摘が存在するか否かを判定する。
Subsequently, the
分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たす場合には(ステップS303:Yes)、ステップS304の処理へ進む。すなわち、第2の指摘情報に含まれる指摘について、当該指摘の各項目が合致する第1の指摘情報の指摘が存在する場合には、分析部130は、当該第2の指摘を分析済の指摘情報に区分して、分析済の指摘情報を更新する。分析部130は、ステップS304の処理が終了した場合には、続いてステップS305の処理を行う。
When the relationship between the first indication information and the second indication information satisfies a predetermined condition (Step S303: Yes), the
また、分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たす場合には(ステップS303:No)、分析部130は、ステップS304の処理を行わずにステップS305の処理を行う。
When the relationship between the first indication information and the second indication information satisfies a predetermined condition (step S303: No), the
ステップS305において、第1の指摘情報及び第2の指摘情報の全てについて分析が完了した場合(ステップS306:Yes)場合には、分析部130は分析済の指摘情報を図示しない出力手段等に出力する(ステップS307)。全ての情報の分析が完了していない場合(ステップS306:No)場合には、分析部130はステップS301に戻り、他の第1の指摘情報に関して再度分析を繰り返す。
In step S305, when the analysis has been completed for all of the first indication information and the second indication information (step S306: Yes), the
以上のとおり、本発明の第1の実施形態における支援装置100は、第1及び第2の指摘情報に基づいて、分析部130が第1及び第2の指摘情報との関連を分析する。すなわち、支援装置100は、第2の指摘情報のうち、第1の指摘情報と各々の指摘に含まれる各項目の内容が合致する情報を判別して区分する。
As described above, in the
上述のように、第1の指摘情報は、静的検証ツールによる検証結果と、当該検証結果に応じてソースコードに対して行われた修正との関係を示す。また、第2の検証結果は、修正されたソースコードに対して静的検証ツールによる検証結果を示す。すなわち、区分された指摘は、第1の検証結果に基づくソースコードの修正に起因する不具合である。第2の検証結果が区分されることで、静的検証ツールの検証結果に基づいてソースコードが修正され、修正されたソースコードが静的検証ツールによって再び検証された場合に、当該修正に起因して生じた不具合の判別が可能となる。 As described above, the first indication information indicates a relationship between a verification result by the static verification tool and a correction made to the source code according to the verification result. The second verification result indicates the verification result of the corrected source code by the static verification tool. That is, the classified indication is a defect resulting from the correction of the source code based on the first verification result. By dividing the second verification result, the source code is corrected based on the verification result of the static verification tool, and if the corrected source code is verified again by the static verification tool, the source code is corrected. This makes it possible to determine the fault that has occurred.
したがって、本実施形態における支援装置100は、ソースコードに含まれる不具合の効率的な修正や分析を可能にする。
Therefore, the
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。 As described above, the present invention has been described with reference to the exemplary embodiments. However, the present invention is not limited to the exemplary embodiments. Various changes that can be understood by those skilled in the art can be made to the configuration and details of the present invention within the scope of the present invention. The configurations in the embodiments can be combined with each other without departing from the scope of the present invention.
11 第1の指摘情報
12 構成管理情報
13 第2の検証結果
14 分析済み指摘情報
100 支援装置
110 第1の指摘情報生成部
111 第1の指摘情報記憶部
120 第2の指摘情報生成部
121 第2の指摘情報記憶部
130 分析部
500 情報処理装置
501 CPU
502 ROM
503 RAM
504 プログラム
505 記憶装置
506 記録媒体
507 ドライブ装置
508 通信インターフェース
509 通信ネットワーク
510 入出力インターフェース
511 バス
11 first pointed
502 ROM
503 RAM
504
Claims (8)
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第2の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第2の指摘情報を生成する第2の指摘情報生成手段と、
前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する分析手段とを備える支援装置。 Based on a first verification result verified by a static verification tool on a source code and a corrected source code, correspondence information indicating a correspondence between the first verification result and the corrected source code is generated. First indication information generating means for generating first indication information including:
Aforementioned related to each of the static verification tool is the second indicating the location of at least modified more than a corresponding to the result of verification the verification result, positions and the modified one of the modifications to the modified source code A second indication information generating means for generating second indication information including post-correction information indicating the content of the part ;
An assisting apparatus comprising: an analyzing unit configured to analyze a relationship between the correspondence information and the corrected information based on the first and second indication information.
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第2の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第2の指摘情報を生成し、
前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する支援方法。 Based on a first verification result verified by a static verification tool on a source code and a corrected source code, correspondence information indicating a correspondence between the first verification result and the corrected source code is generated. Generating first indication information including :
Aforementioned related to each of the static verification tool is the second indicating the location of at least modified more than a corresponding to the result of verification the verification result, positions and the modified one of the modifications to the modified source code Generating the second indication information including the corrected information indicating the content of the section ,
A support method for analyzing a relation between the correspondence information and the corrected information based on the first and second indication information.
ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する処理と、
前記修正されたソースコードに対して前記静的検証ツールが検証した結果に応じた一以上の少なくとも修正の箇所を示す第2の検証結果のそれぞれに関し、一の前記修正の箇所および前記修正の箇所の内容を示す修正後情報を含む第2の指摘情報を生成する処理と、
前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する処理とを実行させるプログラム。
On the computer,
Based on a first verification result verified by a static verification tool on a source code and a corrected source code, correspondence information indicating a correspondence between the first verification result and the corrected source code is generated. Generating first indication information including:
Aforementioned related to each of the static verification tool is the second indicating the location of at least modified more than a corresponding to the result of verification the verification result, positions and the modified one of the modifications to the modified source code Processing for generating second indication information including post-correction information indicating the content of the part ;
A program for executing a process of analyzing a relationship between the correspondence information and the post-correction information based on the first and second indication information.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016031761A JP6665576B2 (en) | 2016-02-23 | 2016-02-23 | Support device, support method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016031761A JP6665576B2 (en) | 2016-02-23 | 2016-02-23 | Support device, support method, and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017151594A JP2017151594A (en) | 2017-08-31 |
JP6665576B2 true JP6665576B2 (en) | 2020-03-13 |
Family
ID=59740843
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016031761A Active JP6665576B2 (en) | 2016-02-23 | 2016-02-23 | Support device, support method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6665576B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7116313B2 (en) | 2018-11-28 | 2022-08-10 | 富士通株式会社 | Correction candidate identification program |
US10642716B1 (en) * | 2019-02-07 | 2020-05-05 | Fujitsu Limited | Automated software program repair |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09319611A (en) * | 1996-05-28 | 1997-12-12 | Matsushita Electric Works Ltd | Program development supporter |
JP2005202494A (en) * | 2004-01-13 | 2005-07-28 | Mitsubishi Electric Corp | System and apparatus for analyzing static analysis result |
JP6121828B2 (en) * | 2013-07-26 | 2017-04-26 | Necエンジニアリング株式会社 | Static analysis apparatus, static analysis method, and computer program |
JP6369177B2 (en) * | 2014-07-07 | 2018-08-08 | 富士通株式会社 | Development support program, development support method, and development support apparatus |
-
2016
- 2016-02-23 JP JP2016031761A patent/JP6665576B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2017151594A (en) | 2017-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3616066B1 (en) | Human-readable, language-independent stack trace summary generation | |
US11835987B2 (en) | Methods and apparatus for finding long methods in code | |
US10740713B2 (en) | Generation of WBS model data | |
CN110188135B (en) | File generation method and equipment | |
CN109117141B (en) | Method, device, electronic equipment and computer readable storage medium for simplifying programming | |
US20180025162A1 (en) | Application program analysis apparatus and method | |
JP6665576B2 (en) | Support device, support method, and program | |
CN111913878A (en) | Program analysis result-based bytecode instrumentation method, device and storage medium | |
JP5440287B2 (en) | Symbolic execution support program, method and apparatus | |
US20200326952A1 (en) | Modification procedure generation device, modification procedure generation method and storage medium for storing modification procedure generation program | |
US20150033213A1 (en) | Compiling method, storage medium and compiling apparatus | |
CN112579475A (en) | Code testing method, device, equipment and readable storage medium | |
JP2009211622A (en) | Contract definition function verification device, method thereof, and program thereof | |
JP2018018197A (en) | Source code evaluation program | |
US9015658B2 (en) | Automatic program generation device and automatic program generation method | |
JP5900212B2 (en) | Test data generation apparatus, program, and method | |
JP6036089B2 (en) | Data transition trace device, data transition trace method, and data transition trace program | |
US20150277858A1 (en) | Performance evaluation device, method, and medium for information system | |
US10180882B2 (en) | Information-processing device, processing method, and recording medium in which program is recorded | |
JP6437396B2 (en) | Trace information management system, method, and program | |
CN113590134B (en) | Project generation method and device | |
JP7250223B2 (en) | Method, program and apparatus for analyzing source code | |
WO2017104571A1 (en) | Information processing device, information processing method, and recording medium | |
US20170220450A1 (en) | Analytic method and analyzing apparatus | |
JP2019095946A (en) | System operation manipulation check device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191105 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20191226 |
|
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: 20200121 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200203 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6665576 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |