JP2017151594A - 支援装置、支援方法及びプログラム - Google Patents

支援装置、支援方法及びプログラム Download PDF

Info

Publication number
JP2017151594A
JP2017151594A JP2016031761A JP2016031761A JP2017151594A JP 2017151594 A JP2017151594 A JP 2017151594A JP 2016031761 A JP2016031761 A JP 2016031761A JP 2016031761 A JP2016031761 A JP 2016031761A JP 2017151594 A JP2017151594 A JP 2017151594A
Authority
JP
Japan
Prior art keywords
information
indication information
source code
corrected
verification result
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
JP2016031761A
Other languages
English (en)
Other versions
JP6665576B2 (ja
Inventor
文隆 赤堀
Fumitaka Akahori
文隆 赤堀
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2016031761A priority Critical patent/JP6665576B2/ja
Publication of JP2017151594A publication Critical patent/JP2017151594A/ja
Application granted granted Critical
Publication of JP6665576B2 publication Critical patent/JP6665576B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

【課題】 ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供する。
【解決手段】 支援装置は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する第1の指摘情報生成部と、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する第2の指摘情報部と、第1及び第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する分析部とを備える。
【選択図】 図1

Description

本発明は、支援装置、支援方法及びプログラムに関する。
ソフトウェアの開発においては、ソースコードの静的検証ツールが用いられる場合がある。この場合には、静的検証ツールを用いたソースコードの検証は、例えば次のように行われる。静的検証ツールによる検証の結果に基づいて、ソースコードが開発者によって修正される。そして、ソースコードの修正後に、必要に応じて再度静的検証ツールによる検証が行われ、静的検証ツールによって指摘された問題が修正されたことが確認される。
特許文献1には、判定作業支援システムに関する技術が記載されている。特許文献1に記載の判定作業支援システムでは、検証結果の指摘についてクローンコードと思われる情報をベースに、各指摘について代入処理や条件分岐といった問題発生に関わる情報が抽出される。そして、特許文献1に記載の判定作業支援システムでは、コードの類似性と問題発生に関わる処理を利用し検証結果の類似指摘を事前に統一し、ユーザが指摘を精査した時に、類似指摘が同じ精査結果となるように処理される。
特許文献2には、プログラム改善支援システムに関する技術が記載されている。特許文献2に記載のシステムは、任意に作成されるプログラムに関する静的解析結果に基づいて、警告を解消し得る具体的なプログラム修正方法を、容易に、更に場合によっては適切な評価付きで、把握することができるようにする。
特許文献3には、ソースコードの静的解析装置に関する技術が記載されている。特許文献3に記載の装置では、解析対象ソースコード生成部が、前回解析時の解析結果を参照して、対象ソースコードから修正部分を抽出した再解析用のソースコードを生成し、静的解析部は再解析用のソースコードの解析を実行する。
特開2012−256220号公報 特開2013−20519号公報 特開2013−149134号公報
静的検証ツールによる検証の結果に基づいてソースコードが修正される場合には、当該修正に起因して、新たな不具合が生じる場合がある。新たに生じた不具合は、静的検証ツールによって再度の検証が行われた場合に検出される可能性がある。
しかしながら、各特許文献に記載の技術等では、ソースコードの修正に伴って新たな不具合が生じた場合に、当該不具合の原因となった修正に関連する静的検証ツールの指摘に関する情報が提供されない。すなわち、当初の検証結果に含まれる指摘のいずれに対する修正に起因して新たな不具合が生じたかを示す情報が提供されない。したがって、各特許文献に記載の技術では、ソースコードに含まれる不具合の効率的な修正や分析が困難な場合がある。
本発明は、上記課題を解決するためになされたものであって、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することを主たる目的とする。
本発明の一態様における支援装置は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する第1の指摘情報生成手段と、修正されたソースコードに対して前記静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する第2の指摘情報生成手段と、第1及び前記第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する分析手段とを備える。
本発明の一態様における支援方法は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と修正されたソースコードとの対応を示す第1の指摘情報を生成し、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成し、第1及び前記第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。
本発明の一態様におけるプログラムは、コンピュータに、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する処理と、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する処理と、第1及び第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する処理とを実行させる。
本発明によると、ソースコードに含まれる不具合の効率的な修正や分析を可能にする支援装置等を提供することができる。
本発明の第1の実施形態における支援装置の構成を示す図である。 本発明の第1の実施形態における支援装置の他の構成を示す図である。 本発明の第1の実施形態における支援装置にて生成される第1の指摘情報の例を示す図である。 本発明の第1の実施形態における支援装置にて生成される第2の指摘情報の例を示す図である。 本発明の第1の実施形態における支援装置の動作を示すフローチャートである。 本発明の第1の実施形態における支援装置が備える第1の指摘情報生成部の動作を示すフローチャートである。 本発明の第1の実施形態における支援装置が備える第2の指摘情報生成部の動作を示すフローチャートである。 本発明の第1の実施形態における支援装置が備える分析部の動作を示すフローチャートである。 本発明の第1の実施形態における支援装置にて生成される分析済み指摘情報の例を示す図である。 本発明の実施形態における支援装置等を実現する情報処理装置の一例を示す図である。
本発明の各実施形態について、添付の図面を参照して説明する。本発明の各実施形態において、各装置(システム)の各構成要素 は、機能単位のブロックを示している。各装置(システム)の各構成要素の一部又は全部は、例えば図10に示すような情報処理装置500とプログラムとの任意の組み合わせにより実現される。情報処理装置500は、一例として、以下のような構成を含む。
・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に供給してもよい。
各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個の情報処理装置500とプログラムとの任意の組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つの情報処理装置500とプログラムとの任意の組み合わせにより実現されてもよい。
また、各装置の各構成要素の一部又は全部は、汎用または専用の回路 (circuitry)、プロセッサ等やこれらの組み合わせによって実現される。これらは、単一のチップ によって構成されてもよいし、バスを介して接続される複数のチップ によって構成されてもよい。各装置の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
各装置の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
まず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態における支援装置を示す図である。
図1に示すとおり、本発明の第1の実施形態における支援装置100は、第1の指摘情報生成部110と、第2の指摘情報生成部120と、分析部130とを備える。第1の指摘情報生成部110は、ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、第1の検証結果と修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する。第2の指摘情報生成部120は、修正されたソースコードに対して静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する。分析部130は、第1及び第2の指摘情報に基づいて、対応情報と修正後情報との関連を分析する。
本実施形態において、第1の検証結果11及び第2の検証結果12のそれぞれは、静的検証ツール(不図示)がソースコードに対して検証を行った結果を含む。静的検証ツールは、プログラムのソースコードを主に解析して問題の有無を解析するツールである。静的検証ツールは、プログラムのソースフローを参照して、当該プログラムのデータフローや、設定されたデータ、値、構造等の検証を行うことで、当該プログラムの問題の有無を検証する。すなわち、静的検証ツールは、プログラムの実行ファイルを実行することなくプログラムの問題の有無を検証する。静的検証ツールでは、形式手法と呼ばれる技術等が用いられる。
第1の検証結果11及び第2の検証結果12のそれぞれには、静的検証ツールによって検出された問題の各々の詳細を示す指摘が含まれる。指摘は、問題を区別する識別番号、問題の種類や、ソースコードにおける当該問題の原因となった箇所の情報等から構成される。問題の原因となった箇所の情報は、例えばソースコードのファイル名、行番号、関数名、変数名などがあるが、これ以外の情報であってもよい。第1の検証結果11及び第2の検証結果12のそれぞれに含まれる指摘の数は特に限定されない。
なお、支援装置100は、図2に示すような構成であってもよい。すなわち、支援装置100は、図1に示す構成の他に、第1の指摘情報記憶部111と、第2の指摘情報記憶部121とを備える。第1の指摘情報記憶部111は、上述した第1の指摘情報を記憶する。第2の指摘情報記憶部121は、上述した第2の指摘情報を記憶する。第1の指摘情報記憶部111及び第2の指摘情報記憶部121は、それぞれ、上述した図10に示す情報処理装置500が備える記憶装置505等にて実現される。
次に、本発明の第1の実施形態における支援装置100の各構成要素について説明する。
第1の指摘情報生成部110は、第1の検証結果11と、修正されたソースコードとに基づいて、第1の指摘情報を生成する。第1の検証結果11は、検証の対象とされたソースコードに対して静的検証ツールによる検証が行われた結果である。また、修正されたソースコードは、検証の対象とされたソースコードに対して、静的検証ツールによって指摘された不具合が修正されたソースコードである。
本実施形態においては、修正されたソースコードの修正に関する情報は、図1に示す構成管理情報12にて管理されている場合を想定する。すなわち、構成管理情報12には、静的検証ツールによって検証の対象とされたソースコードやそのソースコード名、当該ソースコードが修正された場合にソースコードの修正個所に関する情報やその行番号等が含まれる。ソースコードの修正個所に関する情報には、例えば修正されたソースコードと修正前のソースコードとの差分が含まれる。そして、第1の指摘情報生成部110は、修正されたソースコードとして、一例として構成管理情報12にて管理されている修正個所に関する情報を用いて第1の指摘情報を生成する。構成管理情報12は、例えばソースコードのバージョン管理システム等にて管理されてもよい。
第1の指摘情報は、第1の検証結果に含まれる指摘の各々と修正されたソースコードとの対応を示す。第1の指摘情報には、対応に関する情報である対応情報が含まれる。すなわち、第1の検証結果11に含まれる対応情報は、第1の検証結果11に含まれる指摘が示すソースコードの問題の各々に応じてソースコードが修正された場合に、当該指摘の各々とソースコードの修正個所との対応を示す。なお、第1の指摘情報に含まれる対応情報の数は特に限定されず、第1の指摘情報11に含まれる指摘に応じて変化する。
図3は、第1の指摘情報の一例を示す。図3に示す第1の指摘情報は、静的検証ツールによって検証された第1の検証結果11のうち、一つの指摘に関する第1の指摘情報である。すなわち、図3に示す第1の指摘情報は、一つの対応情報を含む。図3に示す第1の指摘情報の例では、「ファイル名」、「関数名」及び「変数名」の各々の項は、主に第1の検証結果11に含まれる情報である。「修正で追加された行」及び「行番号」の項は、主に修正されたソースコードに関する情報である。なお、第1の検証結果11に複数の指摘が含まれる場合には、複数の指摘の各々に対して同様の第1の指摘情報が生成される。
図2に示す例では、「ファイル名」は、当該指摘に対応する問題の原因となる箇所が存在するソースコードのファイル名を示す。同様に、「関数名」は、問題の原因となる箇所が存在する関数の名前を示す。また、「変数名」は、問題に関連する変数の変数名を示す。「修正で追加された行」は、当該指摘に応じて問題が修正された場合、ソースコードに対して修正された箇所を示す。この欄にて示されるソースコードは、問題の修正に際して元のソースコードに変更が加えられた箇所でもよいし、問題を修正するためにソースコードに対して新たに追加された箇所でもよい。「行番号」は、修正されたソースコードにおいて、上述した「修正で追加された行」が存在する箇所の番号を示す。また、「変数利用有無」は、ソースコードの「修正で追加された行」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、「変数名」の欄にて示される変数が、「修正で追加された行」の各々において参照または代入されているかに基づいて定められる。図3に示す例では、行番号が「10」の行においては、「変数名」として示される変数strへの参照があることから、「変数利用有無」が「あり」とされている。また、行番号が「11」及び「12」の行においては、「変数名」として示される変数strへの代入及び参照がないことから、「変数利用有無」が「なし」とされている。
第1の指摘情報生成部110は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号との対応に基づいて、第1の指摘情報を生成する。すなわち、第1の指摘情報生成部110は、静的検証ツールにて検出された指摘の識別番号と、ソースコードの修正に対して付された識別番号とが合致する場合に、これらの情報に基づいて上述したような第1の指摘情報の対応情報を生成する。
一例として、第1の指摘情報生成部110は、識別番号が合致する場合には、第1の検証結果11に基づいて、第1の指摘情報に含まれる対応情報のうち、「ファイル名」、「関数名」及び「変数名」の各々の項に関する情報を生成する。また、第1の指摘情報生成部110は、構成管理情報12に含まれる修正されたソースコードの修正に関する情報に基づいて、第1の指摘情報に含まれる対応情報のうち「修正で追加された行」及び「行番号」の項に関する情報を生成する。
併せて、第1の指摘情報生成部110は、「変数名」及び「修正で追加された行」の項に関する情報を参照して「変数利用有無」の項に関する情報を生成する。すなわち、第1の指摘情報生成部110は、「変数名」にて示される変数が「修正で追加された行」にて利用されている場合に、「変数利用有無」を「あり」とする。また、第1の指摘情報生成部110は、「変数名」にて示される変数が「修正で追加された行」にて利用されていない場合に、「変数利用有無」を「なし」とする。
なお、本実施形態においては、ソースコードが修正される場合に、ソースコードの修正個所の各々に、修正に対応する指摘の識別番号が付されていることを想定する。識別番号は、一例として、修正されたソースコードがバージョン管理システムへコミットされる場合に、修正担当者又はコミット担当者によって、コミットの際のコメントとして識別番号が記載される。
第1の指摘情報生成部110によって生成された第1の指摘情報は、後述する分析部130へ適宜送られる。また、図2に示すように、第1の指摘情報記憶部111が設けられている場合には、第1の指摘情報生成部110は、第1の指摘情報を、第1の指摘情報記憶部111に格納する。この場合には、分析部130は、必要に応じて第1の指摘情報記憶部111に格納された第1の指摘情報を読み出して利用する。
第2の指摘情報生成部120は、第2の検証結果13に基づいて、第2の指摘情報を生成する。第2の指摘情報は、第2の検証結果13に含まれる指摘の各々に関する修正後情報を含む。第2の検証結果13は、第1の検証結果11に基づいてソースコードが修正された場合に、修正されたソースコードに対して静的検証ツールによって検証が行われた結果である。第2の検証結果13は、第1の検証結果11と同種の情報を含む。第2の指摘情報に含まれる修正後情報の数は、第2の検証結果13に含まれる指摘に応じて変化する。
第2の指摘情報に含まれる情報の各々は、第2の検証結果13に含まれる指摘と同様の情報を含む。また、第2の指摘情報に含まれる修正後情報の各々には、第2の検証結果13に含まれる指摘の各々に対応する問題の原因となった変数について、当該変数の使用の有無に関する情報が含まれる。
図4は、第2の指摘情報の一例を示す。図4に示す第2の指摘情報は、静的検証ツールによって検証された第2の検証結果13のうち、一つの指摘に関する修正後情報である。図4に示す第2の指摘情報の例では、「変数利用有無」の項を除く各項は、主に第2の検証結果13に含まれる情報である。また、図4に示す第2の指摘情報の例のうち、「指摘トレース」及び「変数利用有無」を除く各項は、第1の指摘情報に含まれる同じ名称の項目と同様の情報を示す。
また、「指摘トレース」の項は、第2の検証結果13に含まれる指摘に関連するソースコードの箇所を示す。詳しくは、「指摘トレース」は、第2の検証結果13に含まれる指摘にて示された変数への値の代入又は参照に関連するソースコードの箇所を示す。「変数利用有無」の項は、ソースコードの「指摘トレース」の各々について、「変数名」の欄にて示される変数が利用されているか否かを表す。変数が利用されているか否かは、第1の指摘情報における「変数利用有無」の項と同様に、「指摘トレース」において変数に対する参照または代入が行われているか否かに基づいて定められる。
第2の指摘情報生成部120は、第2の検証結果13に含まれる指摘に基づいて、第2の指摘情報に含まれる修正後情報のうち、「変数利用有無」の項を除く各項に関する情報を生成する。また、第2の指摘情報生成部120は、第2の指摘情報に含まれる修正後情報の「変数名」及び「指摘トレース」の項に基づいて、「変数利用有無」の項に関する情報を生成する。
第2の指摘情報生成部120によって生成された第2の指摘情報は、分析部130へ適宜送られる。また、図2に示すように、第2の指摘情報記憶部121が設けられている場合には、第1の指摘情報生成部120は、第2の指摘情報を、第2の指摘情報記憶部121に格納する。分析部130は、この場合に、第2の指摘情報記憶部121に格納された第2の指摘情報を読み出して利用する。
分析部130は、第1の指摘情報と第2の指摘情報との関連を分析する。すなわち、分析部130は、第2の指摘情報に含まれる修正後情報の各々について、第1の指摘情報に関連する対応情報が存在するか否かを分析する。第2の指摘情報に含まれる対応情報の各々について、関連する第1の指摘情報の対応情報が存在する場合には、当該対応情報は、第1の検証結果11に基づくソースコードの修正に起因して生じた不具合に関連すると判断することができる。
分析部130は、一例として、第2の指摘情報に含まれる修正後情報の各々について、第1の指摘情報に含まれる指摘との間の関係が所定の条件を満たすか否かを判断することで、第1の指摘情報に関連する指摘が存在するか否かを分析する。すなわち、分析部130は、第2の指摘情報に含まれる修正後情報の各々について、当該指摘の各項目が合致する第1の指摘情報の対応情報の有無を判定することで、所定の関係を満たすか否かを判断する。
一例として、分析部130は、図3に示す第1の指摘情報の対応情報及び図4に示す第2の指摘情報の修正後情報の同じ名称の項目について、各々の内容が合致するかを判定する。また、分析部130は、図4に示す第2の指摘情報に含まれる「指摘トレース」の項の内容に、図3に示す第1の指摘情報に含まれる「修正で追加された行」の項の内容が含まれるか否かを判定する。そして、全ての項目について内容が合致する場合に、分析部130は、第2の指摘情報に含まれる指摘は、第1の検証結果に基づくソースコードの修正に起因する不具合であると分析する。
なお、本実施形態においては、分析部130は、ソースコードの修正に起因して生じた同じ変数に関する不具合を分析の対象とする。
図9は、分析部130が、図3に示す第1の指摘情報に含まれる対応情報、及び図4に示す第2の指摘情報に含まれる修正後情報に関して判定する場合の例を示す。分析部130は、まず、ファイル名が合致するか否かを判定する。図9に示す例では、第1の指摘情報の対応情報に含まれる「ファイル名」、及び第2の指摘情報の修正後情報に含まれる「ファイル名」は、いずれも「a.java」であり、合致する。したがって、分析部130は、例えば、ファイル名が合致すると判定する。同様に、分析部130は、「関数名」及び「変数名」の項目についても合致すると判定する。
また、第2の指摘情報の修正後情報における「指摘トレース」には、第1の指摘情報の対応情報における「修正で指摘された行」に含まれる行が存在する。したがって、分析部130は、「指摘トレース」には、第1の指摘情報における「修正で指摘された行」に含まれる行が存在すると判定する。また、分析部130は、「指摘トレース」に「修正で指摘された行」に含まれる行が存在すると判定した場合に、判定の対象となる行の情報について、「行番号」及び「変数利用有無」が合致するか否かを判定する。図9に示す例では、「if(str==null){」との行について、「行番号」と「変数利用有無」との合致が判定される。この場合には、分析部130は、いずれも合致すると判定する。
すなわち、図9に示す例では、図3に示す第1の指摘情報に含まれる対応情報及び図4に示す第2の指摘情報に含まれる修正後情報の対応する項目について、各々の内容が合致する。したがって、分析部130は、図4に示す第2の指摘情報に含まれる修正後情報について、第1の指摘情報には関連する対応情報が存在すると分析する。すなわち、分析部130は、図4に示す第2の指摘情報に含まれる修正後情報は、図3に示す第1の検証結果に基づくソースコードの修正に起因する不具合であるとする。
上述のような分析に際して、分析部130は、第2の指摘情報に含まれる修正後情報のうち、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした修正後情報を分析済の指摘情報として特定する。特定された分析済の指摘情報は、第2の指摘情報に含まれる他の修正後情報と区分される。分析済の指摘情報は、例えばバッファ(不図示)等に格納される。分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報を、一覧の形式で出力してもよい。
例えば、分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧が記載されたファイルを出力してもよい。又は、分析部130は、第1の検証結果に基づくソースコードの修正に起因する不具合であるとした分析済の指摘情報の一覧を、図示しない表示装置へ出力してもよい。分析部130は、これらの修正後情報の一覧を、静的検証ツールから出力される指摘と併せて出力してもよい。
次に、図5から8に示すフローチャートを用いて、本発明の第1の実施形態における支援装置100の動作の一例を説明する。最初に、図5に示すフローチャートを用いて、本実施形態における支援装置100の動作の概略を説明する。
まず、第1の指摘情報生成部110は、第1の指摘情報を生成する(ステップS11)。支援装置100が第1の指摘情報記憶部111を備える場合には、生成された第1の指摘情報は、必要に応じて第1の指摘情報記憶部111に格納されてもよい。本ステップにおける第1の指摘情報生成部110の詳細な動作の例は後述する。
次に、第2の指摘情報生成部120は、第1の指摘情報を生成する(ステップS12)。支援装置100が第2の指摘情報記憶部121を備える場合には、生成された第2の指摘情報は、必要に応じて第2の指摘情報記憶部121に格納されてもよい。本ステップにおける第2の指摘情報生成部120の詳細な動作の例は後述する。
次に、分析部130は、ステップS11にて生成された第1の指摘情報と、ステップS12にて生成された第2の指摘情報との関連を分析する(ステップS13)。本ステップにおける分析部130の詳細な動作の例は後述する。また、分析の結果は、図示しない出力手段等を介して必要に応じて出力される。
続いて、図6に示すフローチャートを用いて、本実施形態における支援装置100が備える第1の指摘情報生成部110の動作の一例を説明する。
第1の指摘情報生成部110は、最初に、静的検証ツールがソースコードを検証した際に出力する第1の検証結果を取得する(ステップS101)。そして、第1の指摘情報生成部110は、第1の検証結果に含まれる指摘情報の各々を取得する。
続いて、第1の指摘情報生成部110は、修正されたソースコードに関する情報を取得する(ステップS102)。すなわち、第1の指摘情報生成部110は、構成管理情報12から、ソースコードの修正箇所に関する情報を取得する。
続いて、第1の指摘情報生成部110は、第1の検証結果に含まれる指摘情報と、ソースコードの修正個所に関する情報に基づいて、第1の指摘情報を生成する(ステップS103)。第1の指摘情報生成部110は、識別番号等に基づいて、第1の検証結果に含まれる指摘情報と、ソースコードの修正箇所との対応を求めて第1の指摘情報に含まれる対応情報の各々を生成する。
なお、支援装置100が第1の指摘情報記憶部111を備える場合には、第1の指摘情報生成部110は、必要に応じてステップS103にて生成された第1の指摘情報を第1の指摘情報記憶部111に格納する(ステップS104)。支援装置100が第1の指摘情報記憶部111を備えない場合には、第1の指摘情報生成部110は、本ステップの処理を行わなくてもよい。
続いて、図7に示すフローチャートを用いて、本実施形態における支援装置100が備える第2の指摘情報生成部120の動作の一例を説明する。
第2の指摘情報生成部120は、最初に、静的検証ツールが修正されたソースコードを検証した際に出力する第2の検証結果13を取得する(ステップS201)。
続いて、第2の指摘情報生成部120は、ステップS201にて取得された第2の検証結果に基づいて、第2の指摘情報を生成する(ステップS202)。
なお、支援装置100が第2の指摘情報記憶部121を備える場合には、第2の指摘情報生成部120は、必要に応じてステップS202にて生成された第2の指摘情報を第2の指摘情報記憶部121に格納する(ステップS203)。支援装置100が第2の指摘情報記憶部121を備えない場合には、第2の指摘情報生成部120は、本ステップの処理を行わなくてもよい。
続いて、図8に示すフローチャートを用いて、本実施形態における支援装置100が備える分析部130の動作の一例を説明する。
分析部130は、第1の指摘情報生成部110によって生成された第1の指摘情報を取得する(ステップS301)。図2に示すように、支援装置100が第1の指摘情報記憶部111を備える場合には、分析部130は、第1の指摘情報記憶部111に記憶された第1の指摘情報を取得してもよい。
続いて、分析部130は、第2の指摘情報生成部120によって生成された第2の指摘情報を取得する(ステップS302)。図2に示すように、支援装置100が第2の指摘情報記憶部121を備える場合には、分析部130は、第1の指摘情報記憶部121に記憶された第2の指摘情報を取得してもよい。
続いて、分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たすかを分析する(ステップS303)。すなわち、分析部130は、第2の指摘情報に含まれる指摘の各々について、当該指摘の各項目が合致する第1の指摘情報の指摘が存在するか否かを判定する。
分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たす場合には(ステップS303:Yes)、ステップS304の処理へ進む。すなわち、第2の指摘情報に含まれる指摘について、当該指摘の各項目が合致する第1の指摘情報の指摘が存在する場合には、分析部130は、当該第2の指摘を分析済の指摘情報に区分して、分析済の指摘情報を更新する。分析部130は、ステップS304の処理が終了した場合には、続いてステップS305の処理を行う。
また、分析部130は、第1の指摘情報と第2の指摘情報との関係が所定の条件を満たす場合には(ステップS303:No)、分析部130は、ステップS304の処理を行わずにステップS305の処理を行う。
ステップS305において、第1の指摘情報及び第2の指摘情報の全てについて分析が完了した場合(ステップS306:Yes)場合には、分析部130は分析済の指摘情報を図示しない出力手段等に出力する(ステップS307)。全ての情報の分析が完了していない場合(ステップS306:No)場合には、分析部130はステップS301に戻り、他の第1の指摘情報に関して再度分析を繰り返す。
以上のとおり、本発明の第1の実施形態における支援装置100は、第1及び第2の指摘情報に基づいて、分析部130が第1及び第2の指摘情報との関連を分析する。すなわち、支援装置100は、第2の指摘情報のうち、第1の指摘情報と各々の指摘に含まれる各項目の内容が合致する情報を判別して区分する。
上述のように、第1の指摘情報は、静的検証ツールによる検証結果と、当該検証結果に応じてソースコードに対して行われた修正との関係を示す。また、第2の検証結果は、修正されたソースコードに対して静的検証ツールによる検証結果を示す。すなわち、区分された指摘は、第1の検証結果に基づくソースコードの修正に起因する不具合である。第2の検証結果が区分されることで、静的検証ツールの検証結果に基づいてソースコードが修正され、修正されたソースコードが静的検証ツールによって再び検証された場合に、当該修正に起因して生じた不具合の判別が可能となる。
したがって、本実施形態における支援装置100は、ソースコードに含まれる不具合の効率的な修正や分析を可能にする。
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、各実施形態における構成は、本発明のスコープを逸脱しない限りにおいて、互いに組み合わせることが可能である。
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 バス

Claims (8)

  1. ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する第1の指摘情報生成手段と、
    前記修正されたソースコードに対して前記静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する第2の指摘情報生成手段と、
    前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する分析手段とを備える支援装置。
  2. 前記対応情報は、前記第1の検証結果に含まれる指摘に応じて修正されたソースコードの修正個所との対応を示す、請求項1に記載の支援装置。
  3. 前記第1の指摘情報生成手段は、前記第1の検証結果に含まれる前記指摘を識別する識別情報と、前記修正されたソースコードの前記修正箇所に対して付された識別番号との対応に基づいて第1の指摘情報を生成する、請求項2に記載の支援装置。
  4. 前記分析手段は、前記対応情報及び前記修正後情報の各々の項目が合致するか否かに基づいて前記関連を分析する、請求項1に記載の支援装置。
  5. 前記分析手段は、前記対応情報及び前記修正後情報の各々の項目が合致する場合に、前記修正後情報が前記修正されたソースコードの修正に起因する不具合を示すと判断する、請求項2に記載の支援装置。
  6. 前記分析手段は、前記修正されたソースコードの修正に起因する不具合を示すと判断された前記修正後情報を出力する、請求項5に記載の支援装置。
  7. ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と前記修正されたソースコードとの対応を示す第1の指摘情報を生成し、
    前記修正されたソースコードに対して前記静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成し、
    前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する支援方法。
  8. コンピュータに、
    ソースコードに対して静的検証ツールが検証した第1の検証結果と、修正されたソースコードとに基づいて、前記第1の検証結果と前記修正されたソースコードとの対応を示す対応情報を含む第1の指摘情報を生成する処理と、
    前記修正されたソースコードに対して前記静的検証ツールが検証した第2の検証結果に関する修正後情報を含む第2の指摘情報を生成する処理と、
    前記第1及び前記第2の指摘情報に基づいて、前記対応情報と前記修正後情報との関連を分析する処理とを実行させるプログラム。
JP2016031761A 2016-02-23 2016-02-23 支援装置、支援方法及びプログラム Active JP6665576B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016031761A JP6665576B2 (ja) 2016-02-23 2016-02-23 支援装置、支援方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016031761A JP6665576B2 (ja) 2016-02-23 2016-02-23 支援装置、支援方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2017151594A true JP2017151594A (ja) 2017-08-31
JP6665576B2 JP6665576B2 (ja) 2020-03-13

Family

ID=59740843

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016031761A Active JP6665576B2 (ja) 2016-02-23 2016-02-23 支援装置、支援方法及びプログラム

Country Status (1)

Country Link
JP (1) JP6665576B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020129371A (ja) * 2019-02-07 2020-08-27 富士通株式会社 自動化されたソフトウェアプログラム修復
US11392371B2 (en) 2018-11-28 2022-07-19 Fujitsu Limited Identification of a partial code to be refactored within a source code

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319611A (ja) * 1996-05-28 1997-12-12 Matsushita Electric Works Ltd プログラム開発支援装置
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
JP2015026276A (ja) * 2013-07-26 2015-02-05 Necエンジニアリング株式会社 静的解析装置、静的解析方法、および、コンピュータ・プログラム
JP2016018307A (ja) * 2014-07-07 2016-02-01 富士通株式会社 開発支援プログラム,開発支援方法及び開発支援装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09319611A (ja) * 1996-05-28 1997-12-12 Matsushita Electric Works Ltd プログラム開発支援装置
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
JP2015026276A (ja) * 2013-07-26 2015-02-05 Necエンジニアリング株式会社 静的解析装置、静的解析方法、および、コンピュータ・プログラム
JP2016018307A (ja) * 2014-07-07 2016-02-01 富士通株式会社 開発支援プログラム,開発支援方法及び開発支援装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11392371B2 (en) 2018-11-28 2022-07-19 Fujitsu Limited Identification of a partial code to be refactored within a source code
JP2020129371A (ja) * 2019-02-07 2020-08-27 富士通株式会社 自動化されたソフトウェアプログラム修復
JP7384054B2 (ja) 2019-02-07 2023-11-21 富士通株式会社 自動化されたソフトウェアプログラム修復

Also Published As

Publication number Publication date
JP6665576B2 (ja) 2020-03-13

Similar Documents

Publication Publication Date Title
EP3616066B1 (en) Human-readable, language-independent stack trace summary generation
CN110188135B (zh) 文件生成方法及设备
US11835987B2 (en) Methods and apparatus for finding long methods in code
US10740713B2 (en) Generation of WBS model data
CN109117141B (zh) 简化编程的方法、装置、电子设备、计算机可读存储介质
CN110990053A (zh) 机器学习方案模板的创建方法、使用方法及装置
US8214245B2 (en) Method and system for synchronizing inclusive decision branches
JP6258159B2 (ja) プログラム情報生成システム、方法、及びプログラム
US20180025162A1 (en) Application program analysis apparatus and method
JP6256115B2 (ja) 操作探索プログラム、操作探索方法、および操作探索装置
JP6665576B2 (ja) 支援装置、支援方法及びプログラム
JP5937245B1 (ja) 運用手順評価装置および運用手順評価プログラム
JP6191440B2 (ja) スクリプト管理プログラム、スクリプト管理装置及びスクリプト管理方法
US20200326952A1 (en) Modification procedure generation device, modification procedure generation method and storage medium for storing modification procedure generation program
CN112579475A (zh) 代码测试方法、装置、设备及可读存储介质
JP6403527B2 (ja) 設計流用支援装置、設計流用支援方法およびプログラム
JP2011191985A (ja) シンボリック実行支援プログラム、方法及び装置
CN109189370B (zh) 软件组件的生成方法、装置、设备及计算机可读存储介质
JP5900212B2 (ja) テストデータ生成装置、該プログラム、及び該方法
JP2012048329A (ja) オブジェクト指向プログラム生成装置、その方法、プログラム
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
WO2015135182A1 (en) Method and apparatus for evaluating performance of real-time system
US9870257B1 (en) Automation optimization in a command line interface
JP2018121245A (ja) 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム

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 Request for written amendment filed

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