JP6568605B2 - 大規模ソースコードリポジトリにおける自動インポートおよびディペンデンシー - Google Patents
大規模ソースコードリポジトリにおける自動インポートおよびディペンデンシー Download PDFInfo
- Publication number
- JP6568605B2 JP6568605B2 JP2017564873A JP2017564873A JP6568605B2 JP 6568605 B2 JP6568605 B2 JP 6568605B2 JP 2017564873 A JP2017564873 A JP 2017564873A JP 2017564873 A JP2017564873 A JP 2017564873A JP 6568605 B2 JP6568605 B2 JP 6568605B2
- Authority
- JP
- Japan
- Prior art keywords
- qualified
- name
- list
- source code
- names
- 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
- 230000008676 import Effects 0.000 title description 5
- 238000000034 method Methods 0.000 claims description 32
- 230000008569 process Effects 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 9
- 230000003993 interaction Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
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
-
- 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/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
- G06F3/0482—Interaction with lists of selectable items, e.g. menus
-
- 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/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Description
開発者は、外部コードまたはライブラリを組み込んだ複雑なソフトウェアアプリケーションをビルドすることが多い。たとえば、開発者は、人のリストを自分のアプリケーションに含めようとすることがある。開発者は、自分自身のリストオブジェクトを定義する代わりに、外部パッケージからリストクラスを含めることがある。図1に示すようなこの例では、開発者は、自分のコード内の標準ライブラリから、「java.util.List」などのリストを含めることがある。「java.util.List」は、java.utilパッケージを通じて公的に利用可能な、順序付けられたコレクションのクラスである。リストが開発者のソースコードファイルにインポートされると、開発者は、リストがインスタンス化されるまたは使用される場合はいつでも、完全修飾名「java.util.List」を用いる必要はなく、リストを単に単純名「List」で参照することが可能になる。たとえば、図1の3行目で、コードは、修飾名「java.util.List」ではなく、ただ単に単純名「List」を参照する。
本明細書は、ソースコードファイル、たとえばJava(登録商標)言語のソースコードファイル内の少なくとも1つの単純名の修飾名の候補を探索することに関する技術を説明する。
ある実施形態例によると、特定のソースコードリポジトリまたは複数のリポジトリについて全てのソースコードを示す分散システムには大規模グラフが存在する場合がある。ソースコードがインデックス化されてグラフを作成し得る。いくつかの実施態様では、このグラフは、グラフが個別の開発者のマシンで実行されず同時に複数の開発者によってアクセス可能になるように、開発者によってリモートアクセスされる1台または複数のマシン上に存在し得る。最もシンプルな形式において、グラフは2つの表であり得、1つの表は単純名を修飾名にマッピングし、もう1つの表は修飾名をビルドシステムディペンデンシーにマッピングする。分散システムまたはクラウド環境でグラフを作成することおよびグラフにアクセスすることによって、開発者の間で計算のキャッシュおよび再利用が可能である。他の実施形態では、グラフは開発者自身のマシン上に存在し得る。
Claims (13)
- コンパイルすべきソースコードファイル内の少なくとも1つの単純名の修飾名の候補を探索するための、コンピュータによって実現される方法であって、
コンパイルすべきソースコードファイルを受信するステップを備え、前記ソースコードファイルは、対応する修飾名がコンパイラによって必要とされる少なくとも1つの単純名を含み、前記方法は、
前記ソースコードファイルをパースして前記ソースコードファイル内の前記単純名および前記修飾名を決定するステップと、
対応する修飾名が必要とされる前記少なくとも1つの単純名に関して、ソースコードグラフを検索して前記少なくとも1つの単純名に対応する、可能性のある候補修飾名を探索するステップと、
前記ソースコードグラフから可能性のある候補修飾名のリストを受信すると、追加情報を有する、前記可能性のある候補修飾名のリストのエンリッチメントを行なうステップとを備え、前記可能性のある候補修飾名のリストのエンリッチメントを行なうステップは、 前記可能性のある候補修飾名のリストに含まれる、可能性のある候補修飾名に対応する修飾名パッケージがビルドプロセスに追加する前記ソースコードをビルドする時間の増加を判断することと、
前記修飾名パッケージの名前を前記可能性のある候補修飾名のリストに追加することと、
前記リストを出力することとを含み、前記方法は、
修飾名が前記可能性のある候補修飾名のリストから選択されると、特定の修飾名に関するビルドディペンデンシーおよびビルドターゲットを決定するステップと、
前記決定されたビルドディペンデンシーおよびビルドターゲットに基づいて前記ソースコードをコンパイルするステップと、
を備える、方法。 - 前記リストのエンリッチメントを行なうステップは、前記リストの出力に先立って特定の種類の可能性のある候補修飾名が他のソースコードファイルによって使用された回数を含むように前記リストのエンリッチメントを行なうことを含む、請求項1に記載のコンピュータによって実現される方法。
- 前記リストのエンリッチメントを行なうステップは、特定の可能性のある候補修飾名がソースコードリポジトリの他の部分において使用された頻度に基づいて前記リストのランク付けを行なうことを含む、請求項1に記載のコンピュータによって実現される方法。
- 前記リストが1つの可能性のある修飾名しか含まない場合、ユーザの対話なしで前記修飾名を自動的に選択するステップをさらに備える、請求項1〜3のいずれかに記載のコンピュータによって実現される方法。
- インターフェースを提供して前記可能性のある候補修飾名のリストから修飾名の選択を受信するステップをさらに備える、請求項1〜4のいずれかに記載のコンピュータによって実現される方法。
- 前記リストのエンリッチメントを行なうステップは、
修飾名パッケージが、前記修飾名パッケージに対応する可能性のある単純名が現在参照されている前記ソースコードファイルから可視であるかどうかを判断することと、
前記修飾名パッケージが前記ソースコードファイルから可視であるという判断に応じて、前記修飾名パッケージの名前を可能性のある候補修飾名として設けることと、
を含む、請求項1〜5のいずれかに記載のコンピュータによって実現される方法。 - コンパイルすべきソースコードファイル内の少なくとも1つの単純名の修飾名の候補を探索するためのシステムであって、
1つ以上の処理装置と、
複数の命令を格納する1つ以上の記憶装置とを備え、前記複数の命令は、前記1つ以上の処理装置によって実行されると、前記1つ以上の処理装置に、
コンパイルすべきソースコードファイルを受信することを行なわせ、前記ソースコードファイルは対応する修飾名がコンパイラによって必要とされる少なくとも1つの単純名を含み、前記複数の命令は、さらに、前記1つ以上の処理装置によって実行されると、前記1つ以上の処理装置に、
前記ソースコードファイルをパースして前記ソースコードファイル内の前記単純名および修飾名を決定することと、
対応する修飾名が必要とされる前記少なくとも1つの単純名に関して、ソースコードグラフを検索して前記少なくとも1つの単純名に対応する、可能性のある修飾名を探索することと、
前記ソースコードグラフから可能性のある候補修飾名のリストを受信すると、追加情報を有する、可能性のある候補修飾名のリストのエンリッチメントを行なうこととを備え、前記可能性のある候補修飾名のリストのエンリッチメントを行なうことは、
前記可能性のある候補修飾名のリストに含まれる、可能性のある候補修飾名に対応する修飾名パッケージがビルドプロセスに追加する前記ソースコードをビルドする時間の増加を判断することと、
前記修飾名パッケージの名前を前記可能性のある候補修飾名のリストに追加することと、
前記リストを出力することと、
修飾名が前記可能性のある候補修飾名のリストから選択されると、特定の修飾名に関するビルドディペンデンシーおよびビルドターゲットを決定することと、
前記決定されたビルドディペンデンシーおよびビルドターゲットに基づいて前記ソースコードをコンパイルすることと、
を行なわせる、システム。 - 前記リストのエンリッチメントを行なうことは、前記リストの出力に先立って特定の種類の可能性のある候補修飾名が他のソースコードファイルによって使用された回数を含むように前記リストのエンリッチメントを行なうことを含む、請求項7に記載のシステム。
- 前記リストのエンリッチメントを行なうことは、特定の可能性のある候補修飾名がソースコードリポジトリの他の部分において使用された頻度に基づいて前記リストのランク付けを行なうことを含む、請求項7に記載のシステム。
- 前記リストが1つの可能性のある修飾名しか含まない場合、ユーザの対話なしで前記修飾名を自動的に選択することをさらに備える、請求項7〜9のいずれかに記載のシステム。
- インターフェースを提供して前記可能性のある候補修飾名のリストから修飾名の選択を受信することをさらに備える、請求項7〜10のいずれかに記載のシステム。
- 前記リストのエンリッチメントを行なうことは、
修飾名パッケージが、前記修飾名パッケージに対応する可能性のある単純名が現在参照されている前記ソースコードファイルから可視であるかどうかを判断することと、
前記修飾名パッケージが前記ソースコードファイルから可視であるという判断に応じて、前記修飾名パッケージの名前を可能性のある候補修飾名として設けることと、を含む、請求項7〜11のいずれかに記載のシステム。 - コンピュータに請求項1〜6のいずれか1項に記載の方法を実行させるプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/796,695 | 2015-07-10 | ||
US14/796,695 US10120679B2 (en) | 2015-07-10 | 2015-07-10 | Automatic imports and dependencies in large-scale source code repositories |
PCT/US2016/039561 WO2017011176A1 (en) | 2015-07-10 | 2016-06-27 | Automatic imports and dependencies in large-scale source code repositories |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018519592A JP2018519592A (ja) | 2018-07-19 |
JP2018519592A5 JP2018519592A5 (ja) | 2019-06-27 |
JP6568605B2 true JP6568605B2 (ja) | 2019-08-28 |
Family
ID=56360528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017564873A Active JP6568605B2 (ja) | 2015-07-10 | 2016-06-27 | 大規模ソースコードリポジトリにおける自動インポートおよびディペンデンシー |
Country Status (8)
Country | Link |
---|---|
US (1) | US10120679B2 (ja) |
EP (1) | EP3320430B1 (ja) |
JP (1) | JP6568605B2 (ja) |
KR (1) | KR101990603B1 (ja) |
CN (1) | CN107810474B (ja) |
DE (2) | DE202016008044U1 (ja) |
GB (1) | GB2556481A (ja) |
WO (1) | WO2017011176A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10437568B1 (en) * | 2017-05-18 | 2019-10-08 | Palantir Technologies Inc. | Real-time rendering based on efficient device and server processing of content updates |
US10671383B2 (en) * | 2017-12-04 | 2020-06-02 | Oracle International Corporation | Inferring code deprecation from module deprecation |
US11062385B2 (en) * | 2018-08-21 | 2021-07-13 | International Business Machines Corporation | Providing code offerings inside code |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8365153B2 (en) * | 2007-10-26 | 2013-01-29 | Qualcomm Incorporated | Server-based code compilation |
US9424339B2 (en) * | 2008-08-15 | 2016-08-23 | Athena A. Smyros | Systems and methods utilizing a search engine |
US20100146481A1 (en) * | 2008-12-09 | 2010-06-10 | Microsoft Corporation | Developing applications at runtime |
US8364696B2 (en) * | 2009-01-09 | 2013-01-29 | Microsoft Corporation | Efficient incremental parsing of context sensitive programming languages |
US10175848B2 (en) * | 2009-02-09 | 2019-01-08 | Nokia Technologies Oy | Displaying a display portion including an icon enabling an item to be added to a list |
US8352913B2 (en) | 2009-08-07 | 2013-01-08 | Adobe Systems Incorporated | Generating and resolving component names in an integrated development environment |
DE102009059939A1 (de) * | 2009-12-22 | 2011-06-30 | Giesecke & Devrient GmbH, 81677 | Verfahren zum Komprimieren von Bezeichnern |
US9298427B2 (en) * | 2010-01-06 | 2016-03-29 | Microsoft Technology Licensing, Llc. | Creating inferred symbols from code usage |
US20110296386A1 (en) * | 2010-05-28 | 2011-12-01 | Salesforce.Com, Inc. | Methods and Systems for Validating Changes Submitted to a Source Control System |
US20110302565A1 (en) * | 2010-06-07 | 2011-12-08 | Ferris Michael S | Implicit workspace dependencies |
US8635204B1 (en) * | 2010-07-30 | 2014-01-21 | Accenture Global Services Limited | Mining application repositories |
CN101968736A (zh) * | 2010-09-13 | 2011-02-09 | 杭州元睿信息技术有限公司 | 一种应用于Java到C++语言程序翻译中外部引用的翻译方法 |
US8584079B2 (en) * | 2010-12-16 | 2013-11-12 | Sap Portals Israel Ltd | Quality on submit process |
US20130326479A1 (en) * | 2012-06-01 | 2013-12-05 | Qnx Software Systems Limited | System and method for tracking compliance information for a build-system product |
WO2014041561A2 (en) * | 2012-08-31 | 2014-03-20 | Iappsecure Solutions Pvt. Ltd. | A system for analyzing applications accurately for finding security and quality issues |
US20140201709A1 (en) * | 2013-01-15 | 2014-07-17 | Martin Carl Euerle | JavaScript™ Deployment Build Tool for software code that uses an object literal to define meta data and system code. |
US8972975B1 (en) * | 2013-04-01 | 2015-03-03 | Google Inc. | Bounded installation time optimization of applications |
US9244658B2 (en) * | 2013-06-04 | 2016-01-26 | Microsoft Technology Licensing, Llc | Multi-step auto-completion model for software development environments |
US9244679B1 (en) * | 2013-09-12 | 2016-01-26 | Symantec Corporation | Systems and methods for automatically identifying changes in deliverable files |
CN105335137B (zh) * | 2014-07-23 | 2019-01-18 | 国际商业机器公司 | 用于处理源文件的方法和装置 |
US10210211B2 (en) * | 2014-08-26 | 2019-02-19 | Codota Dot Com Ltd. | Code searching and ranking |
US20160117154A1 (en) * | 2014-10-23 | 2016-04-28 | Telefonaktiebolaget L M Ericsson (Publ) | Automated software include graph and build environment analysis and optimization in compiled language |
US20160196204A1 (en) * | 2015-01-04 | 2016-07-07 | International Business Machines Corporation | Smart Validated Code Searching System |
US9612821B2 (en) * | 2015-07-02 | 2017-04-04 | International Business Machines Corporation | Predicting the success of a continuous software deployment pipeline |
-
2015
- 2015-07-10 US US14/796,695 patent/US10120679B2/en active Active
-
2016
- 2016-06-27 EP EP16735808.4A patent/EP3320430B1/en active Active
- 2016-06-27 KR KR1020177036265A patent/KR101990603B1/ko active IP Right Grant
- 2016-06-27 JP JP2017564873A patent/JP6568605B2/ja active Active
- 2016-06-27 DE DE202016008044.0U patent/DE202016008044U1/de active Active
- 2016-06-27 CN CN201680037594.0A patent/CN107810474B/zh active Active
- 2016-06-27 GB GB1720895.0A patent/GB2556481A/en not_active Withdrawn
- 2016-06-27 WO PCT/US2016/039561 patent/WO2017011176A1/en active Application Filing
- 2016-06-27 DE DE112016003130.0T patent/DE112016003130T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
EP3320430B1 (en) | 2022-05-11 |
GB2556481A (en) | 2018-05-30 |
US10120679B2 (en) | 2018-11-06 |
DE202016008044U1 (de) | 2017-01-27 |
GB201720895D0 (en) | 2018-01-31 |
EP3320430A1 (en) | 2018-05-16 |
CN107810474B (zh) | 2020-12-29 |
CN107810474A (zh) | 2018-03-16 |
JP2018519592A (ja) | 2018-07-19 |
KR101990603B1 (ko) | 2019-06-18 |
WO2017011176A1 (en) | 2017-01-19 |
DE112016003130T5 (de) | 2018-03-22 |
US20170010888A1 (en) | 2017-01-12 |
KR20180008709A (ko) | 2018-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6349395B2 (ja) | コールパスファインダ | |
US8056047B2 (en) | System and method for managing resources using a compositional programming model | |
JP7096762B2 (ja) | コントロールを使用して汎用プログラムを構成する技法 | |
Price | C# 8.0 and. NET Core 3.0–Modern Cross-Platform Development: Build applications with C#,. NET Core, Entity Framework Core, ASP. NET Core, and ML. NET using Visual Studio Code | |
JP6568605B2 (ja) | 大規模ソースコードリポジトリにおける自動インポートおよびディペンデンシー | |
Chaffer et al. | Jquery reference guide: a comprehensive exploration of the popular javascript library | |
Guihot | Pro Android apps performance optimization | |
US20150081690A1 (en) | Network sourced enrichment and categorization of media content | |
CN107391528B (zh) | 前端组件依赖信息搜索方法及设备 | |
Libes | Obfuscated C and other mysteries | |
US20140324839A1 (en) | Determining candidate scripts from a catalog of scripts | |
Kumar | Apache Solr search patterns | |
WO2019128317A1 (zh) | 物品推送方法、装置及服务器、计算设备及存储介质 | |
RU2016147085A (ru) | Осуществление доступа к семантическому контенту в системе разработки | |
US20150178075A1 (en) | Enhancing understandability of code using code clones | |
JP2018519592A5 (ja) | ||
CN105426541B (zh) | 一种通用数据的存储方法和装置 | |
US20130067338A1 (en) | Dynamic navigation region based on site usage | |
Lång et al. | Parallel graph-based stateless model checking | |
JP2018045619A (ja) | 解析プログラム、解析方法、及び解析装置 | |
Weiher | iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift | |
Li et al. | CSlicerCloud: a web-based semantic history slicing framework | |
Doglio | Mastering Python High Performance | |
US10620922B2 (en) | Compiler platform for test method | |
JP6926921B2 (ja) | コンパイルプログラム、コンパイル方法及び並列処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180611 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20190426 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190524 |
|
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: 20190604 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20190704 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190802 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6568605 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |