(57)【要約】      （修正有）【課題】ソースコードにおいてバグを含んでいる可能性の高い箇所を自動的に推定可能なソースコード評価装置を提供する。【解決手段】ソースコード評価装置１０において差分検出部１１は、ソースコードの変更前後の差分となる記述を検出し、差分がバグの修正によるものであるかを判定する。字句ベクトル生成部１２は、差分となる記述を字句に分割し、各字句の種別に応じて定義された数値を、差分となる記述における各字句の順で配列したベクトルを生成する。学習部１３は、ベクトルと差分検出部による判定結果との関係を学習する。ウインドウ設定部１４は、バグの有無の評価対象とされたソースコードに対して、所定の個数の字句が含まれるウインドウを設定する。評価対象解析部１５は、ウインドウに含まれる各字句についてベクトルを生成する。認識部１６は、生成したベクトルと学習結果とに基づいて、ウインドウ内の記述にバグが含まれている可能性を評価する。【選択図】図２
2019021037.tif 000002
【特許請求の範囲】
【請求項１】
第１のソースコードと前記第１のソースコードの変更後の第２のソースコードとの差分となる記述を検出し、検出された差分の内容に基づいて、前記差分がバグの修正によるものであるか否かを判定する差分検出部と、
前記差分となる記述を字句に分割し、分割された各字句の種別に応じて定義された数値を前記記述における前記各字句の順番で配列したベクトルを生成する生成部と、
前記ベクトルと前記差分検出部による判定結果との関係を学習する学習部と、
所定の個数の字句が含まれるウインドウを第３のソースコードに設定する設定部と、
前記設定部により設定されたウインドウに含まれる各字句について前記ベクトルを生成し、生成したベクトルと前記学習部による学習結果とに基づいて、前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性を評価する評価部と、を有し、
前記設定部は、
前記評価部により前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性が評価された場合、前記ウインドウを所定の字句数分スライドさせる、ソースコード評価装置。
【請求項２】
前記設定部は、
前記評価部により前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性が評価された場合、前記ウインドウを１字句分スライドさせる、請求項１に記載のソースコード評価装置。
【請求項３】
前記生成部及び前記評価部は、
ソースコードにおける関連性が相対的に高い字句の種別に対応する数値の違いは相対的に小さくなり、ソースコードにおける関連性が相対的に低い字句の種別に対応する数値の違いは相対的に大きくなるように前記種別に応じた数値が定義されているＤＢを参照して、前記ベクトルを生成する、請求項１又は２に記載のソースコード評価装置。
【請求項４】
前記学習部は、
前記ベクトルの中央に配置されている数値から前後方向に所定数の数値を抽出し、抽出された数値のベクトルと前記差分検出部による判定結果との関係を学習する、請求項１乃至３の何れか一項に記載のソースコード評価装置。
【請求項５】
第１のソースコードと前記第１のソースコードの変更後の第２のソースコードとの差分となる記述を検出し、検出された差分の内容に基づいて、前記差分がバグの修正によるものであるか否かを判定する差分検出手順と、
前記差分となる記述を字句に分割し、分割された各字句の種別に応じて定義された数値を前記記述における前記各字句の順番で配列したベクトルを生成する生成手順と、
前記ベクトルと前記差分検出手順による判定結果との関係を学習する学習手順と、
所定の個数の字句が含まれるウインドウを第３のソースコードに設定する設定手順と、
前記設定手順により設定されたウインドウに含まれる各字句について前記ベクトルを生成し、生成したベクトルと前記学習手順による学習結果とに基づいて、前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性を評価する評価手順と、をコンピュータが実行し、
前記設定手順は、
前記評価手順により前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性が評価された場合、前記ウインドウを所定の字句数分スライドさせる、ソースコード評価方法。
【請求項６】
第１のソースコードと前記第１のソースコードの変更後の第２のソースコードとの差分となる記述を検出し、検出された差分の内容に基づいて、前記差分がバグの修正によるものであるか否かを判定する差分検出手順と、
前記差分となる記述を字句に分割し、分割された各字句の種別に応じて定義された数値を前記記述における前記各字句の順番で配列したベクトルを生成する生成手順と、
前記ベクトルと前記差分検出手順による判定結果との関係を学習する学習手順と、
所定の個数の字句が含まれるウインドウを第３のソースコードに設定する設定手順と、
前記設定手順により設定されたウインドウに含まれる各字句について前記ベクトルを生成し、生成したベクトルと前記学習手順による学習結果とに基づいて、前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性を評価する評価手順と、をコンピュータに実行させ、
前記設定手順は、
前記評価手順により前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性が評価された場合、前記ウインドウを所定の字句数分スライドさせる、ソースコード評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード評価装置、ソースコード評価方法及びソースコード評価プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発において、バグの検出作業は、ソフトウェアの品質を確保するために重要な作業である。
【０００３】
一般的に、バグの検出は、開発者等によって作成されたテスト仕様書に基づくテストの実施により行われている。このような作業は、作業者に対する作業負担が大きく、効率性に難がある。
【０００４】
そこで、従来、バグの検出を支援するための技術が検討されている（例えば、非特許文献１、非特許文献２）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Y. Higo, K. Murao, S. Kusumoto, K. Inoue, "Predicting Fault-Prone Modules Based on Metrics Transitions", DEFECTS '08.
【非特許文献２】S. Kim, T. Zimmermann, E.J. Whitehead, and A. Zeller, "Predicting faults from cached history," ICSE '07.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の従来技術では、バグを含んでいそうな箇所を、字句単位等の詳細な単位で自動的に推定するのが困難であった。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、ソースコードにおいてバグを含んでいる可能性の高い箇所を自動的に推定可能とすることを目的とする。
【課題を解決するための手段】
【０００８】
そこで、上記課題を解決するため、ソースコード評価装置は、第１のソースコードと前記第１のソースコードの変更後の第２のソースコードとの差分となる記述を検出し、検出された差分の内容に基づいて、前記差分がバグの修正によるものであるか否かを判定する差分検出部と、前記差分となる記述を字句に分割し、分割された各字句の種別に応じて定義された数値を前記記述における前記各字句の順番で配列したベクトルを生成する生成部と、前記ベクトルと前記差分検出部による判定結果との関係を学習する学習部と、所定の個数の字句が含まれるウインドウを第３のソースコードに設定する設定部と、前記設定部により設定されたウインドウに含まれる各字句について前記ベクトルを生成し、生成したベクトルと前記学習部による学習結果とに基づいて、前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性を評価する評価部と、を有し、前記設定部は、前記評価部により前記ウインドウに含まれる各字句が示す記述にバグが含まれている可能性が評価された場合、前記ウインドウを所定の字句数分スライドさせる。
【発明の効果】
【０００９】
ソースコードにおいてバグを含んでいる可能性の高い箇所を自動的に推定可能とすることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態におけるソースコード評価装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態におけるソースコード評価装置の機能構成例を示す図である。
【図３】学習処理の処理手順の一例を説明するためのフローチャートである。
【図４】差分の検出とバグ修正有無ラベルの付与とを説明するための図である。
【図５】字句ベクトルの生成を説明するための図である。
【図６】字句ベクトルとバグ修正有無ラベルとの関係の学習を説明するための図である。
【図７】ニューラルネットワークの一例を示す図である。
【図８】ソースコードの評価処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるソースコード評価装置のハードウェア構成例を示す図である。図１のソースコード評価装置１０は、それぞれバスＢで接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１２】
ソースコード評価装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１により行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしても良い。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１３】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってソースコード評価装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６は、プログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７は、キーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１４】
図２は、本発明の実施の形態におけるソースコード評価装置の機能構成例を示す図である。図２において、ソースコード評価装置１０は、差分検出部１１、字句ベクトル生成部１２、学習部１３、ウインドウ設定部１４、評価対象解析部１５、及び認識部１６等を有する。これら各部は、ソースコード評価装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００１５】
また、ソースコード評価装置１０は、ＶＣＳリポジトリ１２１、差分記憶部１２２、ラベル記憶部１２３、字句ＤＢ１２４、字句ベクトル記憶部１２５、及び学習情報記憶部１２６を利用する。これら各種記憶部は、例えば、メモリ装置１０３、補助記憶装置１０２、又はソースコード評価装置１０にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
【００１６】
ＶＣＳリポジトリ１２１は、非図示のバージョン管理システム（ＶＣＳ（Version Control System））のリポジトリである。例えば、ＶＣＳリポジトリ１２１には、ソースコードのファイルとその変更履歴やリビジョン番号等が記憶されている。
【００１７】
差分検出部１１は、ＶＣＳリポジトリ１２１に記憶されている情報に基づいて、ソースコードの変更前後（改版前後）の差分を検出する。検出された差分に関する情報は、差分記憶部１２２に記憶される。また、差分検出部１１は、差分毎に、当該差分の内容に基づいて、当該差分がバグの修正によるものであるか否かを判定し、判定結果を示すラベル（以下、「バグ修正有無ラベル」という。）を各差分に関連付けてラベル記憶部１２３に記憶する。
【００１８】
字句ベクトル生成部１２は、差分記憶部１２２に記憶された各差分について、当該差分となる記述（ソースコード上の記述）を字句（トークン）に分割する。字句ベクトル生成部１２は、各字句の種別に応じて定義された数値を、差分となる記述における各字句の順番で配置したベクトルを生成する。以下、当該ベクトルを「字句ベクトル」という。生成された字句ベクトルは、字句ベクトル記憶部１２５に記憶される。なお、字句の種別に応じて定義された数値は、字句ＤＢ１２４に記憶されている。
【００１９】
学習部１３は、各字句ベクトルと、当該字句ベクトルの生成元の差分に関連付けられているバグ修正有無ラベルとの関係を学習し、学習結果を学習情報記憶部１２６に記憶する。
【００２０】
ウインドウ設定部１４は、バグの有無の評価対象とされたソースコードに対して、予め決められた個数の字句で構成されるウインドウ（以下、「字句ウインドウ」という。）を設定する。また、ウインドウ設定部１４は、字句ウインドウ内にバグが含まれている可能性があるか否かが評価された場合、字句ウインドウを１字句分スライドさせる。
【００２１】
評価対象解析部１５は、ウインドウ設定部１４によって設定された字句ウインドウ内の字句について、字句ベクトルを生成する。
【００２２】
認識部１６は、評価対象解析部１５によって生成された字句ベクトルを、学習情報記憶部１２６に記憶されている学習結果に適用して、当該字句ベクトルに対応する記述（すなわち、字句ウインドウ内の字句より成る記述）にバグが含まれている可能性があるか否かを評価する。
【００２３】
以下、ソースコード評価装置１０が実行する処理手順について説明する。図３は、学習処理の処理手順の一例を説明するためのフローチャートである。図３の処理手順は、例えば、ユーザによって学習実施の指示が入力されると開始される。
【００２４】
まず、差分検出部１１は、或るプログラムの全てのソースコードについて、ＶＣＳリポジトリ１２１に記憶されている、改版前後の２つのリビジョン毎に差分を検出（抽出）する（ステップＳ１０１）。そして、差分検出部１１は、検出された差分を差分記憶部１２２に記憶する。なお、差分は、例えば、ｄｉｆｆの出力形式で生成されても良い。
【００２５】
続いて、差分検出部１１は、検出された差分毎に、当該差分の内容に基づいて、当該差分がバグ修正によるものであるか否かを判定し、判定結果を示すバグ修正有無ラベルを当該差分に付与する（ステップＳ１０２）。付与されたバグ修正有無ラベルは、各差分に関連付けられてラベル記憶部１２３に記憶される。差分とバグ修正有無ラベルとの関連付けは、例えば、差分記憶部１２２に記憶された各差分の識別情報（以下、「差分ＩＤ」という。）と、修正有無ラベルとの関連付けによって実現されても良い。
【００２６】
図４は、差分の検出とバグ修正有無ラベルの付与とを説明するための図である。図４には、リビジョン１〜リビジョン６の変更履歴を有する或るソースコードについて、前後の２つのリビジョン毎（すなわち、変更前のリビジョンＮ及び変更後のリビジョンＮ＋１毎）に差分が検出される例が示されている。具体的には、リビジョン１とリビジョン２との差分として、差分ｄ１が検出され、リビジョン２とリビジョン３との差分として、差分ｄ２が検出され、リビジョン３とリビジョン４との差分として、差分ｄ３が検出されている。
【００２７】
差分の内容は、追加された記述、削除された記述である。図４では、追加された記述に対しては「＋」が付与され、削除された記述に対しては「−」が付与されている。なお、差分は、必ずしも行単位でなくても良い。１文又は１つの式が複数行に跨る場合があるからである。例えば、改行コードが検出されるまでの範囲を１つの単位として、当該単位毎に差分が検出されても良い。
【００２８】
また、図４では、各差分に対するバグ修正有無ラベルＬ１〜Ｌ３が示されている。バグ修正有無ラベルの値は、「バグ修正である」又は「バグ修正でない」のいずれかである。本実施の形態では、相互に対応する箇所について、減った記述と増えた記述の双方が存在する差分（すなわち、或る記述が他の記述に置き換わった箇所）について「バグ修正である」と判定され、そうでない差分については「バグ修正でない」と判定される。他の記述に置き換えられた箇所は、経験的にバグの修正である可能性が高いからである。
【００２９】
続いて、字句ベクトル生成部１２は、差分記憶部１２２に記憶された差分毎に、当該差分の内容（ソースコードの記述）について字句解析を行って、当該記述を字句（トークン）に分解する（ステップＳ１０３）。なお、「バグ修正である」のバグ修正有無ラベルが付与された差分については、削除された記述と追加された記述とが含まれている。この場合、削除された記述が各字句に分割される。
【００３０】
続いて、字句ベクトル生成部１２は、各字句について、当該字句の種別（識別子、変数の基本型、制御構造を表すキーワード、括弧等）に対応付けられて字句ＤＢ１２４に記憶されている数値を取得する（ステップＳ１０４）。続いて、字句ベクトル生成部１２は、取得された数値を、各字句の並び順に配列することで、字句ベクトルを生成し、当該字句ベクトルを字句ベクトル記憶部１２５に記憶する（ステップＳ１０５）。各字句ベクトルは、生成元の差分の差分ＩＤと関連付けられて字句ベクトル記憶部１２５に記憶される。
【００３１】
図５は、字句ベクトルの生成を説明するための図である。図５では、差分ｄ２のうちの削除された記述が字句に分割され、各字句の種別（条件分、識別子）に対応した数値の配列が、字句ベクトルｖ２として生成される例が示されている。すなわち、字句ベクトルは、削除された記述について生成される。或る記述が他の記述に置き換えられた場合、当該或る記述（すなわち、削除された記述）にバグが含まれていた可能性が高いからである。
【００３２】
Ｎ個の字句から成る差分については、Ｎ次元の字句ベクトルが生成される。また、型や識別子等と、制御構造を表すキーワードや括弧等とで、数値には大きな差がつけられる。すなわち、ソースコードにおける関連性が相対的に高い各種別に対応する数値の違いが相対的に小さくなり、ソースコードにおける関連性が相対的に低い各種別に対応する数値の違いが相対的に大きくなるように種別に応じた数値が字句ＤＢ１２４に定義されている。そうすることで、記述毎のパターンの違いを顕著なものとすることができ、ソースコードの意味合いを定義付けることができる。
【００３３】
具体的には、図５では、制御構造を表す字句「ｉｆ」の数値は、２００であり、他の字句と大きく異なっている。また、字句「（」と字句「）」とは、対応関係を有するため、それぞれに対応する数値は１００、１０１であり、その差は小さい。
【００３４】
続いて、学習部１３は、差分毎に、字句ベクトル及びバグ修正有無ラベルの組を、学習アルゴリズムに入力し、字句ベクトルとバグ修正有無ラベルとの関係を学習する（ステップＳ１０６）。すなわち、ソースコードの記述のパターンと、バグの有無との関係が学習される。学習部１３は、学習結果を学習情報記憶部１２６に記憶する。なお、学習は、例えば、教師あり二値分類器を利用して行われる。
【００３５】
図６は、字句ベクトルとバグ修正有無ラベルとの関係の学習を説明するための図である。図６では、差分ｄ２について生成された字句ベクトルｖ２と、差分ｄ３に対して付与されたバグ修正有無ラベルＬ２との関係が学習されて、学習結果が学習情報記憶部１２６に記憶される例が示されている。
【００３６】
例えば、教師あり二値分類器においてニューラルネットワークが用いられる場合、図７に示されるようなニューラルネットワークを規定するパラメータ（係数）が、学習情報記憶部１２６に記憶される。なお、ニューラルネットワークについては、例えば、「Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (8 October 1986). "Learning representations by back-propagating errors". Nature 323 (6088): 533-536.」に詳しい。
【００３７】
なお、学習部１３は、字句ベクトルの次元数が、二値分類器の入力次元数（図７では６４字句）に足りないときは、字句ベクトルを中央に寄せて左右をゼロで埋めることで、字句ベクトルの次元数を拡張する。また、学習部１３は、字句ベクトルの次元数が、二値分類器の入力次元数よりも多いときは、字句ベクトルの中央に配置されている数値から前後方向に入力次元数分の字句を抽出することで、字句ベクトルの次元数を縮小する。すなわち、ソースコードの各行の長さにはばらつきがあるところ、ソースコードとしての特徴は一部であっても捉えることができる。また、中央寄せにより、重要度の高い情報を中央に寄せることができるため、主要な特徴を反映させることで、精度の高い学習を行うことができる。
【００３８】
次に、学習情報記憶部１２６に記憶された学習結果に基づいて、或るソースコードについて、バグの有無の可能性を評価する処理について説明する。
【００３９】
図８は、ソースコードの評価処理の処理手順の一例を説明するためのフローチャートである。
【００４０】
まず、ウインドウ設定部１４は、バグの有無の評価対象とされたソースコードに対して、字句ウインドウを設定する（ステップＳ２０１）。字句ウインドウは、例えば、ソースコードの先頭から設定される。より具体的には、例えば、字句ウインドウがＭ個の字句で構成されるとした場合、ソースコードの先頭から順にＭ個の字句で構成される字句ウインドウを設定する。
【００４１】
続いて、評価対象解析部１５は、字句ウインドウ内の字句について字句ベクトルを生成する（ステップＳ２０２）。字句ウインドウがＭ個の字句で構成されるとした場合、Ｍ次元の字句ベクトルが生成される。字句ベクトルの生成方法は、上記した通りである。
【００４２】
続いて、認識部１６は、生成された字句ベクトルに対して、学習情報記憶部１２６の学習結果を適用して、当該字句ベクトルに対応する記述（すなわち、字句ウインドウ内の字句より成る記述）にバグが含まれている可能性（バグの潜在可能性）を評価する（ステップＳ２０３）。例えば、図７に示されるようなニューラルネットワークに対して、字句ベクトルが入力されても良い。この場合、認識部１６は、字句ベクトルの次元数が、二値分類器の入力次元数（図７では６４字句）に足りないときは、字句ベクトルを中央に寄せて左右をゼロで埋めることで、字句ベクトルの次元数を拡張する。また、認識部１６は、字句ベクトルの次元数が、二値分類器の入力次元数よりも多いときは、字句ベクトルの中央を取り出すことで、字句ベクトルの次元数を縮小する。
【００４３】
続いて、ウインドウ設定部１４は、当該ソースコードにおいて、字句ウインドウの次に字句があるか否かを判定する（ステップＳ２０４）。字句ウインドウの次に字句があるとは、当該ソースコードにおいて、字句ウインドウ内の最後尾にある字句の次に字句が存在することを言う。当該次の字句は、当該最後尾にある字句と同一の行でなくても良い（すなわち、当該次の字句は、当該最後尾にある字句が記述されている行の次の行に記述されていても良い。）。
【００４４】
ステップＳ２０４において、次の字句があると判定された場合、ウインドウ設定部１４は、字句ウインドウを１字句分スライドさせる（ステップＳ２０５）。すなわち、字句ウインドウの２番目からＭ番目までの字句が１番目からＭ−１番目の字句となり、かつ、当該次の字句がＭ番目の字句となるように、字句ウインドウをスライドさせる。
【００４５】
より具体的に説明すると、例えば、５個の字句「ｉｆ」、「（」、「ｐ」、「−＞」、及び「．」で字句ウインドウが構成されていたとする。この場合、上記のステップＳ２０４で字句ウインドウの次にあると判定された字句が「ｒ」であったとすれば、上記のステップＳ２０５で字句ウインドウをスライドさせることで、スライド後の字句ウインドウは５個の字句「（」、「ｐ」、「−＞」、「．」、及び「ｒ」で構成されることになる。
【００４６】
そして、スライド後の字句ウインドウを用いてステップＳ２０２の処理が実行される。すなわち、評価対象のソースコードにおいて、字句ウインドウを１字句ずつスライドさせながら、上記のステップＳ２０２〜ステップＳ２０４の処理が実行される。これにより、評価対象とされたソースコードにおいて、字句ウインドウを１字句ずつスライドさせながら、字句ウインドウ内の字句より成る記述におけるバグの潜在可能性が評価される。
【００４７】
なお、上記のステップＳ２０５では、字句ウインドウを１字句ずつスライドさせるものとしたが、これに限られない。例えば、字句ウインドウがＭ個の字句で構成されている場合、Ｍ個以下の任意の個数の字句ずつスライドさせても良い。
【００４８】
ステップＳ２０４において、次の字句がないと判定された場合（すなわち、字句ウインドウの最後尾の字句と、ソースコードの最後尾の字句とが一致する場合）、認識部１６は、上記のステップＳ２０３における評価結果を出力する（ステップＳ２０６）。なお、ファイルの終わりを示す制御コード（例えばＥＯＦ（End Of File））を検出すことで、次の字句がないと判定されても良い。
【００４９】
なお、評価対象のソースコードが新規のソースコードである場合、図８の処理手順は、当該ソースコードの各記述に対して先頭から順に実行されても良い（すなわち、上記のステップＳ２０１で設定する字句ウインドウの先頭の字句を、ソースコードの先頭の字句としても良い。）。一方、既存のソースコードに対して修正が行われた場合、修正された一部の記述に対して図８の処理が実行されても良い（すなわち、上記のステップＳ２０１で設定する字句ウインドウの先頭の字句を、当該修正された一部の記述における先頭の字句としても良い。）。このとき、修正された記述は、ユーザによって指定されれば良い。
【００５０】
上述したように、本実施の形態によれば、プログラムの製造開始以降に、ソースコードにおいてバグを含んでいる可能性の高い記述を自動的に推定可能とすることができる。このとき、本実施の形態によれば、字句ウインドウ内の字句より成る記述毎に、バグを含んでいる可能性の高い記述を自動的に推定可能とすることができる。
【００５１】
更に、字句ウインドウを１字句ずつスライドさせることで、字句単位で、バグを含んでいる可能性の高い字句を自動的に推定可能とすることができる。すなわち、スライド前後の字句ウインドウ内の記述について、スライド前の字句ウインドウ内の記述にバグが潜在している可能性があると評価され、かつ、スライド後の字句ウインドウ内の記述にバグが潜在している可能性がないと評価されたとする。この場合、スライド前の字句ウインドウの先頭の字句にバグが潜在している可能性があると評価することができる。したがって、例えばプログラマ等に対して、当該先頭の字句の修正を提案すること等ができる。
【００５２】
その結果、例えば、大規模ソフトウェアの開発においては、開発期間短縮等を可能とし、生産性の向上を期待することができる。
【００５３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００５４】
１０          ソースコード評価装置
１１          差分検出部
１２          字句ベクトル生成部
１３          学習部
１４          ウインドウ設定部
１５          評価対象解析部
１６          認識部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１２１        ＶＣＳリポジトリ
１２２        差分記憶部
１２３        ラベル記憶部
１２４        字句ＤＢ
１２５        字句ベクトル記憶部
１２６        学習情報記憶部
Ｂ            バス
【図１】
2019021037.tif 000003
【図２】
2019021037.tif 000004
【図３】
2019021037.tif 000005
【図４】
2019021037.tif 000006
【図５】
2019021037.tif 000007
【図６】
2019021037.tif 000008
【図７】
2019021037.tif 000009
【図８】
2019021037.tif 000010