CN103853549A - 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统 - Google Patents

用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统 Download PDF

Info

Publication number
CN103853549A
CN103853549A CN201310627217.0A CN201310627217A CN103853549A CN 103853549 A CN103853549 A CN 103853549A CN 201310627217 A CN201310627217 A CN 201310627217A CN 103853549 A CN103853549 A CN 103853549A
Authority
CN
China
Prior art keywords
program code
search
storehouse
code storehouse
language
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
Application number
CN201310627217.0A
Other languages
English (en)
Other versions
CN103853549B (zh
Inventor
S·百拉萨布拉曼尼恩
R·A·哈密尔顿二世
B·M·奥康内尔
K·R·沃克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qindarui Co.
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103853549A publication Critical patent/CN103853549A/zh
Application granted granted Critical
Publication of CN103853549B publication Critical patent/CN103853549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统。本发明提供一种用于在网络化计算环境中进行多种编程语言的基于集成开发环境(IDE)的程序代码库搜索和选择的方法。在典型的实施例中,搜索请求(例如,用于定位所期望的程序代码库)将在IDE中被接收并被解析。搜索请求一般地包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对。对至少一个程序代码库的储存库的搜索然后将基于注释集来进行,并且将生成匹配结果的集合。匹配结果的集合可以包括一个或多个程序代码库,并且可以被提供给作为IDE的主机的设备。

Description

用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统
技术领域
本发明的实施例涉及程序代码库搜索和选择。特别地,本发明的实施例涉及用于在网络化计算环境(例如,云计算环境)中的基于集成开发环境(IDE)的程序代码库搜索和选择的方案。
背景技术
代码存储库典型为用户可以访问以浏览、搜索和下载源代码或编译的库代码的可搜索的、分类的和/或可互联网访问的位置。代码存储库的使用可以包括开源项目、专有开发项目和/或创建库以便以后使用的项目。代码注释是能够给源代码添加的语法元数据的一种特殊形式。类、方法、变量、参数和/或代码包可以被注释。与评论不同,注释可以是可操作的,因为它们可以被嵌入由编译器生成的文件中,并且可以由执行环境使用以便可实时检索。代码库是用来开发软件的资源的合集。这样的资源可以包括预先编写的代码和例程、类、值或类型规范。代码库可以含有为独立的程序提供服务的程序代码和/或数据。这样的实现方式允许程序代码和/或数据按模块的方式来共享及修改。程序员有时还可以基于项目要求在各种编程语言之间迁移。但是,挑战可能存在于如何允许程序员基于其他/多种编程语言的特性快速地定位程序代码库调用。现有的方案典型地依赖于手动的和/或完全不同的搜索操作。这样的方案可能是效率低的和/或不精确的。
发明内容
一般地,本发明的实施例提供一种用于在网络化计算环境(例如,云计算环境)中进行多种编程语言的基于集成开发环境(IDE)的程序代码库搜索和选择的方案。在典型的实施例中,搜索请求(例如,用于定位所期望的程序代码库)将在IDE中被接收并被解析。搜索请求一般地包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对(method pair)。对至少一个程序代码库的储存库的搜索然后将基于注释集来进行,并且将生成匹配结果的集合。匹配结果的集合可以包括一个或多个程序代码库(例如,基于一种或多种程序代码语言),并且可以被提供给作为IDE的主机的设备。
本发明的第一方面提供一种用于在网络化计算环境中搜索多种编程语言的程序代码库的计算机实现的方法,包括:在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,该请求包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对;基于注释集在该至少一个程序代码库的储存库中搜索程序代码库;以及将由搜索确定的匹配的搜索结果的集合提供给作为IDE的主机的设备。
本发明的第二方面提供一种用于在网络化计算环境中搜索多种编程语言的程序代码库的系统,包括:包含指令的存储介质;与存储介质耦接的总线;以及与总线耦接的处理器,该处理器在执行指令时促使系统:在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,该请求包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对;基于注释集在该至少一个程序代码库的储存库中搜索程序代码库;以及基于搜索将匹配的搜索结果的集合提供给作为IDE的主机的设备。
本发明的第三方面提供一种用于在网络化计算环境中搜索多种编程语言的程序代码库的计算机程序产品,该计算机程序产品包括计算机可读存储介质,以及存储于计算机可读存储介质上的程序指令,用于:在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,该请求包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对;基于注释集在该至少一个程序代码库的储存库中搜索程序代码库;以及基于搜索将匹配的搜索结果的集合提供给作为IDE的主机的设备。
根据本发明的第四方面提供一种用于部署用于在网络化计算环境中搜索多种编程语言的程序代码库的系统的方法,包括:提供计算机基础设施,该计算机基础设施可操作用于:在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,该请求包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对;基于注释集在该至少一个程序代码库的储存库中搜索程序代码库;以及基于搜索将匹配的搜索结果的集合提供给作为IDE的主机的设备。
附图说明
本发明的这些及其他特征根据下面结合附图进行的关于本发明的各个方面的详细描述将变得更容易理解,在附图中:
图1示出了根据本发明的一种实施例的计算节点。
图2示出了根据本发明的一种实施例的一种系统的示意图。
图3示出了根据本发明的一种实施例的图2的系统的更详细的示意图。
图4示出了根据本发明的一种实施例的一种方法的流程图。
图5示出了根据本发明的一种实施例的另一种方法的流程图。
附图并不一定是按比例的。附图只是示意性的表示,并非是要描述本发明的具体参数。附图意在只描绘本发明的典型实施例,并且因此不应被认为是对本发明的范围的限定。在附图中,相似的编号表示相似的元件。
具体实施方式
说明性的实施例现在将参照附图在下文更全面地描述,在附图中示出了示例性的实施例。但是,本公开内容可以按照许多不同的形式来实施,而不应被理解为仅限于本文所阐明的示例性实施例。相反地,这些示例性的实施例被提供使得本公开内容将是全面和完整的并将给本领域技术人员完全传达本公开内容的范围。在该描述中,关于众所周知的特征和技术的细节可以被省略以避免使得本发明的实施例不必要地变得不明确。
本文所使用的术语仅为了描述特定的实施例而并非旨在限定本公开内容。如同本文所使用的,单数形式“一”、“一个”和“该”意指同样包括复数形式,除非上下文另有明确说明。而且,术语“一”、“一个”等的使用并非表示对数量的限定,而是表示存在至少一个所引用的项。词“集合”旨在意指至少一个的数量。还应当理解,术语“包括”和/或“包含”或者“含有”和/或“拥有”,在用于本说明书时,指定存在所声明的特征、区域、整数、步骤、操作、元件和/或构件,但并不排除存在或添加一个或多个其他特征、区域、整数、步骤、操作、元件、构件和/或它们的群组。
如同前面所指出的,本发明的实施例提供一种用于在网络化计算环境(例如,云计算环境)中进行多种编程语言的基于集成开发环境(IDE)的程序代码库搜索和选择的方法。在典型的实施例中,搜索请求(例如,用于定位所期望的程序代码库)将在IDE中被接收并被解析。搜索请求一般地包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、程序代码库的可替换程序代码语言,或者与程序代码库关联的方法对。对至少一个程序代码库的储存库的搜索然后将基于注释集来进行,并且将生成匹配结果的集合。匹配结果的集合可以包括一个或多个程序代码库(例如,基于一个或多个程序代码语言),并且可以被提供给作为IDE的主机的设备。
在典型的实施例中,代码存储库和集成开发环境(IDE)被添加用于提供增强型搜索。在可替换的实施例中,本文所叙述的教导可以通过搜索引擎而不是通过开发环境来实现。本发明的实施例还可以扩充注释系统以支持基于标签的关于方法和类的描述。此外,在除了运行时的库之外还可利用源代码的实施例中,描述性的标签可以使用已知的搜索索引方法来自动地生成。而且,搜索通过使用预期注释来精炼(refine)。应当理解,本发明的实施例可以使用代码注释(例如,对程序代码、方法、类等的)来表示相关的属性。代码注释是能够给源代码添加的语法元数据的一种特殊形式。类、方法、变量、参数和/或代码包可以被注释。与评论不同,注释可以是可操作的,因为它们可以被嵌入由编译器生成的文件中,并且可以由执行环境使用以便可实时检索。
现在参照图1,图中示出了计算节点的实例的示意图。计算节点10只是合适的计算节点的一个实例,而并非意指暗示对本文所描述的本发明的实施例的用途或功能的范围的任何限定。无论如何,计算节点10能够被实现和/或执行以上所阐明的任何功能。
在计算节点10中,存在可与众多其他通用或专用计算系统环境或配置一起工作的计算机系统/服务器12。可以适合于与计算机系统/服务器12一起使用的熟知的计算系统、环境和/或配置的实例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、移动设备、全球定位系统(GPS)、启用GPS的设备、多处理器系统、基于微处理器的系统、机顶盒、可编程的消费电子产品、网络PC、小型计算机系统、大型计算机系统,以及包括任何上述系统或设备的分布式计算环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(例如,程序模块)的一般背景下描述。一般地,程序模块可以包括用于执行特定的任务或者实现特定的抽象数据类型的例程、程序、对象、构件、逻辑、数据结构等。计算机系统/服务器12可以在分布式计算环境中实施,在分布式计算环境中任务由通过通信网络链接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地及远程计算机系统存储介质两者中。
如图1所示,在计算节点10中的计算机系统/服务器12以通用计算设备的形式来示出。计算机系统/服务器12的构件可以包括但不限于:一个或多个处理器或处理单元16、系统存储器28,以及用于将包括系统存储器28在内的各种系统构件耦接至处理器16的总线18。
总线18表示任意若干类型的总线结构中的一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用多种总线架构中的任一种的处理器或局域总线。举例来说,但不作限定,这样的架构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这样的介质可以可由计算机系统/服务器12访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28能够包括形式为非易失性存储器的计算机系统可读介质,例如,随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移动的/不可移动的、易失性的/非易失性的计算机系统存储介质。仅举例来说,存储系统34能够被提供用于读取和写入不可移动的非易失性磁介质(未示出,且通常称为“硬盘”)。尽管未示出,但是也能够提供用于读取和写入可移动的非易失性磁盘(例如,“软盘”)的磁盘驱动器以及用于读取或写入可移动的非易失性光盘(例如,CD-ROM、DVD-ROM或其他光介质)的光盘驱动器。在这种情况下,每个驱动器都能够通过一个或多个数据介质接口连接至总线18。如同以下将进一步示出和描述的,存储器28可以包括具有被配置用于执行本发明的实施例的功能的一组(例如,至少一个)程序模块集合的至少一个程序产品。
本发明的实施例可以被实现为计算机可读信号介质,该计算机可读信号介质可以包括具有实现于其内(例如,在基带中或者作为载波的一部分)的计算机可读程序代码的传播的数据信号。这样的传播信号可以采用任意多种形式,包括但不限于,电磁的、光的或者它们的任何合适的组合。计算机可读信号介质可以是不为计算机可读存储介质的且能够通信、传播或输送由指令执行系统、装置或设备使用的或者与其结合起来使用的程序的任何计算机可读介质。
实现于计算机可读介质上的程序代码可以使用任何适当的介质来发送,包括但不限于,无线电、导线、光纤、射频(RF)等,或者上述项的任何合适的组合。
程序代码库搜索和选择程序/工具40,具有一组(至少一个)程序模块42,可以存储于存储器28内,举例来说,但不作限定,还有操作系统、一个或多个应用程序、其他程序模块和程序数据。一般地,程序/工具40执行本文所描述的本发明的功能。操作系统、一个或多个应用程序、其他程序模块和程序数据或者它们的某种组合每个都可以包括网络环境的实现方式。程序模块42一般地执行本文所描述的本发明的实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如,键盘、指点装置、显示器24等);用于允许用户与计算机系统/服务器12交互的一个或多个设备;和/或用于允许计算机系统/服务器12与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)通信。这样的通信能够经由I/O接口22来进行。此外,计算机系统/服务器12能够经由网络适配器20与一个或多个网络通信,例如,局域网(LAN)、广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其他构件通信。应当理解,尽管未示出,但是其他硬件和/或软件构件能够结合计算机系统/服务器12来使用。实例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
现在参照图2,图中示出了用于描述根据本发明的一种实施例的在此所讨论的功能的系统示意图。应当理解,本文所叙述的教导可以在任何类型的网络化计算环境(例如,云计算环境)中实施。在图2中示出了能够被实现为独立式计算机系统或者网络化计算机系统的计算机系统/服务器12。在本文所叙述的教导于网络化计算环境(例如,云计算环境)中实施的情况下,每个客户端都不需要具有程序代码库搜索和选择引擎(引擎50)。相反地,引擎50能够位于用于与客户端通信(例如,无线通信)以提供下文中的库搜索和选择功能的服务器(例如,支付处理服务器)或具备服务器能力的设备上。无论如何,如图所示,引擎50被示为在计算机系统/服务器12内。一般地,引擎50能够被实现为在图1的计算机系统12上的程序/工具40,并且能够启用本文所叙述的功能。如同进一步示出的,引擎50(在一种实施例中)包括用于处理一组(至少一个)规则/逻辑52和/或提供以下所叙述的库搜索和选择功能的规则和/或计算引擎。
按照这些方法,引擎50可以执行与通用计算机类似的多种功能。特别地,除了其他功能外,引擎50可以(除了别的以外):在计算机存储器介质(例如,计算机系统12的存储器28)内接收在与集成开发环境(IDE)54关联的至少一个程序代码库的储存库64和66内搜索程序代码库62的请求56,请求56包括与下列项中的至少一项对应的注释集58A-N:程序代码库62的首要程序代码语言66、可替换的程序代码语言70或方法对;基于注释集58A-N在该至少一个程序代码库的储存库64和68中搜索程序代码库62;并且基于该搜索将匹配的搜索结果的集合72提供给作为IDE54的主机的设备60。
应当理解,图2所示的实例意指仅为说明性的。例如,引擎50能够位于设备60上,或者在如图所示的单独系统上操作。按照这些方法,引擎50可以访问IDE54以执行下面所叙述的功能。作为选择,IDE54可以位于计算机系统12上。在这样的实现方式中,请求56和注释58A-N可以通过计算机系统12来接收。无论如何,应当理解,图2所示的具体架构实现方式并非意指为限制性的,并且相似的基础功能可以用可替换的架构来实现。例如,无论具体的架构是什么,具有用于查找所期望的程序代码库的注释的搜索请求都将被接收(例如,在计算机存储器中),被解析/分析,并被用来在多种程序代码语言间搜索所期望的程序代码库,不考虑上述功能于其下实现的系统的具体架构和/或位置。
现在参照图3,图中示出了程序40(图1)和/或引擎50(图2)的更详细的示意图。特别地,图3示出了通过经由连接400连接的IDE100、代码存储库200和300实现的程序40/引擎50。在一种实施例中,连接400可以表示云网络。在IDE100内,注释处理器110可以被配置用于处理“@SameAs”和/或“@Substitute”注释。处理器110可以将基于预期的搜索引擎140用于所有搜索。当使用“@SameAs”注释时,语言执行器120可以被配置用于按照用户指定的语言和返回结果来执行可替换方法。仿真器130可以与“@Substitute”注释一起使用以按照用户指定的语言来执行方法。代码存储库200和300是由搜索引擎140用来执行基于预期的搜索的说明性存储库。
说明性实施例
这部分将描述根据后面的说明性实例的由引擎50执行的各种功能(例如,经由方法、功能和/或模块)。
注释处理
具有助手的注释解析:按照这种方法,用户可以(例如)搜索用于执行对字符串的base64编码的库。对于它们的应用,用户可能希望从库调用中返回的仍然是字符串。为了初始化搜索,用户则可以将下列内容在其希望进行库调用的地方输入代码中:
@Description(base64,encode)
@Expect("hello").Returns("aGVsbG8=")
@Signature("public String<method>String")
上述指令集可以请求IDE来调用对含有术语base64和decode的方法的存储库搜索。为了匹配方法,IDE然后可以缩窄公开的、返回字符串对象的和预期单个字符串对象作为参数的方法。而且,如果给该方法传递字符串“hello”,该方法的返回值可以是字符串“aGVsbG8=”。然后可以给用户呈现匹配方法的列表以及那些方法所属的库。
为了帮助已经精通其他编程语言的开发者,可以提供新的注释以使过程流水线化。使用以上所声明的方法,用户可以用base64编码器按选择的语言来编写临时程序,采集输出并将其附于注释内,或者搜索基于Web的编码器来使用并采集来自其中的输出。但是,这不可能用于所有的库调用。为了启用该功能,可以引入“SameAs”注释,并且可以修改期望注释以不需要返回。已修改的调用可能看起来像这样:
@Description(base64,encode)
@SameAs(lang="Java",method="java.lang.Base64.encode");
@Expect("hello")
@Signature("public String<method>String")
这些指令可以引导IDE来使用各种搜索方法来定位与方法描述匹配的方法。作为要求用户来计算返回值的替代,IDE可以被配置用于调用具有字符串“hello”的java Base64,encode方法,并且用于采集该方法的返回并在方法搜索期间使用。
使用仿真的注释解析:在该方案的另一方面,开发者可能正在搜索特定语言的方法,但是愿意接受不同语言的可替换方法。特别地,开发者可能愿意接受满足他们的预期的但以不同的语言来定义的库。为了启用这种方法,可以提供新的注释。使用该注释,开发者可以指定预期可以用一种或多种不同语言的实现方式来替代。
@Description(base64,encode)
@Substitute(lang="Java C++Perl")
@Expect("hello").Returns("aGVsbG8=")
@Signature("public String<method>String")
这些指令引导IDE使用项目的语言对预期进行的第一穷举搜索。如果没有找到匹配项,则IDE可以扩大搜索以包括按语言属性指定的语言。如果找到匹配项,则在一种实施例中,IDE可以在库语言之上以项目的语言来构建包装方法。当包装方法被调用时,IDE可以利用仿真器来解释或链接到库语言并执行库方法。在可替换的实施例中,库提供者可以为其库提供执行环境,在这种情况下,包装器简单地使用提供者的环境来执行方法。
将助手与仿真结合:本方案的另一方面使用助手与仿真的组合。开发者可以指定“@SameAs”和“@Substitute”注释两者。在本例中,IDE可以首先使用助手来定位语言与项目相同的库。如果没有找到匹配项,则IDE可以扩大搜索以包括替代的库。
语言执行模块
该模块可以由IDE调用来执行功能/方法并采集返回值。该模块可以是IDE本地的或者可以作为对库的存储库的服务调用来使用。可能具有用户输入的IDE可以指示该模块如何构造所需的类以及哪些方法来执行并采集所产生的输出。某些方法可以是静态的并且不需要任何已构造的类,而其他方法可以更复杂并且需要构造和/或仿造对象。
仿真模块
该模块可以由IDE调用,以:(1)创建包装方法;以及(2)在执行期间仿真库语言或者在远程的库环境上调用该方法。可能的是,IDE可能没有能力仿真由开发者指定的每种语言。IDE可以在需要时基于“@Substitute”注释从中央存储库中下载仿真模块。作为选择,IDE可以由于缺少仿真模块而忽略语言。
现在参照图4,图中示出了根据本发明的一种实施例的一种方法的流程图。过程开始于步骤P1。在步骤P2中,开始使用指定的预期/语言对方法/库进行搜索。这样的搜索能够使用多种技术来执行。在步骤P3中,确定是否找到了匹配项。若是,则过程可以结束于步骤P14。若否,在步骤P4中确定方法/请求注释是否含有“@SameAs”注释(指示相同语言匹配被请求)。若否,则过程进行到步骤P10。若是,则在步骤P5中从注释内提取程序代码语言和方法,并且在步骤P6中执行对指定语言的方法的搜索。在步骤P7中,从库中获得方法,并且在步骤P8中使用指定的预期和之前的方法输出(步骤P7)对方法进行搜索。在步骤P9中,确定是否找到了匹配项。若是,则过程可以结束于步骤P14。若否,在步骤P10中确定方法注释是否含有“@Substitute”注释(指示可替换的语言匹配可接受)。若否,则过程结束于步骤P14。若是,则在步骤P11中使用指定的预期和替代的程序代码语言来执行对方法的搜索。在步骤P12中,确定是否能够找到匹配项。若是,则过程结束于步骤P14。若否,在过程结束于步骤P14之前于步骤P13中通知请求方法/程序代码库的开发者。
现在参照图5,图中示出了根据本发明的一种实施例的另一种方法的流程图(例如,由图2的引擎50所启用的)。如图所示,在步骤S1中,接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求。请求一般地包括与下列项中的至少一项对应的注释集:程序代码库的首要程序代码语言、可替换的程序代码语言或方法对。在步骤S2中,基于注释集来执行在该至少一个程序代码库的储存库中搜索程序代码库。在步骤S3中,基于该搜索而将匹配的搜索结果的集合提供给作为IDE的主机的设备。
虽然在此被示为及被描述为基于IDE的程序代码库搜索和选择解决方案,但是应当理解,本发明还提供了各种可替换的实施例。例如,在一种实施例中,本发明提供包含计算机程序代码用于允许计算机基础设施提供以上所讨论的基于IDE的程序代码库搜索和选择的计算机可读/可用介质。从这个意义上说,计算机可读/可用介质包含用于实现本发明的各种过程中的每一种过程的程序代码。应当理解,术语计算机可读介质或计算机可用介质包含任何类型的程序代码的物理实施例中的一种或多种。特别地,计算机可读/可用介质能够包含实现于一种或多种便携式存储制品(例如,光盘、磁盘、磁带等)上的,于计算设备的一个或多个数据存储部分(例如,存储器28(图1)和/或存储系统34(图1)(例如,固定盘、只读存储器、随机存取存储器、高速缓存存储器等))上的程序代码。
在另一种实施例中,本发明提供一种用于执行本发明的基于订购、广告和/或付费的过程的方法。即,服务提供者(例如,解决方案集成商)能够许诺提供(offer to provide)基于IDE的程序代码库搜索和选择功能。在本例中,服务提供者能够创建用于为一个或多个用户执行本发明的过程的计算机体系结构(例如,计算机系统12(图1)),并对其进行维护、支持等。进而,服务提供者能够接收用户按照订购和/或付费协议进行的支付,和/或服务提供者能够接收来自对一个或多个第三方的广告内容的销售的支付。
在又一种实施例中,本发明提供一种用于进行基于IDE的程序代码库搜索和选择的计算机实现的方法。在本例中,能够提供一种计算机体系结构(例如,计算机系统12(图1)),并且能够获得(例如,创建,购买,使用,修改等)用于执行本发明的过程的一个或多个系统并将其部署于计算机体系结构。从这个意义上说,系统的部署能够包括下列项中的一项或多项:(1)将来自计算机可读介质的程序代码安装于计算设备(例如,计算机系统12(图1))上;(2)将一个或多个计算设备添加到计算机体系结构中;以及(3)合并和/或修改计算机基础设施的一个或多个现有系统以允许计算机基础设施执行本发明的过程。
如同本文所使用的,应当理解,术语“程序代码”和“计算机程序代码”是同义的,并且意指一组指令以任意语言、代码或符号的任意表示,其中该组指令旨在促使具有信息处理能力的系统直接地执行特别的功能或者在以下a)转换为另一种语言、代码或符号;b)以不同的材料形式的再现中的任一项或两者之后执行特别的功能。从这个意义上说,程序代码能够被实现为下列项中的一项或多项:应用/软件程序、构件软件/函数(function)库、操作系统、特定的计算设备的基础设备系统/驱动器等。
适合于存储和/或执行程序代码的数据处理系统能够在下面提供,并且能够包括通过系统总线与存储元件直接或间接通信耦接的至少一个处理器。存储元件能够包括但不限于:在程序代码的实际执行期间采用的本地存储器、大容量存储器,以及用于为至少一些程序代码提供临时存储以便减少在执行期间必须从大容量存储器中检索代码的次数的高速缓存存储器。输入/输出和/或其他外部设备(包括但不限于,键盘、显示器、指点装置等)能够直接地或者通过中介的设备控制器与系统耦接。
网络适配器还可以与系统耦接以允许数据处理系统通过中介的专用或公共网络的任意组合与其他数据处理系统、远程打印机、存储设备等耦接。说明性的网络适配器包括但不限于:调制解调器、有线调制解调器和以太网卡。
以上关于本发明的各个方面的描述已经出于说明和描述的目的而给出。并非是要作为穷尽性的或者将本发明限定于所公开的精确形式,而是很明显,许多修改和变化都是可能的。本领域技术人员可以清楚此类修改和变化意指包含于由所附权利要求书所界定的本发明的范围之内。

Claims (15)

1.一种用于在网络化计算环境中搜索多种编程语言的程序代码库的计算机实现的方法,包括:
在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,所述请求包括与下列项中的至少一项对应的注释集:所述程序代码库的首要程序代码语言、所述程序代码库的可替换的程序代码语言,或者与所述程序代码库关联的方法对;
基于所述注释集在所述至少一个程序代码库的储存库中搜索所述程序代码库;以及
基于搜索将匹配的搜索结果的集合提供给作为所述IDE的主机的设备。
2.根据权利要求1所述的计算机实现的方法,所述匹配的搜索结果的集合包括方法集。
3.根据权利要求1所述的计算机实现的方法,所述匹配的搜索结果的集合包括程序代码库的集合。
4.根据权利要求1所述的计算机实现的方法,搜索包括解析所述注释集。
5.根据权利要求1所述的计算机实现的方法,搜索包括搜索具有所述首要程序代码语言的程序代码库的第一程序代码库。
6.根据权利要求5所述的计算机实现的方法,搜索包括搜索具有所述可替换的程序代码语言的程序代码库的第二程序代码库。
7.根据权利要求1所述的计算机实现的方法,所述网络化计算环境包括云计算环境。
8.一种用于在网络化计算环境中搜索多种编程语言的程序代码库的系统,包括:
包含指令的存储介质;
与所述存储器介质耦接的总线;以及
与所述总线耦接的处理器,所述处理器在执行所述指令时促使所述系统:
在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,所述请求包括与下列项中的至少一项对应的注释集:所述程序代码库的首要程序代码语言、所述程序代码库的可替换的程序代码语言,或者与所述程序代码库关联的方法对;
基于所述注释集在所述至少一个程序代码库的储存库中搜索所述程序代码库;以及
基于搜索将匹配的搜索结果的集合提供给作为所述IDE的主机的设备。
9.根据权利要求8所述的系统,所述匹配的搜索结果的集合包括方法集。
10.根据权利要求8所述的系统,所述匹配的搜索结果的集合包括程序代码库的集合。
11.根据权利要求8所述的系统,所述存储器介质还包括用于促使所述系统解析所述注释集的指令。
12.根据权利要求8所述的系统,所述存储器介质还包括用于促使所述系统搜索具有所述首要程序代码语言的程序代码库的第一程序代码库的指令。
13.根据权利要求12所述的系统,所述存储器介质还包括用于促使所述系统搜索具有所述可替换的程序代码语言的程序代码库的第二程序代码库的指令。
14.根据权利要求8所述的系统,所述网络化计算环境包括云计算环境。
15.一种用于部署用于在网络化计算环境中搜索多种编程语言的程序代码库的系统的方法,包括:
提供计算机基础设施,该计算机基础设施可操作用于:
在计算机存储介质中接收在与集成开发环境(IDE)关联的至少一个程序代码库的储存库中搜索程序代码库的请求,所述请求包括与下列项中的至少一项对应的注释集:所述程序代码库的首要程序代码语言、所述程序代码库的可替换的程序代码语言,或者与所述程序代码库关联的方法对;
基于所述注释集在所述至少一个程序代码库的储存库中搜索所述程序代码库;以及
基于所述搜索将匹配的搜索结果的集合提供给作为所述IDE的主机的设备。
CN201310627217.0A 2012-12-06 2013-11-29 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统 Active CN103853549B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/706,607 US9052979B2 (en) 2012-12-06 2012-12-06 Program code library searching and selection in a networked computing environment
US13/706,607 2012-12-06

Publications (2)

Publication Number Publication Date
CN103853549A true CN103853549A (zh) 2014-06-11
CN103853549B CN103853549B (zh) 2017-05-10

Family

ID=50861249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310627217.0A Active CN103853549B (zh) 2012-12-06 2013-11-29 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统

Country Status (2)

Country Link
US (4) US9052979B2 (zh)
CN (1) CN103853549B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294785A (zh) * 2016-08-12 2017-01-04 北京创新乐知信息技术有限公司 内容筛选方法以及系统
CN109800019A (zh) * 2018-12-17 2019-05-24 北京达佳互联信息技术有限公司 代码管理方法、系统、电子设备和计算机可读存储介质
CN112714905A (zh) * 2018-07-18 2021-04-27 爱奥尼克公司 量子混合计算
CN112860274A (zh) * 2019-11-27 2021-05-28 华为技术有限公司 程序包部署的方法、装置、终端设备和存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9052979B2 (en) 2012-12-06 2015-06-09 International Business Machines Corporation Program code library searching and selection in a networked computing environment
US11003426B1 (en) 2014-09-10 2021-05-11 Soundhound, Inc. Identification of code for parsing given expressions
US9645816B2 (en) * 2015-09-25 2017-05-09 Linkedin Corporation Multi-language code search index
WO2017134665A1 (en) * 2016-02-03 2017-08-10 Cocycles System for organizing, functionality indexing and constructing of a source code search engine and method thereof
US11176144B2 (en) 2016-09-16 2021-11-16 Microsoft Technology Licensing, Llc. Source code search engine
CN107885527A (zh) * 2016-09-27 2018-04-06 北京嘀嘀无限科技发展有限公司 一种测试系统的代码修改方法及装置
US11475081B2 (en) 2016-10-17 2022-10-18 Microsoft Technology Licensing, Llc Combining catalog search results from multiple package repositories
US10725745B2 (en) * 2018-05-24 2020-07-28 Walmart Apollo, Llc Systems and methods for polyglot analysis
US11182409B2 (en) 2018-11-21 2021-11-23 International Business Machines Corporation Data processing with tags
CN111488140B (zh) * 2019-01-29 2023-10-27 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7383269B2 (en) 2003-09-12 2008-06-03 Accenture Global Services Gmbh Navigating a software project repository
US20050160104A1 (en) * 2004-01-20 2005-07-21 Datasource, Inc. System and method for generating and deploying a software application
WO2006034258A1 (en) 2004-09-20 2006-03-30 Koders, Inc. Source code search engine
US20070299825A1 (en) 2004-09-20 2007-12-27 Koders, Inc. Source Code Search Engine
CN100485636C (zh) * 2006-04-24 2009-05-06 华为技术有限公司 一种基于模型驱动进行电信级业务开发的调试方法及装置
US7962470B2 (en) 2006-06-01 2011-06-14 Sap Ag System and method for searching web services
US7631294B2 (en) * 2006-09-19 2009-12-08 Black Duck Software, Inc. Notification system for source code discovery
US20080201330A1 (en) 2007-02-16 2008-08-21 Microsoft Corporation Software repositories
US8392880B2 (en) * 2007-04-27 2013-03-05 International Business Machines Corporation Rapid application development for database-aware applications
US9489418B2 (en) * 2007-04-27 2016-11-08 International Business Machines Corporation Processing database queries embedded in application source code from within integrated development environment tool
US8429601B2 (en) * 2007-11-29 2013-04-23 Red Hat, Inc. Code completion for object relational mapping query language (OQL) queries
US7831608B2 (en) * 2008-02-28 2010-11-09 International Business Machines Corporation Service identification in legacy source code using structured and unstructured analyses
US7562344B1 (en) * 2008-04-29 2009-07-14 International Business Machines Corporation Method, system, and computer program product for providing real-time developer feedback in an integrated development environment
WO2010011180A1 (en) * 2008-07-25 2010-01-28 Resolvo Systems Pte Ltd Method and system for securing against leakage of source code
US8065315B2 (en) 2008-08-27 2011-11-22 Sap Ag Solution search for software support
CN101667118A (zh) * 2008-09-02 2010-03-10 华为技术有限公司 多语言版本的开发、替换方法及装置
US8122017B1 (en) * 2008-09-18 2012-02-21 Google Inc. Enhanced retrieval of source code
US8869097B2 (en) * 2011-03-23 2014-10-21 Infosys Limited Online integrated development environment with code assist
US9009664B2 (en) * 2011-03-31 2015-04-14 Infosys Limited Structural search of source code
US8433687B1 (en) * 2011-04-07 2013-04-30 Google Inc. Off-line indexing for client-based software development tools
US8667456B1 (en) * 2011-04-20 2014-03-04 Google Inc. Cloud-based indexing for integrated development environments
US9286035B2 (en) * 2011-06-30 2016-03-15 Infosys Limited Code remediation
US20140013299A1 (en) * 2012-07-06 2014-01-09 Microsoft Corporation Generalization and/or specialization of code fragments
US9052979B2 (en) 2012-12-06 2015-06-09 International Business Machines Corporation Program code library searching and selection in a networked computing environment

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LAZZARINI LEMOS ET AL: "<A test-driven approach to code search and its application to the reuse of auxiliary functionality>", 《INFORMATION AND SOFTWARE TECHNOLOGY》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294785A (zh) * 2016-08-12 2017-01-04 北京创新乐知信息技术有限公司 内容筛选方法以及系统
CN112714905A (zh) * 2018-07-18 2021-04-27 爱奥尼克公司 量子混合计算
CN112714905B (zh) * 2018-07-18 2022-08-26 爱奥尼克公司 量子混合计算
CN109800019A (zh) * 2018-12-17 2019-05-24 北京达佳互联信息技术有限公司 代码管理方法、系统、电子设备和计算机可读存储介质
CN112860274A (zh) * 2019-11-27 2021-05-28 华为技术有限公司 程序包部署的方法、装置、终端设备和存储介质

