JP2022546636A - ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 - Google Patents
ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 Download PDFInfo
- Publication number
- JP2022546636A JP2022546636A JP2022526211A JP2022526211A JP2022546636A JP 2022546636 A JP2022546636 A JP 2022546636A JP 2022526211 A JP2022526211 A JP 2022526211A JP 2022526211 A JP2022526211 A JP 2022526211A JP 2022546636 A JP2022546636 A JP 2022546636A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- code
- target source
- training
- insight
- 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
Links
- 238000010801 machine learning Methods 0.000 title claims abstract description 168
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000009466 transformation Effects 0.000 claims abstract description 37
- 238000002372 labelling Methods 0.000 claims abstract description 35
- 238000012549 training Methods 0.000 claims description 171
- 230000015654 memory Effects 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 43
- 238000012360 testing method Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 10
- 230000004044 response Effects 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 5
- 230000035772 mutation Effects 0.000 claims description 5
- 238000000844 transformation Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Stored Programmes (AREA)
Abstract
Description
本開示は、ソースコード上で動作するソフトウェアツールのための機械学習モデルの生成に関する。
プログラミングツールまたはソフトウェア開発ツールは、ソフトウェア開発者が他のプログラムおよびアプリケーションを、作成、デバッグ、保守、またはその他の態様ではサポートするために使用するコンピュータプログラムである。この用語は通常、物理的なオブジェクトを修正するために複数のハンドツールを使用するのと同じように、タスクを達成するために組合わせることができる比較的単純なプログラムを指す。最も基本的なツールは、ソースコードエディタおよびコンパイラまたはインタープリタである。その他のツールは、言語、開発方法および個々のエンジニアに応じて多かれ少なかれ使用され、デバッガ、プロファイラ、または静的プログラムアナライザのように、個別のタスクに使用されることがよくある。静的プログラム分析は、実際にプログラムを実行せずに行われるコンピュータソフトウェアの分析である。ほとんどの場合、分析はあるバージョンのソースコードに対して行われる。ソフトウェア開発ツールは、たとえばコマンドラインから別個に実行される個別のプログラムの場合もあれば、統合開発環境(integrated development environment:IDE)と呼ばれることもある単一の大きなプログラムの一部である場合もある。
本開示のある態様は、コードインサイトを生成するための方法を提供する。方法は、データ処理ハードウェアにおいて、ターゲットソースコードのコードインサイトを要求するコードインサイト要求を、ソフトウェア開発ツールをビルドするためにターゲットソースコードを使用する開発者に関連付けられた開発者デバイスから受信することを備える。コードインサイト要求は、ターゲットソースコードと、ツールタイプインジケータとを含む。ツールタイプインジケータは、ソフトウェア開発ツールが、コードラベリングタイプのソフトウェア開発ツールまたはコード変形タイプのソフトウェア開発ツールのうちの1つからなることを指定する。方法はさらに、データ処理ハードウェアが、ツールタイプインジケータに基づいて、コードラベリングタイプのソフトウェア開発ツールまたはコード変形タイプのソフトウェア開発ツールのうちの指定された1つに関連付けられた訓練ソースコードで訓練された機械学習モデルを取得することを備える。方法はさらに、データ処理ハードウェアが、機械学習モデルを使用して、ターゲットソースコードのコードインサイトを生成することを備える。ツールタイプインジケータが、ソフトウェア開発ツールがコードラベリングタイプのソフトウェア開発ツールからなることを指定する場合、ターゲットソースコードのコードインサイトは、ターゲットソースコードの予測ラベルを含む。ツールタイプインジケータが、ソフトウェア開発ツールがコード変形タイプのソフトウェア開発ツールからなることを指定する場合、ターゲットソースコードのコードインサイトは、訓練ソースコードの予測コード変形を含む。方法はさらに、データ処理ハードウェアが、コードインサイトを開発者デバイスに送信することを備え、コードインサイトは、開発者デバイスによって受信されると、開発者デバイスで実行されているグラフィカルユーザインターフェイスに、コードインサイトを開発者デバイスの表示画面に表示させる。
詳細な説明
本開示の態様は、ソフトウェア開発ツールの機械学習モデルに関する。ソフトウェア開発者は、ソフトウェア開発ツールを使用して、ソフトウェアアプリケーション、ウェブサイト、または他のソフトウェアシステムもしくはコンポーネントを、作成、デバッグ、維持、またはその他の態様ではサポートする。ソフトウェア開発ツールは、たとえばコマンドインタープリタから別個に実行される個別のプログラムでもよい、または、統合開発環境(IDE)と呼ばれることが多い単一の大きなプログラムの一部である場合もある。プログラムのバグを発見し、アプリケーションの拡張時に新たなバグが発生するのを防ぎ、一般に認められたプログラミング手法に従うために、コードベースを認識するソフトウェア開発ツールが使用されることがある。コードベース(codebaseまたはcode base)は、特定のソフトウェアシステムまたはソフトウェアコンポーネント(たとえば、ソフトウェア開発ツール)をビルドするために使用されるソースコードの集合である。コードベースは通常、ソースコードリポジトリに格納される。コードベースは一般に、人間が書いたソースコードスニペットを含む。これらのソースコードスニペットは、非常に複雑であるため、または単に長いため、最も経験のあるソフトウェア開発者であっても、コードベースをちらっと見ただけでは、ソースコードスニペットを手動で検査することができないことがよくある。また、高水準プログラミング言語によって提供される抽象化によって、ソースコードとソフトウェアアプリケーションの動作との関係を理解することがさらに難しくなっている。プログラムのバグを発見するため、コードを拡張する際に新たなバグを発生させないため、および一般に認められたプログラミング手法に従うために、ソフトウェア開発者は、ソースコード上で動作するソフトウェア開発ツールをビルドする際に、機械学習モデルを活用することができる。
Claims (28)
- 方法(500)であって、
データ処理ハードウェア(144)において、ターゲットソースコード(210)のコードインサイト(400)を要求するコードインサイト要求(112)を、ソフトウェア開発ツール(418)をビルドするために前記ターゲットソースコード(210)を使用する開発者(202)に関連付けられた開発者デバイス(204)から受信することを備え、前記コードインサイト要求(112)は、
前記ターゲットソースコード(210)と、
前記ソフトウェア開発ツール(418)がコードラベリングタイプのソフトウェア開発ツールまたはコード変形タイプのソフトウェア開発ツールのうちの1つからなることを指定するツールタイプインジケータ(205)とを含み、前記方法はさらに、
前記データ処理ハードウェア(144)が、前記ツールタイプインジケータ(205)に基づいて、前記コードラベリングタイプのソフトウェア開発ツールまたは前記コード変形タイプのソフトウェア開発ツールのうちの指定された前記1つに関連付けられた訓練ソースコード(310)で訓練された機械学習モデル(308)を取得することと、
前記データ処理ハードウェアが、前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することとを備え、前記ターゲットソースコード(210)の前記コードインサイト(400)は、
前記ツールタイプインジケータ(205)が、前記ソフトウェア開発ツール(418)が前記コードラベリングタイプのソフトウェア開発ツール(418)からなることを指定する場合の前記ターゲットソースコード(210)の予測ラベル(400a)、または
前記ツールタイプインジケータ(205)が、前記ソフトウェア開発ツール(418)が前記コード変形タイプのソフトウェア開発ツールからなることを指定する場合の前記ターゲットソースコード(210)の予測コード変形のうちの1つを含み、前記方法はさらに、
前記データ処理ハードウェア(144)が、前記コードインサイト(400)を前記開発者デバイス(204)に送信することを備え、前記コードインサイト(400)は、前記開発者デバイス(204)によって受信されると、前記開発者デバイス(204)で実行されているグラフィカルユーザインターフェイス(220)に、前記コードインサイト(400)を前記開発者デバイス(204)の表示画面に表示させることを備える、方法。 - 前記データ処理ハードウェア(144)が、前記機械学習モデル(308)への入力に適した前記ターゲットソースコード(210)の構文表現に対応するターゲット特徴(212)のセットを、前記ターゲットソースコード(210)から抽出することをさらに備え、
前記機械学習モデル(308)は、
前記ターゲット特徴(212)のセットを入力として受信し、
前記ターゲットソースコード(210)の前記コードインサイト(400)を出力として生成するように構成されている、請求項1に記載の方法(500)。 - 前記ターゲットソースコード(210)の前記構文表現は、構文表現木を含む、請求項2に記載の方法(500)。
- 前記機械学習モデル(308)を取得することは、
前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)に格納されているソースコードリポジトリ(315)から、前記コードラベリングタイプのソフトウェア開発ツールまたは前記コード変形タイプのソフトウェア開発ツールのうちの指定された前記1つに関連付けられた前記訓練ソースコード(310)を選択し、かつ
機械学習モデル生成器(360)を使用して、選択された前記訓練ソースコード(310)で前記機械学習モデル(308)を訓練することによって、前記コードインサイト要求(110)を受信することに応答して、前記機械学習モデル(308)を生成することを含む、請求項1~3のいずれか1項に記載の方法(500)。 - 前記データ処理ハードウェア(144)が、前記機械学習モデル(308)を訓練するのに適した前記訓練ソースコード(310)の構文表現に対応する訓練特徴のセットを、選択された前記訓練ソースコード(310)から抽出することをさらに備える、請求項4に記載の方法(500)。
- 前記訓練ソースコード(310)の前記構文表現は、抽象構文木を含む、請求項5に記載の方法(500)。
- 前記コードインサイト要求(110)はさらに、前記コードインサイト(400)に関連付けられた、前記開発者によって定義された結果特性タイプ(207)を含み、
前記ツールタイプインジケータ(205)に基づいて前記機械学習モデル(308)を取得することはさらに、前記結果特性タイプ(207)に基づき、
前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することはさらに、前記機械学習モデル(308)を使用して、前記コードインサイト要求(110)の前記結果特性タイプ(207)に関連付けられた、前記コードインサイト(400)のエミュレートされた結果特性(320)を生成することを含む、請求項1~6のいずれか1項に記載の方法(500)。 - 前記データ処理ハードウェア(144)が、前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)に格納されているソースコードリポジトリ(315)から、前記コードインサイト要求(110)の前記結果特性タイプ(207)に関連付けられた対応する結果特性(320)とペアにされた前記訓練ソースコード(310)の訓練例(350)を識別することと、
前記データ処理ハードウェア(144)が、前記機械学習モデル(308)を、前記対応する結果特性(320)とペアにされた前記訓練ソースコード(310)を含む前記訓練例(350)で訓練することとをさらに備える、請求項7に記載の方法(500)。 - 前記コードインサイト(400)の前記エミュレートされた結果特性(320)は、
前記ターゲットソースコード(210)のエミュレートされたビルド結果、
前記ターゲットソースコード(210)を実行するためのエミュレートされた経過時間、
前記ターゲットソースコード(210)のエミュレートされたメタデータ、または
前記ターゲットソースコード(210)のエミュレートされた、人間が生成したコメントのうちの1つを含む、請求項7に記載の方法(500)。 - 前記ターゲットソースコード(210)の前記予測コード変形(400b)が実行可能なコードを含む場合、前記データ処理ハードウェア(144)が、前記機械学習モデル(308)を、前記訓練ソースコード(310)をコンパイルまたは解釈することによって生じる対応する訓練実行可能なコードとペアにされた前記訓練ソースコード(310)を含む訓練例(350)で訓練することをさらに備える、請求項1~9のいずれか1項に記載の方法(500)。
- 前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することは、
前記ターゲットソースコード(210)から抽出されるターゲット特徴(212)のセットを、特徴入力として受信するように構成された前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)のベクトル表現を生成することと、
前記データ処理ハードウェア(144)と通信しているメモリハードウェア(146)に格納されている訓練ソースコード(310)スニペットのプールの類似スコアを求めることとを含み、前記類似スコアの各々は、対応する訓練ソースコード(310)スニペットに関連付けられており、かつ、前記ターゲットソースコード(210)の前記ベクトル表現と、前記対応する訓練コード(310)スニペットのプールのそれぞれのベクトル表現との類似レベルを示し、前記生成することはさらに、
類似閾値を満たす類似スコアを有する前記訓練ソースコード(310)スニペットのプールから、1つ以上の訓練ソースコード(310)スニペットを、前記ターゲットソースコード(210)のミューテーションに対応するものとして識別することを含む、請求項1~10のいずれか1項に記載の方法(500)。 - 前記ターゲットソースコード(210)は、ターゲットコードベースからのターゲットソースコード(210)スニペットのペアを含み、
前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することは、
前記ターゲットソースコード(210)スニペットのペア内のターゲットソースコード(210)スニペットごとに、前記対応するターゲットソースコード(210)スニペットから抽出されるターゲット特徴(212)のセットを特徴(212)入力として受信するように構成された前記機械学習モデル(308)を使用して、前記対応するターゲットソースコード(210)スニペットのベクトル表現を生成することと、
前記ベクトル表現に基づいて、前記ターゲットソースコード(210)スニペットのペアの間のベクトル空間距離を求めることと、
前記ベクトル空間距離が距離閾値を満たす場合、前記ターゲットソースコード(210)スニペットのペアは互いの複製であると判断することとを含む、請求項1~11のいずれか1項に記載の方法(500)。 - 前記訓練ソースコード(310)の前記予測ラベルは、
前記ターゲットソースコード(210)の複雑さの予測レベル、
前記ターゲットソースコード(210)の予測品質、
前記ターゲットソースコード(210)の予測テスト要件、または
前記ターゲットソースコード(210)の予測難易度評価のうちの少なくとも1つを含む、請求項1~12のいずれか1項に記載の方法(500)。 - 前記ターゲットソースコード(210)の前記予測コード変形(400b)は、
前記ターゲットソースコード(210)内のビルドエラーを修正する更新済みターゲットソースコード(210)、
前記ターゲットソースコード(210)から解釈/コンパイルされた実行可能なコード、
前記ターゲットソースコード(210)の改訂、または
前記ターゲットソースコード(210)を置換するための推奨される置換ソースコード(310)のうちの少なくとも1つを含む、請求項1~13のいずれか1項に記載の方法(500)。 - システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信しており、かつ、前記データ処理ハードウェア(144)で実行されると、前記データ処理ハードウェア(144)に動作を行わせる命令を格納したメモリハードウェア(146)とを含み、前記動作は、
ターゲットソースコード(210)のコードインサイト(400)を要求するコードインサイト要求(110)を、ソフトウェア開発ツール(418)をビルドするために前記ターゲットソースコード(210)を使用する開発者に関連付けられた開発者デバイス(204)から受信することを備え、前記コードインサイト要求(110)は、
前記ターゲットソースコード(210)と、
前記ソフトウェア開発ツール(418)がコードラベリングタイプのソフトウェア開発ツール(418)またはコード変形タイプのソフトウェア開発ツール(418)のうちの1つからなることを指定するツールタイプインジケータ(205)とを含み、前記動作はさらに、
前記ツールタイプインジケータ(205)に基づいて、前記コードラベリングタイプのソフトウェア開発ツール(418)または前記コード変形タイプのソフトウェア開発ツール(418)のうちの指定された前記1つに関連付けられた訓練ソースコード(310)で訓練された機械学習モデル(308)を取得することと、
前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することとを含み、前記ターゲットソースコード(210)の前記コードインサイト(400)は、
前記ツールタイプインジケータ(205)が、前記ソフトウェア開発ツール(418)が前記コードラベリングタイプのソフトウェア開発ツール(418)からなることを指定する場合の前記ターゲットソースコード(210)の予測ラベル(400a)、または
前記ツールタイプインジケータ(205)が、前記ソフトウェア開発ツール(418)が前記コード変形タイプのソフトウェア開発ツールからなることを指定する場合の前記ターゲットソースコード(210)の予測コード変形のうちの1つを含み、前記動作はさらに、
前記コードインサイト(400)を前記開発者デバイス(204)に送信することを含み、前記コードインサイト(400)は、前記開発者デバイス(204)によって受信されると、前記開発者デバイス(204)で実行されているグラフィカルユーザインターフェイスに、前記コードインサイト(400)を前記開発者デバイス(204)のディスプレイに表示させることを含む、システム(100)。 - 前記動作はさらに、前記機械学習モデル(308)への入力に適した前記ターゲットソースコード(210)の構文表現に対応するターゲット特徴(212)のセットを、前記ターゲットソースコード(210)から抽出することを含み、
前記機械学習モデル(308)は、
前記ターゲット特徴(212)のセットを入力として受信し、
前記ターゲットソースコード(210)の前記コードインサイト(400)を出力として生成するように構成されている、請求項15に記載のシステム(100)。 - 前記ターゲットソースコード(210)の前記構文表現は、構文表現木を含む、請求項16に記載のシステム(100)。
- 前記機械学習モデル(308)を取得することは、
前記メモリハードウェア(146)に格納されているソースコードリポジトリ(315)から、前記コードラベリングタイプのソフトウェア開発ツール(418)または前記コード変形タイプのソフトウェア開発ツール(418)のうちの指定された前記1つに関連付けられた前記訓練ソースコード(310)を選択し、かつ
機械学習モデル生成器(360)を使用して、選択された前記訓練ソースコード(310)で前記機械学習モデル(308)を訓練することによって、前記コードインサイト要求(110)を受信することに応答して、前記機械学習モデル(308)を生成することを含む、請求項15~17のいずれか1項に記載のシステム(100)。 - 前記動作はさらに、前記機械学習モデル(308)を訓練するのに適した前記訓練ソースコード(310)の構文表現に対応する訓練特徴のセットを、選択された前記訓練ソースコード(310)から抽出することを含む、請求項18に記載のシステム(100)。
- 前記訓練ソースコード(310)の前記構文表現は、抽象構文木を含む、請求項19に記載のシステム(100)。
- 前記コードインサイト要求(110)はさらに、前記コードインサイト(400)に関連付けられた、前記開発者によって定義された結果特性タイプ(207)を含み、
前記ツールタイプインジケータ(205)に基づいて前記機械学習モデル(308)を取得することはさらに、前記結果特性タイプ(207)に基づき、
前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することはさらに、前記機械学習モデル(308)を使用して、前記コードインサイト要求(110)の前記結果特性タイプ(207)に関連付けられた、エミュレートされた結果特性(320)を生成することを含む、請求項15~20のいずれか1項に記載のシステム(100)。 - 前記動作はさらに、
前記メモリハードウェア(146)に格納されているソースコードリポジトリ(315)から、前記コードインサイト要求(110)の前記結果特性タイプ(207)に関連付けられた対応する結果特性(320)とペアにされた前記訓練ソースコード(310)の訓練例(350)を識別することと、
前記機械学習モデル(308)を、前記対応する結果特性(320)とペアにされた前記訓練ソースコード(310)を含む前記訓練例(350)で訓練することとを含む、請求項15~21のいずれか1項に記載のシステム(100)。 - 前記コードインサイト(400)の前記エミュレートされた結果特性(320)は、
前記ターゲットソースコード(210)のエミュレートされたビルド結果、
前記ターゲットソースコード(210)を実行するためのエミュレートされた経過時間、
前記ターゲットソースコード(210)のエミュレートされたメタデータ、または
前記ターゲットソースコード(210)のエミュレートされた、人間が生成したコメントのうちの1つを含む、請求項22に記載のシステム(100)。 - 前記動作はさらに、前記ターゲットソースコード(210)の前記予測コード変形がコンパイルまたは解釈されたコードを含む場合、前記機械学習モデル(308)を、前記訓練ソースコード(310)をコンパイルまたは解釈することによって生じる対応する訓練実行可能なコードとペアにされた前記訓練ソースコード(310)を含む訓練例(350)で訓練することを含む、請求項15~23のいずれか1項に記載のシステム(100)。
- 前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することは、
前記ターゲットソースコード(210)から抽出されるターゲット特徴(212)のセットを特徴(212)入力として受信するように構成された前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)のベクトル表現を生成することと、
前記メモリハードウェア(146)に格納されている訓練ソースコード(310)スニペットのプールの類似スコアを求めることとを含み、各類似スコアは、対応する訓練コードスニペットに関連付けられており、かつ、前記ターゲットソースコード(210)の前記ベクトル表現と、前記対応する訓練コードスニペットのそれぞれのベクトル表現との類似レベルを示し、さらに、
類似閾値を満たす類似スコアを有する前記訓練ソースコード(310)スニペットのプールから、1つ以上の訓練ソースコード(310)スニペットを、前記ターゲットソースコード(210)のミューテーションに対応するものとして識別することを含む、請求項15~24のいずれか1項に記載のシステム(100)。 - 前記ターゲットソースコード(210)は、ターゲットコードベースからのターゲットソースコード(210)スニペットのペアを含み、
前記機械学習モデル(308)を使用して、前記ターゲットソースコード(210)の前記コードインサイト(400)を生成することは、
前記ターゲットソースコード(210)スニペットのペア内のターゲットソースコード(210)スニペットごとに、前記対応するターゲットソースコード(210)スニペットから抽出されるターゲット特徴(212)のセットを特徴(212)入力として受信するように構成された前記機械学習モデル(308)を使用して、前記対応するターゲットソースコード(210)スニペットのベクトル表現を生成することと、
前記ベクトル表現に基づいて、前記ターゲットソースコード(210)スニペットのペアの間のベクトル空間距離を求めることと、
前記ベクトル空間距離が距離閾値を満たす場合、前記ターゲットソースコード(210)スニペットのペアは互いの複製であると判断することを含む、請求項15~25のいずれか1項に記載のシステム(100)。 - 前記訓練ソースコード(310)の前記予測ラベルは、
前記ターゲットソースコード(210)の複雑さの予測レベル、
前記ターゲットソースコード(210)の予測品質、
前記ターゲットソースコード(210)の予測テスト要件、または
前記ターゲットソースコード(210)の予測難易度評価のうちの少なくとも1つを含む、請求項15~26のいずれか1項に記載のシステム(100)。 - 前記ターゲットソースコード(210)の前記予測コード変形(400b)は、
前記ターゲットソースコード(210)内のビルドエラーを修正する更新済みターゲットソースコード(210)、
前記ターゲットソースコード(210)から解釈/コンパイルされた実行可能なコード、
前記ターゲットソースコード(210)の改訂、または
前記ターゲットソースコード(210)を置換するための推奨される置換ソースコードのうちの少なくとも1つを含む、請求項15~27のいずれか1項に記載のシステム(100)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2023012833A JP7503671B2 (ja) | 2019-11-06 | 2023-01-31 | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/676,032 | 2019-11-06 | ||
US16/676,032 US11150877B2 (en) | 2019-11-06 | 2019-11-06 | Automatically generating machine learning models for software tools that operate on source code |
PCT/US2020/059277 WO2021092283A1 (en) | 2019-11-06 | 2020-11-06 | Automatically generating machine learning models for software tools that operate on source code |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023012833A Division JP7503671B2 (ja) | 2019-11-06 | 2023-01-31 | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022546636A true JP2022546636A (ja) | 2022-11-04 |
JP7220833B2 JP7220833B2 (ja) | 2023-02-10 |
Family
ID=73646532
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022526211A Active JP7220833B2 (ja) | 2019-11-06 | 2020-11-06 | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 |
JP2023012833A Active JP7503671B2 (ja) | 2019-11-06 | 2023-01-31 | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023012833A Active JP7503671B2 (ja) | 2019-11-06 | 2023-01-31 | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11150877B2 (ja) |
EP (1) | EP4055474A1 (ja) |
JP (2) | JP7220833B2 (ja) |
KR (2) | KR102443654B1 (ja) |
CN (1) | CN114616543A (ja) |
WO (1) | WO2021092283A1 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11385940B2 (en) | 2018-10-26 | 2022-07-12 | EMC IP Holding Company LLC | Multi-cloud framework for microservice-based applications |
US11533317B2 (en) * | 2019-09-30 | 2022-12-20 | EMC IP Holding Company LLC | Serverless application center for multi-cloud deployment of serverless applications |
US11416245B2 (en) * | 2019-12-04 | 2022-08-16 | At&T Intellectual Property I, L.P. | System and method for syntax comparison and analysis of software code |
US11334347B2 (en) * | 2020-05-04 | 2022-05-17 | International Business Machines Corporation | Cognitive build recovery from inter-code commit issues |
US11593678B2 (en) * | 2020-05-26 | 2023-02-28 | Bank Of America Corporation | Green artificial intelligence implementation |
US11494285B1 (en) * | 2020-09-30 | 2022-11-08 | Amazon Technologies, Inc. | Static code analysis tool and configuration selection via codebase analysis |
EP4174639A1 (en) * | 2021-06-22 | 2023-05-03 | Beijing Baidu Netcom Science Technology Co., Ltd. | Auxiliary processing method and device for software development, storage medium and program product |
US12008365B2 (en) * | 2021-06-28 | 2024-06-11 | Jpmorgan Chase Bank , N.A. | Systems and method for automated code analysis and tagging |
KR102519639B1 (ko) * | 2021-06-30 | 2023-04-06 | 삼성에스디에스 주식회사 | 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 |
CN113741964A (zh) * | 2021-08-01 | 2021-12-03 | 北京工业大学 | 一种面向代码可读性评估的数据增强方法 |
US20230185715A1 (en) * | 2021-12-13 | 2023-06-15 | Relativity Oda Llc | Queue optimization via predicitve caching in cloud computing |
US11847436B2 (en) * | 2022-01-25 | 2023-12-19 | Hewlett Packard Enterprise Development Lp | Machine learning (ML) model-based compiler |
CN115774565B (zh) * | 2023-02-10 | 2023-04-18 | 成都数联云算科技有限公司 | 一种单代码仓库建设方法及系统及装置及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338399A (ja) * | 2005-06-02 | 2006-12-14 | Canon Inc | プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 |
CN109739494A (zh) * | 2018-12-10 | 2019-05-10 | 复旦大学 | 一种基于Tree-LSTM的API使用代码生成式推荐方法 |
US20190272171A1 (en) * | 2018-03-02 | 2019-09-05 | Microsoft Technology Licensing, Llc | Displaying results of a codebase analysis service |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263255A (ja) * | 2002-03-11 | 2003-09-19 | Fujitsu Ltd | 通信を行うためのプログラム |
US7188345B2 (en) * | 2003-03-19 | 2007-03-06 | International Business Machines Corporation | Installation of data-driven business integration adapters |
US8775526B2 (en) * | 2006-01-16 | 2014-07-08 | Zlango Ltd. | Iconic communication |
US20080295085A1 (en) * | 2007-05-25 | 2008-11-27 | Microsoft Corporation | Integrated code review tool |
US9286063B2 (en) * | 2012-02-22 | 2016-03-15 | Veracode, Inc. | Methods and systems for providing feedback and suggested programming methods |
US9201646B2 (en) * | 2013-01-05 | 2015-12-01 | Vmware, Inc. | Automatic code review and code reviewer recommendation |
US9904672B2 (en) * | 2015-06-30 | 2018-02-27 | Facebook, Inc. | Machine-translation based corrections |
WO2017082906A1 (en) * | 2015-11-12 | 2017-05-18 | Hewlett Packard Enterprise Development Lp | Classification models for binary code data |
US20170212829A1 (en) * | 2016-01-21 | 2017-07-27 | American Software Safety Reliability Company | Deep Learning Source Code Analyzer and Repairer |
US10838849B2 (en) * | 2016-03-08 | 2020-11-17 | International Business Machines Corporation | Analyzing software test failures using natural language processing and machine learning |
WO2017165712A1 (en) * | 2016-03-23 | 2017-09-28 | FogHorn Systems, Inc. | Composition of pattern-driven reactions in real-time dataflow programming |
US10282275B2 (en) * | 2016-09-22 | 2019-05-07 | Microsoft Technology Licensing, Llc | Method and system for managing code |
US20180150742A1 (en) * | 2016-11-28 | 2018-05-31 | Microsoft Technology Licensing, Llc. | Source code bug prediction |
US11205103B2 (en) * | 2016-12-09 | 2021-12-21 | The Research Foundation for the State University | Semisupervised autoencoder for sentiment analysis |
US10310821B2 (en) * | 2017-06-03 | 2019-06-04 | Apple Inc. | Integration of learning models into a software development system |
US11720804B2 (en) * | 2018-01-21 | 2023-08-08 | Microsoft Technology Licensing, Llc. | Data-driven automatic code review |
US11188323B2 (en) * | 2018-05-10 | 2021-11-30 | Microsoft Technology Licensing, Llc | Coding output |
US11436056B2 (en) * | 2018-07-19 | 2022-09-06 | EMC IP Holding Company LLC | Allocation of shared computing resources using source code feature extraction and clustering-based training of machine learning models |
US10831448B2 (en) * | 2018-08-30 | 2020-11-10 | Accenture Global Solutions Limited | Automated process analysis and automation implementation |
US11501191B2 (en) * | 2018-09-21 | 2022-11-15 | International Business Machines Corporation | Recommending machine learning models and source codes for input datasets |
US10725748B2 (en) * | 2018-11-19 | 2020-07-28 | Microsoft Technology Licensing, Llc | Extracting program features for assisting software development |
US11157272B2 (en) * | 2019-04-23 | 2021-10-26 | Microsoft Technology Licensing, Llc. | Automatic identification of appropriate code reviewers using machine learning |
US20200410390A1 (en) * | 2019-06-26 | 2020-12-31 | Microsoft Technology Licensing, Llc. | Machine learning retraining |
US11243746B2 (en) * | 2019-07-01 | 2022-02-08 | X Development Llc | Learning and using programming styles |
-
2019
- 2019-11-06 US US16/676,032 patent/US11150877B2/en active Active
-
2020
- 2020-11-06 WO PCT/US2020/059277 patent/WO2021092283A1/en unknown
- 2020-11-06 KR KR1020227017291A patent/KR102443654B1/ko active Application Filing
- 2020-11-06 CN CN202080076171.6A patent/CN114616543A/zh active Pending
- 2020-11-06 EP EP20816779.1A patent/EP4055474A1/en active Pending
- 2020-11-06 KR KR1020227030969A patent/KR20220127376A/ko not_active Application Discontinuation
- 2020-11-06 JP JP2022526211A patent/JP7220833B2/ja active Active
-
2021
- 2021-10-05 US US17/450,068 patent/US11977859B2/en active Active
-
2023
- 2023-01-31 JP JP2023012833A patent/JP7503671B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006338399A (ja) * | 2005-06-02 | 2006-12-14 | Canon Inc | プログラム開発装置、プログラム開発ソフトウェア及び記憶媒体 |
US20190272171A1 (en) * | 2018-03-02 | 2019-09-05 | Microsoft Technology Licensing, Llc | Displaying results of a codebase analysis service |
CN109739494A (zh) * | 2018-12-10 | 2019-05-10 | 复旦大学 | 一种基于Tree-LSTM的API使用代码生成式推荐方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102443654B1 (ko) | 2022-09-15 |
US11977859B2 (en) | 2024-05-07 |
US20220027134A1 (en) | 2022-01-27 |
US11150877B2 (en) | 2021-10-19 |
JP7220833B2 (ja) | 2023-02-10 |
KR20220080002A (ko) | 2022-06-14 |
JP2023065366A (ja) | 2023-05-12 |
WO2021092283A1 (en) | 2021-05-14 |
US20210132915A1 (en) | 2021-05-06 |
KR20220127376A (ko) | 2022-09-19 |
CN114616543A (zh) | 2022-06-10 |
EP4055474A1 (en) | 2022-09-14 |
JP7503671B2 (ja) | 2024-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7220833B2 (ja) | ソースコード上で動作するソフトウェアツールのための機械学習モデルの自動生成 | |
AU2017327823B2 (en) | Test case generator built into data-integration workflow editor | |
US5729746A (en) | Computerized interactive tool for developing a software product that provides convergent metrics for estimating the final size of the product throughout the development process using the life-cycle model | |
US11762717B2 (en) | Automatically generating testing code for a software application | |
US9141344B2 (en) | Hover help support for application source code | |
Trubiani et al. | Performance issues? Hey DevOps, mind the uncertainty | |
Santos et al. | Metrics focused on usability ISO 9126 based | |
Venkatesh et al. | Enhancing comprehension and navigation in Jupyter notebooks with static analysis | |
Zhao et al. | Qchecker: Detecting bugs in quantum programs via static analysis | |
Koyya et al. | Feedback for Programming Assignments Using Software‐Metrics and Reference Code | |
Yin et al. | Automatic learning path recommendation for open source projects using deep learning on knowledge graphs | |
Storer et al. | Behave nicely! automatic generation of code for behaviour driven development test suites | |
Benvenuti et al. | Modeling and Assessing User Interaction in Big Data Visualization Systems | |
CN113051262B (zh) | 一种数据质检方法、装置、设备及存储介质 | |
JP2023183447A (ja) | 書換プログラム、書換方法および情報処理装置 | |
Huang et al. | Context-aware bug reproduction for mobile apps | |
Alam | AI-HUB 2.0 PROJECT REPORT: Application Of Large Language | |
Rani et al. | Web Based Issue Tracker for System Development | |
Rodrigues et al. | BPM2Text: A language independent framework for Business Process Models to Natural Language Text | |
Sendanayaka | Natural Language based Test Automation Model for Web Applications | |
Jamshidi et al. | Performance Issues? Hey DevOps, Mind the Uncertainty! | |
Vostokov | What AI and Machine Learning Can Do for Python Debugging | |
Bob et al. | Behave Nicely! Automatic Generation of Code for Behaviour Driven Development Test Suites | |
JP2023167588A (ja) | 判定装置、判定方法および判定プログラム | |
KR20230044380A (ko) | 코드 점검 인터페이스 제공 방법, 그리고 이를 구현하기 위한 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220916 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220916 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20220916 |
|
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: 20230110 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230131 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7220833 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |