【手続補正書】
【提出日】平成30年5月18日(2018.5.18)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
本発明を、例示的な実施形態を参照しながら具体的に図示・説明したが、当業者であれば、添付の特許請求の範囲により包含される本発明の範囲を逸脱することなく形態や細部に様々な変更を施せることを理解するであろう。
なお、本発明は、態様として以下の内容を含む。
〔態様１〕
コーパスを提供する方法であって、
複数のソフトウェアファイルを取得する過程と、
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを決定する過程と、
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトをデータベースに記憶する過程と、
を備える、方法。
〔態様２〕
態様１に記載の方法において、さらに、
前記複数のソフトウェアファイルにおいてビルドファイルを探し出す過程と、
コンパイラ呼出しを生成するように前記ビルドファイルを用いる過程と、
を備える、方法。
〔態様３〕
態様２に記載の方法において、さらに、
前記コンパイラ呼出しを低水準仮想機械（ＬＬＶＭ）フロントエンド呼出しに変換する過程、
を備える、方法。
〔態様４〕
態様３に記載の方法において、前記ＬＬＶＭフロントエンド呼出しが、アーチファクトを生成するように、変更されるか又は設けられる、方法。
〔態様５〕
態様２に記載の方法において、前記ビルドファイルが、ａｕｔｏｃｏｍｆファイル、ｃｍａｋｅファイル、ａｕｔｏｍａｋｅファイル、ｍａｋｅファイル、およびベンダーの命令からなる群から選択される、方法。
〔態様６〕
態様２に記載の方法において、前記コンパイラ呼出しを生成するように前記ビルドファイルを用いる過程が、少なくとも部分的に完成したビルドを作成するように前記ビルドファイルを用いることを試みることを含む、方法。
〔態様７〕
態様２に記載の方法において、前記ビルドファイルを用いる過程が、前記ビルドファイルを自動的に用いることを含む、方法。
〔態様８〕
態様２に記載の方法において、生成される前記コンパイラ呼出しは、システムコールフックを用いて、元来のビルドプロセスに少なくとも１つのビルドステップを特定して設けることにより決定される、方法。
〔態様９〕
態様８に記載の方法において、前記システムコールフックが、ｓ−ｔｒａｃｅフックを含む、方法。
〔態様１０〕
態様１に記載の方法において、複数のソフトウェアファイルを取得する過程が、複数のソフトウェアファイルを自動的に取得することを含む、方法。
〔態様１１〕
態様１０に記載の方法において、複数のソフトウェアファイルを自動的に取得することが、複数のコンピュータに前記複数のソフトウェアファイルを一括して取得させることを含む、方法。
〔態様１２〕
態様１０に記載の方法において、複数のソフトウェアファイルを自動的に取得することが、前記複数のソフトウェアファイルのうちの少なくとも一部を公開レポジトリから自動的に取得することを含む、方法。
〔態様１３〕
態様１０に記載の方法において、前記複数のソフトウェアファイルが、ソフトウェアパッケージの少なくとも１つの改変を含む、方法。
〔態様１４〕
態様１３に記載の方法において、さらに、
前記ソフトウェアパッケージの前記少なくとも１つの改変のアーチファクト間の複数の関係、
を備え、前記複数の関係が、前記データベースに記憶される、方法。
〔態様１５〕
態様１に記載の方法において、さらに、
前記ソフトウェアファイルのそれぞれを中間表現に変換する過程と、
前記ソフトウェアファイルのそれぞれについての前記中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定する過程と、
を備える、方法。
〔態様１６〕
態様１に記載の方法において、さらに、
前記複数のソフトウェアファイルのうちの少なくとも１つを複数のコンピュータに分散させる過程と、
前記複数のコンピュータに、前記ソフトウェアファイルのそれぞれを中間表現に一括して変換させて前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定させる過程と、
を備える、方法。
〔態様１７〕
態様１に記載の方法において、前記複数のアーチファクトが、コールグラフ、制御フローグラフ、ｕｓｅ−ｄｅｆチェイン、ｄｅｆ−ｕｓｅチェイン、支配木、基本ブロック、変数、定数、ブランチセマンティック、およびプロトコルのうちの少なくとも１つを含む、方法。
〔態様１８〕
態様１に記載の方法において、前記複数のアーチファクトが、システムコールトレースおよび実行トレースのうちの少なくとも１つを含む、方法。
〔態様１９〕
態様１に記載の方法において、前記複数のアーチファクトが、ループ不変条件、型情報、Ｚ言語、およびラベル遷移体系表現のうちの少なくとも１つを含む、方法。
〔態様２０〕
態様１に記載の方法において、前記複数のアーチファクトが、インラインコードコメント、コミット履歴、マニュアル化ファイル、および共通脆弱性識別子ソース登録のうちの少なくとも１つを含む、方法。
〔態様２１〕
態様１に記載の方法において、前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定する過程が、前記複数のアーチファクトのうちの少なくとも１つを、前記複数のソフトウェアファイルのうちの少なくとも１つから文字列を抽出することによって決定することを含む、方法。
〔態様２２〕
態様１に記載の方法において、前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定する過程が、前記複数のソフトウェアファイルのうちの少なくとも一部を、その備えられた環境で実行することを含む、方法。
〔態様２３〕
態様２２に記載の方法において、前記その備えられた環境が、仮想機械、エミュレータ、およびハイパーバイザからなる群から選択される、方法。
〔態様２４〕
態様１に記載の方法において、さらに、
前記ソフトウェアファイルのそれぞれについての前記複数のアーチファクトに関連付けられた複数の階層関係を生成する過程、
を備える、方法。
〔態様２５〕
態様１に記載の方法において、さらに、
前記複数のソフトウェアファイルを前記データベースに記憶する過程、
を備える、方法。
〔態様２６〕
態様１に記載の方法において、前記複数のソフトウェアファイルが、ソースコードフォーマットである、方法。
〔態様２７〕
態様１に記載の方法において、前記複数のソフトウェアファイルが、バイナリコードフォーマットである、方法。
〔態様２８〕
態様１に記載の方法において、前記データベースが、グラフデータベースである、方法。
〔態様２９〕
コーパスを提供する装置であって、
複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを記憶する少なくとも１つの記憶装置であって、前記複数のアーチファクトのうちの少なくとも一部が、前記複数のソフトウェアファイルのうちの少なくとも一部の中間表現から決定されたものである、少なくとも１つの記憶装置、
を備える、装置。
〔態様３０〕
コーパスを提供するシステムであって、
複数のソフトウェアファイルを有するソースと通信することが可能なインターフェースと、
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを記憶する少なくとも１つの記憶装置と、
前記インターフェース及び前記記憶装置に通信可能に接続されたプロセッサであって：
前記ソースから前記複数のソフトウェアファイルを取得するように；かつ、
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定するように；構成されているプロセッサと、
を備える、システム。
〔態様３１〕
態様３０に記載のシステムにおいて、前記インターフェースが、ネットワークインターフェースである、システム。
〔態様３２〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトを決定するように構成されている前記プロセッサが、前記ソフトウェアファイルのそれぞれを中間表現に変換して前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定するように構成されている前記プロセッサを含む、システム。
〔態様３３〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトを決定するように構成されている前記プロセッサが、前記複数のアーチファクトのうちの少なくとも１つを、前記複数のソフトウェアファイルのうちの少なくとも一部から文字列を抽出することによって決定するように構成されている前記プロセッサを含む、システム。
〔態様３４〕
態様３０に記載のシステムにおいて、前記複数のソフトウェアファイルを取得するように構成されている前記プロセッサが、前記複数のソフトウェアファイルをソフトウェアレポジトリから自動的に取り出すように構成されている前記プロセッサを含む、システム。
〔態様３５〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについてのグラフアーチファクトを含む、システム。
〔態様３６〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての開発中アーチファクトを含む、システム。
〔態様３７〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての動的アーチファクトを含む、システム。
〔態様３８〕
態様３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての導出アーチファクトを含む、システム。
〔態様３９〕
実行可能なプログラムが記憶された、非過渡的なコンピュータ読取り可能な媒体であって、前記プログラムが、処理装置に：
複数のソフトウェアファイルを自動的に取得する手順；
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを、前記ソフトウェアファイルのそれぞれを中間表現に変換させて、前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定することによって決定する手順；および
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトをデータベースに記憶する手順；
を実行させる、非過渡的なコンピュータ読取り可能な媒体。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コーパスを提供する方法であって、
複数のソフトウェアファイルを取得する過程と、
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを決定する過程と、
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトをデータベースに記憶する過程と、
を備える、方法。
【請求項２】
請求項１に記載の方法において、さらに、
前記複数のソフトウェアファイルにおいてビルドファイルを探し出す過程と、
コンパイラ呼出しを生成するように前記ビルドファイルを用いる過程と、
を備える、方法。
【請求項３】
請求項２に記載の方法において、さらに、
前記コンパイラ呼出しを低水準仮想機械（ＬＬＶＭ）フロントエンド呼出しに変換する過程、
を備える、方法。
【請求項４】
請求項３に記載の方法において、前記ＬＬＶＭフロントエンド呼出しが、アーチファクトを生成するように、変更されるか又は設けられる、方法。
【請求項５】
請求項２に記載の方法において、前記ビルドファイルが、ａｕｔｏｃｏｍｆファイル、ｃｍａｋｅファイル、ａｕｔｏｍａｋｅファイル、ｍａｋｅファイル、およびベンダーの命令からなる群から選択される、方法。
【請求項６】
請求項２に記載の方法において、前記コンパイラ呼出しを生成するように前記ビルドファイルを用いる過程が、少なくとも部分的に完成したビルドを作成するように前記ビルドファイルを用いることを試みることを含む、方法。
【請求項７】
請求項２に記載の方法において、前記ビルドファイルを用いる過程が、前記ビルドファイルを自動的に用いることを含む、方法。
【請求項８】
請求項２に記載の方法において、生成される前記コンパイラ呼出しは、システムコールフックを用いて、元来のビルドプロセスに少なくとも１つのビルドステップを特定して設けることにより決定される、方法。
【請求項９】
請求項８に記載の方法において、前記システムコールフックが、ｓ−ｔｒａｃｅフックを含む、方法。
【請求項１０】
請求項１に記載の方法において、複数のソフトウェアファイルを取得する過程が、複数のソフトウェアファイルを自動的に取得することを含む、方法。
【請求項１１】
請求項１０に記載の方法において、複数のソフトウェアファイルを自動的に取得することが、複数のコンピュータに前記複数のソフトウェアファイルを一括して取得させることを含む、方法。
【請求項１２】
請求項１０に記載の方法において、複数のソフトウェアファイルを自動的に取得することが、前記複数のソフトウェアファイルのうちの少なくとも一部を公開レポジトリから自動的に取得することを含む、方法。
【請求項１３】
請求項１０に記載の方法において、前記複数のソフトウェアファイルが、ソフトウェアパッケージの少なくとも１つの改変を含む、方法。
【請求項１４】
請求項１３に記載の方法において、前記ソフトウェアパッケージの前記少なくとも１つの改変のアーチファクト間の複数の関係が、前記データベースに記憶される、方法。
【請求項１５】
請求項１に記載の方法において、さらに、
前記ソフトウェアファイルのそれぞれを中間表現に変換する過程と、
前記ソフトウェアファイルのそれぞれについての前記中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定する過程と、
を備える、方法。
【請求項１６】
請求項１に記載の方法において、さらに、
前記複数のソフトウェアファイルのうちの少なくとも１つを複数のコンピュータに分散させる過程と、
前記複数のコンピュータに、前記ソフトウェアファイルのそれぞれを中間表現に一括して変換させて前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定させる過程と、
を備える、方法。
【請求項１７】
請求項１に記載の方法において、前記複数のアーチファクトが、コールグラフ、制御フローグラフ、ｕｓｅ−ｄｅｆチェイン、ｄｅｆ−ｕｓｅチェイン、支配木、基本ブロック、変数、定数、ブランチセマンティック、およびプロトコルのうちの少なくとも１つを含む、方法。
【請求項１８】
請求項１に記載の方法において、前記複数のアーチファクトが、システムコールトレースおよび実行トレースのうちの少なくとも１つを含む、方法。
【請求項１９】
請求項１に記載の方法において、前記複数のアーチファクトが、ループ不変条件、型情報、Ｚ言語、およびラベル遷移体系表現のうちの少なくとも１つを含む、方法。
【請求項２０】
請求項１に記載の方法において、前記複数のアーチファクトが、インラインコードコメント、コミット履歴、マニュアル化ファイル、および共通脆弱性識別子ソース登録のうちの少なくとも１つを含む、方法。
【請求項２１】
請求項１に記載の方法において、前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定する過程が、前記複数のアーチファクトのうちの少なくとも１つを、前記複数のソフトウェアファイルのうちの少なくとも１つから文字列を抽出することによって決定することを含む、方法。
【請求項２２】
請求項１に記載の方法において、前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定する過程が、前記複数のソフトウェアファイルのうちの少なくとも一部を、その備えられた環境で実行することを含む、方法。
【請求項２３】
請求項２２に記載の方法において、前記その備えられた環境が、仮想機械、エミュレータ、およびハイパーバイザからなる群から選択される、方法。
【請求項２４】
請求項１に記載の方法において、さらに、
前記ソフトウェアファイルのそれぞれについての前記複数のアーチファクトに関連付けられた複数の階層関係を生成する過程、
を備える、方法。
【請求項２５】
請求項１に記載の方法において、さらに、
前記複数のソフトウェアファイルを前記データベースに記憶する過程、
を備える、方法。
【請求項２６】
請求項１に記載の方法において、前記複数のソフトウェアファイルが、ソースコードフォーマットである、方法。
【請求項２７】
請求項１に記載の方法において、前記複数のソフトウェアファイルが、バイナリコードフォーマットである、方法。
【請求項２８】
請求項１に記載の方法において、前記データベースが、グラフデータベースである、方法。
【請求項２９】
コーパスを提供する装置であって、
複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを記憶する少なくとも１つの記憶装置であって、前記複数のアーチファクトのうちの少なくとも一部が、前記複数のソフトウェアファイルのうちの少なくとも一部の中間表現から決定されたものである、少なくとも１つの記憶装置、
を備える、装置。
【請求項３０】
コーパスを提供するシステムであって、
複数のソフトウェアファイルを有するソースと通信することが可能なインターフェースと、
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを記憶する少なくとも１つの記憶装置と、
前記インターフェース及び前記記憶装置に通信可能に接続されたプロセッサであって：
前記ソースから前記複数のソフトウェアファイルを取得するように；かつ、
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトを決定するように；構成されているプロセッサと、
を備える、システム。
【請求項３１】
請求項３０に記載のシステムにおいて、前記インターフェースが、ネットワークインターフェースである、システム。
【請求項３２】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトを決定するように構成されている前記プロセッサが、前記ソフトウェアファイルのそれぞれを中間表現に変換して前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定するように構成されている前記プロセッサを含む、システム。
【請求項３３】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトを決定するように構成されている前記プロセッサが、前記複数のアーチファクトのうちの少なくとも１つを、前記複数のソフトウェアファイルのうちの少なくとも一部から文字列を抽出することによって決定するように構成されている前記プロセッサを含む、システム。
【請求項３４】
請求項３０に記載のシステムにおいて、前記複数のソフトウェアファイルを取得するように構成されている前記プロセッサが、前記複数のソフトウェアファイルをソフトウェアレポジトリから自動的に取り出すように構成されている前記プロセッサを含む、システム。
【請求項３５】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについてのグラフアーチファクトを含む、システム。
【請求項３６】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての開発中アーチファクトを含む、システム。
【請求項３７】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての動的アーチファクトを含む、システム。
【請求項３８】
請求項３０に記載のシステムにおいて、前記複数のアーチファクトが、前記複数のソフトウェアファイルのそれぞれについての導出アーチファクトを含む、システム。
【請求項３９】
実行可能なプログラムが記憶された、非過渡的なコンピュータ読取り可能な媒体であって、前記プログラムが、処理装置に：
複数のソフトウェアファイルを自動的に取得する手順；
前記複数のソフトウェアファイルのそれぞれについての複数のアーチファクトを、前記ソフトウェアファイルのそれぞれを中間表現に変換させて、前記ソフトウェアファイルのそれぞれについての当該中間表現から前記複数のアーチファクトのうちの少なくとも１つを決定することによって決定する手順；および
前記複数のソフトウェアファイルのそれぞれについての前記複数のアーチファクトをデータベースに記憶する手順；
を実行させる、非過渡的なコンピュータ読取り可能な媒体。