Also Published As

Publication number Publication date
US9052979B2 (en) 2015-06-09
US9891896B2 (en) 2018-02-13
US9639348B2 (en) 2017-05-02
US20170139687A1 (en) 2017-05-18
US10169031B2 (en) 2019-01-01
CN103853549B (zh) 2017-05-10
US20140165032A1 (en) 2014-06-12
US20150178073A1 (en) 2015-06-25
US20180067730A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
CN103853549A (zh) 用于在网络化计算环境中进行程序代码库搜索和选择的方法和系统
US9946537B2 (en) Integrated development environment-based repository searching in a networked computing environment
CN102902529B (zh) 用于管理数据源的方法和系统
CN103164249B (zh) 用于脚本语言编译器的扩展机制
CN100354823C (zh) 用于创建、管理和使用代码段的系统和方法
US11200034B2 (en) Universal application framework for streamlined frontend development of user interface applications
CN103853811B (zh) 用于在网络化计算环境中替换注释的程序代码的方法和系统
CN102402451B (zh) 用户定义类型的编译时边界检查
Kelley et al. A framework for creating knowledge graphs of scientific software metadata
US20140165034A1 (en) Program code library selection in an integrated development environment
CN102693263A (zh) 数据编程环境
Labropoulou et al. Openminted: A platform facilitating text mining of scholarly content
Di Rocco et al. Hybridrec: A recommender system for tagging github repositories
Balbaert Getting started with Julia
Wittek et al. Digital preservation in grids and clouds: a middleware approach
CN104335171A (zh) 联网计算环境中为开发程序模块而对编码竞争的实例化
Amar Bensaber et al. Development of semantic web services: model driven approach
Ranganathan et al. Mashup-based information retrieval for domain experts
Wittek et al. XML processing in the cloud: large-scale digital preservation in small institutions
Koch et al. A sustainable infrastructure concept for improved accessibility, reusability, and archival of research software
Kövesdán et al. Fast android application development with component modeling
Popoola et al. A LabVIEW metamodel for automated analysis
Alper Towards harnessing computational workflow provenance for experiment reporting
Kumari Linux Shell Scripting Essentials
Koohi-Var et al. Cross-domain similarity assessment for workflow improvement to handle Big Data challenge in workflow management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20211207

Address after: USA New York

Patentee after: Qindarui Co.

Address before: USA New York

Patentee before: International Business Machines Corp.