JP7324865B2 - コード変更の自動識別 - Google Patents
コード変更の自動識別 Download PDFInfo
- Publication number
- JP7324865B2 JP7324865B2 JP2021563230A JP2021563230A JP7324865B2 JP 7324865 B2 JP7324865 B2 JP 7324865B2 JP 2021563230 A JP2021563230 A JP 2021563230A JP 2021563230 A JP2021563230 A JP 2021563230A JP 7324865 B2 JP7324865 B2 JP 7324865B2
- Authority
- JP
- Japan
- Prior art keywords
- source code
- code snippet
- version
- embeddings
- changes
- 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
- 230000008859 change Effects 0.000 claims description 90
- 238000010801 machine learning Methods 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 47
- 238000012549 training Methods 0.000 claims description 34
- 230000004048 modification Effects 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 12
- 238000013528 artificial neural network Methods 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 7
- 238000002372 labelling Methods 0.000 claims description 3
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 37
- 230000005012 migration Effects 0.000 description 6
- 238000013508 migration Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 239000000463 material Substances 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 238000012360 testing method Methods 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/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/042—Knowledge-based neural networks; Logical representations of neural networks
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
-
- 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)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
ソフトウェアシステムは、ソースコード「ベース」に基づいて構築され、これは通常、プログラミング言語(Java、Python、C++など)、フレームワーク、共有ライブラリ、ランタイム環境など、多くの独立したソフトウェア技術に依存し、および/またはこれらを組み込んでいる。各ソフトウェア技術は、独自の速度で進化し得、独自のブランチおよび/またはバージョンを含み得る。各ソフトウェア技術は、他の様々な技術にも依存する場合がある。したがって、大規模なソフトウェアシステムのソースコードベースは、複雑な依存関係グラフで表され得る。
Claims (20)
- 1つ以上のプロセッサを使用して実施される方法であって、
潜在空間内の新しいソースコード埋め込みを生成するために、第1バージョンソースコードスニペットに関連付けられたデータを、1つ以上の機械学習モデルにわたる入力として適用することと、
1つ以上の参照埋め込みと前記潜在空間内の前記新しいソースコード埋め込みとの間の1つ以上の距離に基づいて、前記潜在空間内の前記1つ以上の参照埋め込みを識別することであって、前記1つ以上の参照埋め込みの各々が、前記機械学習モデルのうちの1つ以上にわたる入力として、参照第2バージョンソースコードスニペットをもたらすために、参照第1バージョンソースコードスニペットに加えられた変更を示すデータを適用することによって生成される、識別することと、
前記識別された1つ以上の参照埋め込みに基づいて、第2バージョンソースコードスニペットを作成するために前記第1バージョンソースコードスニペットに加えられる1つ以上の変更を識別することと、を含む、方法。 - 前記第1バージョンソースコードスニペットに関連付けられる前記データが、前記第1バージョンソースコードスニペットから生成される抽象構文木(「AST」)を含む、請求項1に記載の方法。
- 前記機械学習モデルのうちの1つ以上が、グラフニューラルネットワーク(「GNN」)を含む、請求項1または2に記載の方法。
- 前記1つ以上の参照埋め込みに関連付けられる1つ以上のルックアップテーブルに基づいて、前記1つ以上の変更が識別される、請求項1~3のいずれか一項に記載の方法。
- 1つ以上のコンピューティングデバイス上にレンダリングされる出力を生成することをさらに含み、前記出力が、レンダリングされるときに、前記第1バージョンソースコードスニペットについて前記1つ以上の変更を考慮することを推奨する、請求項1~4のいずれか一項に記載の方法。
- 前記第1バージョンソースコードスニペットにおける前記1つ以上の変更を自動的に実行することをさらに含む、請求項1~5のいずれか一項に記載の方法。
- 前記第1バージョンソースコードスニペットが、ソースコードファイルを含む、請求項1~6のいずれか一項に記載の方法。
- 1つ以上のプロセッサを使用して実施される方法であって、
第1バージョンソースコードスニペットと第2バージョンソースコードスニペットとの間の変更を示すデータを取得することと、
変更タイプによって、前記変更を示す前記データをラベル付けすることと、
潜在空間内の新しい埋め込みを生成するために、機械学習モデルにわたる入力として、前記変更を示す前記データを適用することと、
前記新しい埋め込みと、同じ前記変更タイプに関連付けられた前記潜在空間内の以前の埋め込みとの間の前記潜在空間内の距離を決定することと、
少なくとも部分的に前記距離に基づいて前記機械学習モデルを訓練することと、を含む、方法。 - 前記機械学習モデルがグラフニューラルネットワーク(「GNN」)を含む、請求項8に記載の方法。
- 前記変更を示す前記データが変化グラフを含む、請求項8に記載の方法。
- 前記変化グラフが、前記第1バージョンソースコードスニペットから生成された第1の抽象構文木(「AST」)および前記第2バージョンソースコードスニペットから生成された第2のASTから生成される、請求項10に記載の方法。
- 前記距離を第1の距離として、前記方法が、
前記新しい埋め込みと、異なる変更タイプに関連付けられた前記潜在空間内の別の以前の埋め込みとの間の前記潜在空間内の第2の距離を決定することと、
損失関数を使用して、前記第1の距離および前記第2の距離に基づいてエラーを計算することと、をさらに含み、
前記訓練が前記エラーに基づく、請求項8~11のいずれか一項に記載の方法。 - 前記変更を示す前記データを、第1の変更を示す第1のデータとして、前記新しい埋め込みを、第1の新しい埋め込みとして、前記方法が、
前記第1バージョンソースコードスニペットと前記第2バージョンソースコードスニペットとの間の第2の変更を示す第2のデータを取得することと、
第2の変更タイプによって、前記第2の変更を示す前記第2のデータをラベル付けすることと、
前記潜在空間内の第2の新しい埋め込みを生成するために、前記機械学習モデルにわたる入力として、前記第2の変更を示す前記第2のデータを適用することと、
前記第2の新しい埋め込みと、前記第2の変更タイプに関連付けられた前記潜在空間内の以前の埋め込みとの間の前記潜在空間内の追加の距離を決定することと、
少なくとも部分的に前記追加の距離に基づいて前記機械学習モデルを訓練することと、をさらに含む、請求項8~11のいずれか一項に記載の方法。 - 1つ以上のプロセッサと、命令を格納するメモリとを備えるシステムであって、前記命令は、前記1つ以上のプロセッサによる前記命令の実行に応答して、前記1つ以上のプロセッサに、
潜在空間内の新しいソースコード埋め込みを生成するために、第1バージョンソースコードスニペットに関連付けられたデータを、1つ以上の機械学習モデルにわたる入力として適用することと、
1つ以上の参照埋め込みと前記潜在空間内の前記新しいソースコード埋め込みとの間の1つ以上の距離に基づいて、前記潜在空間内の前記1つ以上の参照埋め込みを識別することであって、前記1つ以上の参照埋め込みの各々が、前記機械学習モデルのうちの1つ以上にわたる入力として、参照第2バージョンソースコードスニペットをもたらすために、参照第1バージョンソースコードスニペットに加えられた変更を示すデータを適用することによって生成される、識別することと、
前記識別された1つ以上の参照埋め込みに基づいて、第2バージョンソースコードスニペットを作成するために前記第1バージョンソースコードスニペットに加えられる1つ以上の変更を識別することと、を行わせる、システム。 - 前記第1バージョンソースコードスニペットに関連付けられる前記データが、前記第1バージョンソースコードスニペットから生成される抽象構文木(「AST」)を含む、請求項14に記載のシステム。
- 前記機械学習モデルのうちの1つ以上が、グラフニューラルネットワーク(「GNN」)を含む、請求項14または15に記載のシステム。
- 前記1つ以上の参照埋め込みに関連付けられる1つ以上のルックアップテーブルに基づいて、前記1つ以上の変更が識別される、請求項14~16のいずれか一項に記載のシステム。
- 1つ以上のコンピューティングデバイス上にレンダリングされる出力を生成するための命令をさらに備え、前記出力が、レンダリングされるときに、前記第1バージョンソースコードスニペットについて前記1つ以上の変更を考慮することを推奨する、請求項14~17のいずれか一項に記載のシステム。
- 前記第1バージョンソースコードスニペットにおける前記1つ以上の変更を自動的に実行するための命令をさらに備える、請求項14~18のいずれか一項に記載のシステム。
- 前記第1バージョンソースコードスニペットが、ソースコードファイルを含む、請求項14~19のいずれか一項に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/418,767 US20200371778A1 (en) | 2019-05-21 | 2019-05-21 | Automated identification of code changes |
US16/418,767 | 2019-05-21 | ||
PCT/US2020/033448 WO2020236744A1 (en) | 2019-05-21 | 2020-05-18 | Automated identification of code changes |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022534181A JP2022534181A (ja) | 2022-07-28 |
JP7324865B2 true JP7324865B2 (ja) | 2023-08-10 |
Family
ID=70978664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021563230A Active JP7324865B2 (ja) | 2019-05-21 | 2020-05-18 | コード変更の自動識別 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20200371778A1 (ja) |
EP (1) | EP3948524B1 (ja) |
JP (1) | JP7324865B2 (ja) |
KR (1) | KR102589804B1 (ja) |
CN (1) | CN113853587A (ja) |
CA (1) | CA3141560A1 (ja) |
WO (1) | WO2020236744A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11531536B2 (en) * | 2019-11-20 | 2022-12-20 | Red Hat, Inc. | Analyzing performance impacts of source code changes |
TW202137078A (zh) * | 2020-03-24 | 2021-10-01 | 廣達電腦股份有限公司 | 資料處理系統及資料處理方法 |
US11573775B2 (en) * | 2020-06-17 | 2023-02-07 | Bank Of America Corporation | Software code converter for resolving redundancy during code development |
US11782685B2 (en) * | 2020-06-17 | 2023-10-10 | Bank Of America Corporation | Software code vectorization converter |
US11210073B1 (en) * | 2020-07-29 | 2021-12-28 | SparkCognition, Inc. | Translating text encodings of machine learning models to executable code |
US11662998B2 (en) * | 2020-11-05 | 2023-05-30 | Outsystems—Software Em Rede, S.A. | Detecting duplicated code patterns in visual programming language code instances |
US11307881B1 (en) * | 2020-11-11 | 2022-04-19 | Adobe Inc. | Systems for generating suggestions with knowledge graph embedding vectors |
US11782681B1 (en) | 2020-11-24 | 2023-10-10 | Outsystems—Software Em Rede, S.A. | Providing resolution suggestions in a program development tool |
US11604628B2 (en) | 2020-12-16 | 2023-03-14 | Google Llc | Generation and/or recommendation of tools for automating aspects of computer programming |
US11481210B2 (en) * | 2020-12-29 | 2022-10-25 | X Development Llc | Conditioning autoregressive language model to improve code migration |
JP7522353B2 (ja) | 2021-01-27 | 2024-07-25 | 富士通株式会社 | コード変更パターンマイニングプログラム及びコード変更パターンマイニング方法 |
KR102609946B1 (ko) * | 2021-06-21 | 2023-12-04 | 고려대학교 산학협력단 | 프로그램 코드 처리 장치 및 방법 |
US20230128406A1 (en) * | 2021-10-27 | 2023-04-27 | Bank Of America Corporation | Recursive Logic Engine for Efficient Transliteration of Machine Interpretable Languages |
US11775267B2 (en) * | 2021-12-07 | 2023-10-03 | Google Llc | Identification and application of related source code edits |
CN115221061B (zh) * | 2022-07-22 | 2024-03-22 | 中国电信股份有限公司 | 测试代码生成方法、装置、存储介质及电子设备 |
KR20240021493A (ko) * | 2022-08-10 | 2024-02-19 | 쿠팡 주식회사 | 전자 장치 및 그의 정보 제공 방법 |
JP7450681B1 (ja) | 2022-09-27 | 2024-03-15 | 楽天グループ株式会社 | 情報処理装置、情報処理方法およびプログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079452A1 (en) | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Provision of Code Base Modification Using Automatic Learning of Code Changes |
US20200104102A1 (en) | 2018-09-27 | 2020-04-02 | Microsoft Technology Licensing, Llc | Automated content editor |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120159434A1 (en) * | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Code clone notification and architectural change visualization |
US8509525B1 (en) * | 2011-04-06 | 2013-08-13 | Google Inc. | Clustering of forms from large-scale scanned-document collection |
US9569199B2 (en) * | 2015-01-22 | 2017-02-14 | Futurewei Technologies, Inc. | Systems and methods to update source code files |
US9996473B2 (en) * | 2015-11-13 | 2018-06-12 | Samsung Electronics., Ltd | Selective underlying exposure storage mapping |
US20190026106A1 (en) * | 2017-07-20 | 2019-01-24 | Ca, Inc. | Associating software issue reports with changes to code |
US10459695B2 (en) | 2017-10-05 | 2019-10-29 | Sap Se | Correction of code errors using machine learning |
US10521224B2 (en) * | 2018-02-28 | 2019-12-31 | Fujitsu Limited | Automatic identification of relevant software projects for cross project learning |
US11615208B2 (en) * | 2018-07-06 | 2023-03-28 | Capital One Services, Llc | Systems and methods for synthetic data generation |
-
2019
- 2019-05-21 US US16/418,767 patent/US20200371778A1/en not_active Abandoned
-
2020
- 2020-05-18 WO PCT/US2020/033448 patent/WO2020236744A1/en unknown
- 2020-05-18 CA CA3141560A patent/CA3141560A1/en active Pending
- 2020-05-18 JP JP2021563230A patent/JP7324865B2/ja active Active
- 2020-05-18 KR KR1020217036761A patent/KR102589804B1/ko active IP Right Grant
- 2020-05-18 CN CN202080037237.0A patent/CN113853587A/zh active Pending
- 2020-05-18 EP EP20730899.0A patent/EP3948524B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079452A1 (en) | 2010-09-28 | 2012-03-29 | International Business Machines Corporation | Provision of Code Base Modification Using Automatic Learning of Code Changes |
US20200104102A1 (en) | 2018-09-27 | 2020-04-02 | Microsoft Technology Licensing, Llc | Automated content editor |
Non-Patent Citations (1)
Title |
---|
高橋裕太 ほか,"Stack Overflow投稿を用いた深層学習による自動バグ修正にむけて",情報処理学会 研究報告 ソフトウェア工学(SE),情報処理学会,2018年,第2018-SE-200巻, 第3号,pp. 1-7,ISSN 2188-8825 |
Also Published As
Publication number | Publication date |
---|---|
CA3141560A1 (en) | 2020-11-26 |
CN113853587A (zh) | 2021-12-28 |
EP3948524B1 (en) | 2024-08-21 |
KR102589804B1 (ko) | 2023-10-13 |
EP3948524A1 (en) | 2022-02-09 |
WO2020236744A1 (en) | 2020-11-26 |
JP2022534181A (ja) | 2022-07-28 |
US20200371778A1 (en) | 2020-11-26 |
KR20210148346A (ko) | 2021-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7324865B2 (ja) | コード変更の自動識別 | |
US20210192321A1 (en) | Generation and utilization of code change intents | |
US11048482B2 (en) | Automated identification of code changes | |
US11169786B2 (en) | Generating and using joint representations of source code | |
US12008347B2 (en) | Matching graphs generated from source code | |
US11340873B2 (en) | Code change graph node matching with machine learning | |
US12001821B2 (en) | Generation and/or recommendation of tools for automating aspects of computer programming | |
US11748065B2 (en) | Learning and using programming styles | |
CN114207576A (zh) | 使用机器学习在编程语言之间进行翻译 | |
US11481202B2 (en) | Transformation templates to automate aspects of computer programming | |
US11656867B2 (en) | Conditioning autoregressive language model to improve code migration | |
US20210125082A1 (en) | Operative enterprise application recommendation generated by cognitive services from unstructured requirements | |
US11775267B2 (en) | Identification and application of related source code edits | |
US11758010B1 (en) | Transforming an application into a microservice architecture | |
US20220180290A1 (en) | Using machine learning to assign developers to software defects | |
US11775271B1 (en) | Annotations for developers | |
US20240256235A1 (en) | Syntactically coherent code segmentation | |
US11893384B2 (en) | Refactoring and/or rearchitecting source code using machine learning | |
US20240176604A1 (en) | Predicting and/or applying symbolic transformation templates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211223 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230404 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20230426 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20230426 |
|
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: 20230707 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230731 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7324865 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |