用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中進(jìn)行程序代碼庫搜索和選擇的方法和系統(tǒng)的制作方法
【專利摘要】本公開涉及用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中進(jìn)行程序代碼庫搜索和選擇的方法和系統(tǒng)。本發(fā)明提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中進(jìn)行多種編程語言的基于集成開發(fā)環(huán)境(IDE)的程序代碼庫搜索和選擇的方法。在典型的實(shí)施例中,搜索請求(例如,用于定位所期望的程序代碼庫)將在IDE中被接收并被解析。搜索請求一般地包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對。對至少一個(gè)程序代碼庫的儲存庫的搜索然后將基于注釋集來進(jìn)行,并且將生成匹配結(jié)果的集合。匹配結(jié)果的集合可以包括一個(gè)或多個(gè)程序代碼庫,并且可以被提供給作為IDE的主機(jī)的設(shè)備。
【專利說明】用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中進(jìn)行程序代碼庫搜索和選擇的方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施例涉及程序代碼庫搜索和選擇。特別地,本發(fā)明的實(shí)施例涉及用于在網(wǎng)絡(luò)化計(jì)算環(huán)境(例如,云計(jì)算環(huán)境)中的基于集成開發(fā)環(huán)境(IDE)的程序代碼庫搜索和選擇的方案。
【背景技術(shù)】
[0002]代碼存儲庫典型為用戶可以訪問以瀏覽、搜索和下載源代碼或編譯的庫代碼的可搜索的、分類的和/或可互聯(lián)網(wǎng)訪問的位置。代碼存儲庫的使用可以包括開源項(xiàng)目、專有開發(fā)項(xiàng)目和/或創(chuàng)建庫以便以后使用的項(xiàng)目。代碼注釋是能夠給源代碼添加的語法元數(shù)據(jù)的一種特殊形式。類、方法、變量、參數(shù)和/或代碼包可以被注釋。與評論不同,注釋可以是可操作的,因?yàn)樗鼈兛梢员磺度胗删幾g器生成的文件中,并且可以由執(zhí)行環(huán)境使用以便可實(shí)時(shí)檢索。代碼庫是用來開發(fā)軟件的資源的合集。這樣的資源可以包括預(yù)先編寫的代碼和例程、類、值或類型規(guī)范。代碼庫可以含有為獨(dú)立的程序提供服務(wù)的程序代碼和/或數(shù)據(jù)。這樣的實(shí)現(xiàn)方式允許程序代碼和/或數(shù)據(jù)按模塊的方式來共享及修改。程序員有時(shí)還可以基于項(xiàng)目要求在各種編程語言之間遷移。但是,挑戰(zhàn)可能存在于如何允許程序員基于其他/多種編程語言的特性快速地定位程序代碼庫調(diào)用?,F(xiàn)有的方案典型地依賴于手動(dòng)的和/或完全不同的搜索操作。這樣的方案可能是效率低的和/或不精確的。
【發(fā)明內(nèi)容】
[0003]一般地,本發(fā)明的實(shí)施例提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境(例如,云計(jì)算環(huán)境)中進(jìn)行多種編程語言的基于集成開發(fā)環(huán)境(IDE)的程序代碼庫搜索和選擇的方案。在典型的實(shí)施例中,搜索請求(例如,用于定位所期望的程序代碼庫)將在IDE中被接收并被解析。搜索請求一般地包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對(method pair)。對至少一個(gè)程序代碼庫的儲存庫的搜索然后將基于注釋集來進(jìn)行,并且將生成匹配結(jié)果的集合。匹配結(jié)果的集合可以包括一個(gè)或多個(gè)程序代碼庫(例如,基于一種或多種程序代碼語言),并且可以被提供給作為IDE的主機(jī)的設(shè)備。
[0004]本發(fā)明的第一方面提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括:在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,該請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對;基于注釋集在該至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫;以及將由搜索確定的匹配的搜索結(jié)果的集合提供給作為IDE的主機(jī)的設(shè)備。
[0005]本發(fā)明的第二方面提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的系統(tǒng),包括:包含指令的存儲介質(zhì);與存儲介質(zhì)耦接的總線;以及與總線耦接的處理器,該處理器在執(zhí)行指令時(shí)促使系統(tǒng):在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,該請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對;基于注釋集在該至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫;以及基于搜索將匹配的搜索結(jié)果的集合提供給作為IDE的主機(jī)的設(shè)備。
[0006]本發(fā)明的第三方面提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲介質(zhì),以及存儲于計(jì)算機(jī)可讀存儲介質(zhì)上的程序指令,用于:在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,該請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對;基于注釋集在該至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫;以及基于搜索將匹配的搜索結(jié)果的集合提供給作為IDE的主機(jī)的設(shè)備。
[0007]根據(jù)本發(fā)明的第四方面提供一種用于部署用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的系統(tǒng)的方法,包括:提供計(jì)算機(jī)基礎(chǔ)設(shè)施,該計(jì)算機(jī)基礎(chǔ)設(shè)施可操作用于:在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,該請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對;基于注釋集在該至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫;以及基于搜索將匹配的搜索結(jié)果的集合提供給作為IDE的主機(jī)的設(shè)備。
【專利附圖】
【附圖說明】
[0008]本發(fā)明的這些及其他特征根據(jù)下面結(jié)合附圖進(jìn)行的關(guān)于本發(fā)明的各個(gè)方面的詳細(xì)描述將變得更容易理解,在附圖中:
[0009]圖1示出了根據(jù)本發(fā)明的一種實(shí)施例的計(jì)算節(jié)點(diǎn)。
[0010]圖2示出了根據(jù)本發(fā)明的一種實(shí)施例的一種系統(tǒng)的示意圖。
[0011]圖3示出了根據(jù)本發(fā)明的一種實(shí)施例的圖2的系統(tǒng)的更詳細(xì)的示意圖。
[0012]圖4示出了根據(jù)本發(fā)明的一種實(shí)施例的一種方法的流程圖。
[0013]圖5示出了根據(jù)本發(fā)明的一種實(shí)施例的另一種方法的流程圖。
[0014]附圖并不一定是按比例的。附圖只是示意性的表示,并非是要描述本發(fā)明的具體參數(shù)。附圖意在只描繪本發(fā)明的典型實(shí)施例,并且因此不應(yīng)被認(rèn)為是對本發(fā)明的范圍的限定。在附圖中,相似的編號表不相似的兀件。
【具體實(shí)施方式】
[0015]說明性的實(shí)施例現(xiàn)在將參照附圖在下文更全面地描述,在附圖中示出了示例性的實(shí)施例。但是,本公開內(nèi)容可以按照許多不同的形式來實(shí)施,而不應(yīng)被理解為僅限于本文所闡明的示例性實(shí)施例。相反地,這些示例性的實(shí)施例被提供使得本公開內(nèi)容將是全面和完整的并將給本領(lǐng)域技術(shù)人員完全傳達(dá)本公開內(nèi)容的范圍。在該描述中,關(guān)于眾所周知的特征和技術(shù)的細(xì)節(jié)可以被省略以避免使得本發(fā)明的實(shí)施例不必要地變得不明確。
[0016]本文所使用的術(shù)語僅為了描述特定的實(shí)施例而并非旨在限定本公開內(nèi)容。如同本文所使用的,單數(shù)形式“一”、“一個(gè)”和“該”意指同樣包括復(fù)數(shù)形式,除非上下文另有明確說明。而且,術(shù)語“一”、“一個(gè)”等的使用并非表示對數(shù)量的限定,而是表示存在至少一個(gè)所引用的項(xiàng)。詞“集合”旨在意指至少一個(gè)的數(shù)量。還應(yīng)當(dāng)理解,術(shù)語“包括”和/或“包含”或者“含有”和/或“擁有”,在用于本說明書時(shí),指定存在所聲明的特征、區(qū)域、整數(shù)、步驟、操作、元件和/或構(gòu)件,但并不排除存在或添加一個(gè)或多個(gè)其他特征、區(qū)域、整數(shù)、步驟、操作、元件、構(gòu)件和/或它們的群組。
[0017]如同前面所指出的,本發(fā)明的實(shí)施例提供一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境(例如,云計(jì)算環(huán)境)中進(jìn)行多種編程語言的基于集成開發(fā)環(huán)境(IDE)的程序代碼庫搜索和選擇的方法。在典型的實(shí)施例中,搜索請求(例如,用于定位所期望的程序代碼庫)將在IDE中被接收并被解析。搜索請求一般地包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、程序代碼庫的可替換程序代碼語言,或者與程序代碼庫關(guān)聯(lián)的方法對。對至少一個(gè)程序代碼庫的儲存庫的搜索然后將基于注釋集來進(jìn)行,并且將生成匹配結(jié)果的集合。匹配結(jié)果的集合可以包括一個(gè)或多個(gè)程序代碼庫(例如,基于一個(gè)或多個(gè)程序代碼語言),并且可以被提供給作為IDE的主機(jī)的設(shè)備。
[0018]在典型的實(shí)施例中,代碼存儲庫和集成開發(fā)環(huán)境(IDE)被添加用于提供增強(qiáng)型搜索。在可替換的實(shí)施例中,本文所敘述的教導(dǎo)可以通過搜索引擎而不是通過開發(fā)環(huán)境來實(shí)現(xiàn)。本發(fā)明的實(shí)施例還可以擴(kuò)充注釋系統(tǒng)以支持基于標(biāo)簽的關(guān)于方法和類的描述。此外,在除了運(yùn)行時(shí)的庫之外還可利用源代碼的實(shí)施例中,描述性的標(biāo)簽可以使用已知的搜索索引方法來自動(dòng)地生成。而且,搜索通過使用預(yù)期注釋來精煉(refine)。應(yīng)當(dāng)理解,本發(fā)明的實(shí)施例可以使用代碼注釋(例如,對程序代碼、方法、類等的)來表示相關(guān)的屬性。代碼注釋是能夠給源代碼添加的語法元數(shù)據(jù)的一種特殊形式。類、方法、變量、參數(shù)和/或代碼包可以被注釋。與評論不同,注釋可以是可操作的,因?yàn)樗鼈兛梢员磺度胗删幾g器生成的文件中,并且可以由執(zhí)行環(huán)境使用以便可實(shí)時(shí)檢索。
[0019]現(xiàn)在參照圖1,圖中示出了計(jì)算節(jié)點(diǎn)的實(shí)例的示意圖。計(jì)算節(jié)點(diǎn)10只是合適的計(jì)算節(jié)點(diǎn)的一個(gè)實(shí)例,而并非意指暗示對本文所描述的本發(fā)明的實(shí)施例的用途或功能的范圍的任何限定。無論如何,計(jì)算節(jié)點(diǎn)10能夠被實(shí)現(xiàn)和/或執(zhí)行以上所闡明的任何功能。
[0020]在計(jì)算節(jié)點(diǎn)10中,存在可與眾多其他通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起工作的計(jì)算機(jī)系統(tǒng)/服務(wù)器12??梢赃m合于與計(jì)算機(jī)系統(tǒng)/服務(wù)器12 —起使用的熟知的計(jì)算系統(tǒng)、環(huán)境和/或配置的實(shí)例包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶端、胖客戶端、手持式或膝上型設(shè)備、移動(dòng)設(shè)備、全球定位系統(tǒng)(GPS)、啟用GPS的設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程的消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)系統(tǒng)、大型計(jì)算機(jī)系統(tǒng),以及包括任何上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境,等等。
[0021]計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(例如,程序模塊)的一般背景下描述。一般地,程序模塊可以包括用于執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、對象、構(gòu)件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以在分布式計(jì)算環(huán)境中實(shí)施,在分布式計(jì)算環(huán)境中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地及遠(yuǎn)程計(jì)算機(jī)系統(tǒng)存儲介質(zhì)兩者中。
[0022]如圖1所示,在計(jì)算節(jié)點(diǎn)10中的計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式來示出。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的構(gòu)件可以包括但不限于:一個(gè)或多個(gè)處理器或處理單元16、系統(tǒng)存儲器28,以及用于將包括系統(tǒng)存儲器28在內(nèi)的各種系統(tǒng)構(gòu)件耦接至處理器16的總線18。
[0023]總線18表示任意若干類型的總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或存儲器控制器、外圍總線、加速圖形端口,以及使用多種總線架構(gòu)中的任一種的處理器或局域總線。舉例來說,但不作限定,這樣的架構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0024]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這樣的介質(zhì)可以可由計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的任何可用介質(zhì),并且它包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。
[0025]系統(tǒng)存儲器28能夠包括形式為非易失性存儲器的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如,隨機(jī)存取存儲器(RAM)30和/或高速緩存存儲器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以包括其他可移動(dòng)的/不可移動(dòng)的、易失性的/非易失性的計(jì)算機(jī)系統(tǒng)存儲介質(zhì)。僅舉例來說,存儲系統(tǒng)34能夠被提供用于讀取和寫入不可移動(dòng)的非易失性磁介質(zhì)(未示出,且通常稱為“硬盤”)。盡管未示出,但是也能夠提供用于讀取和寫入可移動(dòng)的非易失性磁盤(例如,“軟盤”)的磁盤驅(qū)動(dòng)器以及用于讀取或?qū)懭肟梢苿?dòng)的非易失性光盤(例如,⑶-ROM、DVD-ROM或其他光介質(zhì))的光盤驅(qū)動(dòng)器。在這種情況下,每個(gè)驅(qū)動(dòng)器都能夠通過一個(gè)或多個(gè)數(shù)據(jù)介質(zhì)接口連接至總線18。如同以下將進(jìn)一步示出和描述的,存儲器28可以包括具有被配置用于執(zhí)行本發(fā)明的實(shí)施例的功能的一組(例如,至少一個(gè))程序模塊集合的至少一個(gè)程序產(chǎn)品。
[0026]本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)為計(jì)算機(jī)可讀信號介質(zhì),該計(jì)算機(jī)可讀信號介質(zhì)可以包括具有實(shí)現(xiàn)于其內(nèi)(例如,在基帶中或者作為載波的一部分)的計(jì)算機(jī)可讀程序代碼的傳播的數(shù)據(jù)信號。這樣的傳播信號可以采用任意多種形式,包括但不限于,電磁的、光的或者它們的任何合適的組合。計(jì)算機(jī)可讀信號介質(zhì)可以是不為計(jì)算機(jī)可讀存儲介質(zhì)的且能夠通信、傳播或輸送由指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的或者與其結(jié)合起來使用的程序的任何計(jì)算機(jī)可讀介質(zhì)。
[0027]實(shí)現(xiàn)于計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以使用任何適當(dāng)?shù)慕橘|(zhì)來發(fā)送,包括但不限于,無線電、導(dǎo)線、光纖、射頻(RF)等,或者上述項(xiàng)的任何合適的組合。
[0028]程序代碼庫搜索和選擇程序/工具40,具有一組(至少一個(gè))程序模塊42,可以存儲于存儲器28內(nèi),舉例來說,但不作限定,還有操作系統(tǒng)、一個(gè)或多個(gè)應(yīng)用程序、其他程序模塊和程序數(shù)據(jù)。一般地,程序/工具40執(zhí)行本文所描述的本發(fā)明的功能。操作系統(tǒng)、一個(gè)或多個(gè)應(yīng)用程序、其他程序模塊和程序數(shù)據(jù)或者它們的某種組合每個(gè)都可以包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)方式。程序模塊42 —般地執(zhí)行本文所描述的本發(fā)明的實(shí)施例的功能和/或方法。
[0029]計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以與一個(gè)或多個(gè)外部設(shè)備14(例如,鍵盤、指點(diǎn)裝置、顯示器24等);用于允許用戶與計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的一個(gè)或多個(gè)設(shè)備;和/或用于允許計(jì)算機(jī)系統(tǒng)/服務(wù)器12與一個(gè)或多個(gè)其他計(jì)算設(shè)備通信的任何設(shè)備(例如,網(wǎng)卡、調(diào)制解調(diào)器等)通信。這樣的通信能夠經(jīng)由I/O接口 22來進(jìn)行。此外,計(jì)算機(jī)系統(tǒng)/服務(wù)器12能夠經(jīng)由網(wǎng)絡(luò)適配器20與一個(gè)或多個(gè)網(wǎng)絡(luò)通信,例如,局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò)(例如,因特網(wǎng))。如圖所示,網(wǎng)絡(luò)適配器20經(jīng)由總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其他構(gòu)件通信。應(yīng)當(dāng)理解,盡管未示出,但是其他硬件和/或軟件構(gòu)件能夠結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12來使用。實(shí)例包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)器陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器和數(shù)據(jù)檔案存儲系統(tǒng)等。
[0030]現(xiàn)在參照圖2,圖中示出了用于描述根據(jù)本發(fā)明的一種實(shí)施例的在此所討論的功能的系統(tǒng)示意圖。應(yīng)當(dāng)理解,本文所敘述的教導(dǎo)可以在任何類型的網(wǎng)絡(luò)化計(jì)算環(huán)境(例如,云計(jì)算環(huán)境)中實(shí)施。在圖2中示出了能夠被實(shí)現(xiàn)為獨(dú)立式計(jì)算機(jī)系統(tǒng)或者網(wǎng)絡(luò)化計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)系統(tǒng)/服務(wù)器12。在本文所敘述的教導(dǎo)于網(wǎng)絡(luò)化計(jì)算環(huán)境(例如,云計(jì)算環(huán)境)中實(shí)施的情況下,每個(gè)客戶端都不需要具有程序代碼庫搜索和選擇引擎(引擎50)。相反地,引擎50能夠位于用于與客戶端通信(例如,無線通信)以提供下文中的庫搜索和選擇功能的服務(wù)器(例如,支付處理服務(wù)器)或具備服務(wù)器能力的設(shè)備上。無論如何,如圖所示,引擎50被示為在計(jì)算機(jī)系統(tǒng)/服務(wù)器12內(nèi)。一般地,引擎50能夠被實(shí)現(xiàn)為在圖1的計(jì)算機(jī)系統(tǒng)12上的程序/工具40,并且能夠啟用本文所敘述的功能。如同進(jìn)一步示出的,引擎50 (在一種實(shí)施例中)包括用于處理一組(至少一個(gè))規(guī)則/邏輯52和/或提供以下所敘述的庫搜索和選擇功能的規(guī)則和/或計(jì)算引擎。
[0031]按照這些方法,引擎50可以執(zhí)行與通用計(jì)算機(jī)類似的多種功能。特別地,除了其他功能外,引擎50可以(除了別的以外):在計(jì)算機(jī)存儲器介質(zhì)(例如,計(jì)算機(jī)系統(tǒng)12的存儲器28)內(nèi)接收在與集成開發(fā)環(huán)境(IDE) 54關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫64和66內(nèi)搜索程序代碼庫62的請求56,請求56包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集58A-N:程序代碼庫62的首要程序代碼語言66、可替換的程序代碼語言70或方法對;基于注釋集58A-N在該至少一個(gè)程序代碼庫的儲存庫64和68中搜索程序代碼庫62 ;并且基于該搜索將匹配的搜索結(jié)果的集合72提供給作為IDE54的主機(jī)的設(shè)備60。
[0032]應(yīng)當(dāng)理解,圖2所示的實(shí)例意指僅為說明性的。例如,引擎50能夠位于設(shè)備60上,或者在如圖所示的單獨(dú)系統(tǒng)上操作。按照這些方法,引擎50可以訪問IDE54以執(zhí)行下面所敘述的功能。作為選擇,IDE54可以位于計(jì)算機(jī)系統(tǒng)12上。在這樣的實(shí)現(xiàn)方式中,請求56和注釋58A-N可以通過計(jì)算機(jī)系統(tǒng)12來接收。無論如何,應(yīng)當(dāng)理解,圖2所示的具體架構(gòu)實(shí)現(xiàn)方式并非意指為限制性的,并且相似的基礎(chǔ)功能可以用可替換的架構(gòu)來實(shí)現(xiàn)。例如,無論具體的架構(gòu)是什么,具有用于查找所期望的程序代碼庫的注釋的搜索請求都將被接收(例如,在計(jì)算機(jī)存儲器中),被解析/分析,并被用來在多種程序代碼語言間搜索所期望的程序代碼庫,不考慮上述功能于其下實(shí)現(xiàn)的系統(tǒng)的具體架構(gòu)和/或位置。
[0033]現(xiàn)在參照圖3,圖中示出了程序40 (圖1)和/或引擎50 (圖2)的更詳細(xì)的示意圖。特別地,圖3示出了通過經(jīng)由連接400連接的IDE100、代碼存儲庫200和300實(shí)現(xiàn)的程序40/引擎50。在一種實(shí)施例中,連接400可以表示云網(wǎng)絡(luò)。在IDE100內(nèi),注釋處理器110可以被配置用于處理“OSameAs”和/或“OSubstitute”注釋。處理器110可以將基于預(yù)期的搜索引擎140用于所有搜索。當(dāng)使用“OSameAs”注釋時(shí),語言執(zhí)行器120可以被配置用于按照用戶指定的語言和返回結(jié)果來執(zhí)行可替換方法。仿真器130可以與“OSubstitute”注釋一起使用以按照用戶指定的語言來執(zhí)行方法。代碼存儲庫200和300是由搜索引擎140用來執(zhí)行基于預(yù)期的搜索的說明性存儲庫。[0034]說明件實(shí)施例
[0035]這部分將描述根據(jù)后面的說明性實(shí)例的由引擎50執(zhí)行的各種功能(例如,經(jīng)由方法、功能和/或模塊)。
[0036]灃釋處理
[0037]具有助手的注釋解析:按照這種方法,用戶可以(例如)搜索用于執(zhí)行對字符串的base64編碼的庫。對于它們的應(yīng)用,用戶可能希望從庫調(diào)用中返回的仍然是字符串。為了初始化搜索,用戶則可以將下列內(nèi)容在其希望進(jìn)行庫調(diào)用的地方輸入代碼中:
[0038]iDescription (base64, encode)
[0039]OExpect ("hello").Returns("aGVsbG8=")
[0040]OSignature ("public String〈method>String")
[0041]上述指令集可以請求IDE來調(diào)用對含有術(shù)語base64和decode的方法的存儲庫搜索。為了匹配方法,IDE然后可以縮窄公開的、返回字符串對象的和預(yù)期單個(gè)字符串對象作為參數(shù)的方法。而且,如果給該方法傳遞字符串“hello”,該方法的返回值可以是字符串“aGVsbGS=”。然后可以給用戶呈現(xiàn)匹配方法的列表以及那些方法所屬的庫。
[0042]為了幫助已經(jīng)精通其他編程語言的開發(fā)者,可以提供新的注釋以使過程流水線化。使用以上所聲明的方法,用戶可以用base64編碼器按選擇的語言來編寫臨時(shí)程序,采集輸出并將其附于注釋內(nèi),或者搜索基于Web的編碼器來使用并采集來自其中的輸出。但是,這不可能用于所有的庫調(diào)用。為了啟用該功能,可以引入“SameAs”注釋,并且可以修改期望注釋以不需要返回。已修改的調(diào)用可能看起來像這樣:
[0043]iDescription (base64, encode)
[0044]OSameAs(lang="Java", method="java.lang.Base64.encode");
[0045]OExpect("hello")
[0046]OSignature("public String〈method>String")
[0047]這些指令可以引導(dǎo)IDE來使用各種搜索方法來定位與方法描述匹配的方法。作為要求用戶來計(jì)算返回值的替代,IDE可以被配置用于調(diào)用具有字符串“hello”的javaBase64, encode方法,并且用于采集該方法的返回并在方法搜索期間使用。
[0048]使用仿真的注釋解析:在該方案的另一方面,開發(fā)者可能正在搜索特定語言的方法,但是愿意接受不同語言的可替換方法。特別地,開發(fā)者可能愿意接受滿足他們的預(yù)期的但以不同的語言來定義的庫。為了啟用這種方法,可以提供新的注釋。使用該注釋,開發(fā)者可以指定預(yù)期可以用一種或多種不同語言的實(shí)現(xiàn)方式來替代。
[0049]iDescription (base64, encode)
[0050]OSubstitute(lang="Java C++Perl")
[0051]OExpect("hello").Returns("aGVsbGS=")
[0052]OSignature ("public String〈method>String")
[0053]這些指令引導(dǎo)IDE使用項(xiàng)目的語言對預(yù)期進(jìn)行的第一窮舉搜索。如果沒有找到匹配項(xiàng),則IDE可以擴(kuò)大搜索以包括按語言屬性指定的語言。如果找到匹配項(xiàng),則在一種實(shí)施例中,IDE可以在庫語目之上以項(xiàng)目的語目來構(gòu)建包裝方法。當(dāng)包裝方法被調(diào)用時(shí),IDE可以利用仿真器來解釋或鏈接到庫語言并執(zhí)行庫方法。在可替換的實(shí)施例中,庫提供者可以為其庫提供執(zhí)行環(huán)境,在這種情況下,包裝器簡單地使用提供者的環(huán)境來執(zhí)行方法。[0054]將助手與仿真結(jié)合:本方案的另一方面使用助手與仿真的組合。開發(fā)者可以指定“OSameAs”和“OSubstitute”注釋兩者。在本例中,IDE可以首先使用助手來定位語言與項(xiàng)目相同的庫。如果沒有找到匹配項(xiàng),則IDE可以擴(kuò)大搜索以包括替代的庫。
[0055]語言執(zhí)行模塊
[0056]該模塊可以由IDE調(diào)用來執(zhí)行功能/方法并采集返回值。該模塊可以是IDE本地的或者可以作為對庫的存儲庫的服務(wù)調(diào)用來使用??赡芫哂杏脩糨斎氲腎DE可以指示該模塊如何構(gòu)造所需的類以及哪些方法來執(zhí)行并采集所產(chǎn)生的輸出。某些方法可以是靜態(tài)的并且不需要任何已構(gòu)造的類,而其他方法可以更復(fù)雜并且需要構(gòu)造和/或仿造對象。
[0057]仿真模塊
[0058]該模塊可以由IDE調(diào)用,以:(1)創(chuàng)建包裝方法;以及(2)在執(zhí)行期間仿真庫語言或者在遠(yuǎn)程的庫環(huán)境上調(diào)用該方法??赡艿氖?,IDE可能沒有能力仿真由開發(fā)者指定的每種語言。IDE可以在需要時(shí)基于“OSubstitute”注釋從中央存儲庫中下載仿真模塊。作為選擇,IDE可以由于缺少仿真模塊而忽略語言。
[0059]現(xiàn)在參照圖4,圖中示出了根據(jù)本發(fā)明的一種實(shí)施例的一種方法的流程圖。過程開始于步驟P1。在步驟P2中,開始使用指定的預(yù)期/語言對方法/庫進(jìn)行搜索。這樣的搜索能夠使用多種技術(shù)來執(zhí)行。在步驟P3中,確定是否找到了匹配項(xiàng)。若是,則過程可以結(jié)束于步驟P14。若否,在步驟P4中確定方法/請求注釋是否含有“OSameAs”注釋(指示相同語言匹配被請求)。若否,則過程進(jìn)行到步驟P10。若是,則在步驟P5中從注釋內(nèi)提取程序代碼語言和方法,并且在步驟P6中執(zhí)行對指定語言的方法的搜索。在步驟P7中,從庫中獲得方法,并且在步驟P8中使用指定的預(yù)期和之前的方法輸出(步驟P7)對方法進(jìn)行搜索。在步驟P9中,確定是否找到了匹配項(xiàng)。若是,則過程可以結(jié)束于步驟P14。若否,在步驟PlO中確定方法注釋是否含有“?Substitute”注釋(指示可替換的語言匹配可接受)。若否,則過程結(jié)束于步驟P14。若是,則在步驟Pll中使用指定的預(yù)期和替代的程序代碼語言來執(zhí)行對方法的搜索。在步驟P12中,確定是否能夠找到匹配項(xiàng)。若是,則過程結(jié)束于步驟P14。若否,在過程結(jié)束于步驟P14之前于步驟P13中通知請求方法/程序代碼庫的開發(fā)者。
[0060]現(xiàn)在參照圖5,圖中示出了根據(jù)本發(fā)明的一種實(shí)施例的另一種方法的流程圖(例如,由圖2的引擎50所啟用的)。如圖所示,在步驟SI中,接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求。請求一般地包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:程序代碼庫的首要程序代碼語言、可替換的程序代碼語言或方法對。在步驟S2中,基于注釋集來執(zhí)行在該至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫。在步驟S3中,基于該搜索而將匹配的搜索結(jié)果的集合提供給作為IDE的主機(jī)的設(shè)備。
[0061]雖然在此被示為及被描述為基于IDE的程序代碼庫搜索和選擇解決方案,但是應(yīng)當(dāng)理解,本發(fā)明還提供了各種可替換的實(shí)施例。例如,在一種實(shí)施例中,本發(fā)明提供包含計(jì)算機(jī)程序代碼用于允許計(jì)算機(jī)基礎(chǔ)設(shè)施提供以上所討論的基于IDE的程序代碼庫搜索和選擇的計(jì)算機(jī)可讀/可用介質(zhì)。從這個(gè)意義上說,計(jì)算機(jī)可讀/可用介質(zhì)包含用于實(shí)現(xiàn)本發(fā)明的各種過程中的每一種過程的程序代碼。應(yīng)當(dāng)理解,術(shù)語計(jì)算機(jī)可讀介質(zhì)或計(jì)算機(jī)可用介質(zhì)包含任何類型的程序代碼的物理實(shí)施例中的一種或多種。特別地,計(jì)算機(jī)可讀/可用介質(zhì)能夠包含實(shí)現(xiàn)于一種或多種便攜式存儲制品(例如,光盤、磁盤、磁帶等)上的,于計(jì)算設(shè)備的一個(gè)或多個(gè)數(shù)據(jù)存儲部分(例如,存儲器28 (圖1)和/或存儲系統(tǒng)34 (圖1)(例如,固定盤、只讀存儲器、隨機(jī)存取存儲器、高速緩存存儲器等))上的程序代碼。
[0062]在另一種實(shí)施例中,本發(fā)明提供一種用于執(zhí)行本發(fā)明的基于訂購、廣告和/或付費(fèi)的過程的方法。即,服務(wù)提供者(例如,解決方案集成商)能夠許諾提供(offer toprovide)基于IDE的程序代碼庫搜索和選擇功能。在本例中,服務(wù)提供者能夠創(chuàng)建用于為一個(gè)或多個(gè)用戶執(zhí)行本發(fā)明的過程的計(jì)算機(jī)體系結(jié)構(gòu)(例如,計(jì)算機(jī)系統(tǒng)12(圖1)),并對其進(jìn)行維護(hù)、支持等。進(jìn)而,服務(wù)提供者能夠接收用戶按照訂購和/或付費(fèi)協(xié)議進(jìn)行的支付,和/或服務(wù)提供者能夠接收來自對一個(gè)或多個(gè)第三方的廣告內(nèi)容的銷售的支付。
[0063]在又一種實(shí)施例中,本發(fā)明提供一種用于進(jìn)行基于IDE的程序代碼庫搜索和選擇的計(jì)算機(jī)實(shí)現(xiàn)的方法。在本例中,能夠提供一種計(jì)算機(jī)體系結(jié)構(gòu)(例如,計(jì)算機(jī)系統(tǒng)12 (圖1)),并且能夠獲得(例如,創(chuàng)建,購買,使用,修改等)用于執(zhí)行本發(fā)明的過程的一個(gè)或多個(gè)系統(tǒng)并將其部署于計(jì)算機(jī)體系結(jié)構(gòu)。從這個(gè)意義上說,系統(tǒng)的部署能夠包括下列項(xiàng)中的一項(xiàng)或多項(xiàng):(1)將來自計(jì)算機(jī)可讀介質(zhì)的程序代碼安裝于計(jì)算設(shè)備(例如,計(jì)算機(jī)系統(tǒng)12(圖1))上;(2)將一個(gè)或多個(gè)計(jì)算設(shè)備添加到計(jì)算機(jī)體系結(jié)構(gòu)中;以及(3)合并和/或修改計(jì)算機(jī)基礎(chǔ)設(shè)施的一個(gè)或多個(gè)現(xiàn)有系統(tǒng)以允許計(jì)算機(jī)基礎(chǔ)設(shè)施執(zhí)行本發(fā)明的過程。
[0064]如同本文所使用的,應(yīng)當(dāng)理解,術(shù)語“程序代碼”和“計(jì)算機(jī)程序代碼”是同義的,并且意指一組指令以任意語言、代碼或符號的任意表示,其中該組指令旨在促使具有信息處理能力的系統(tǒng)直接地執(zhí)行特別的功能或者在以下a)轉(zhuǎn)換為另一種語言、代碼或符號;b)以不同的材料形式的再現(xiàn)中的任一項(xiàng)或兩者之后執(zhí)行特別的功能。從這個(gè)意義上說,程序代碼能夠被實(shí)現(xiàn)為下列項(xiàng)中的一項(xiàng)或多項(xiàng):應(yīng)用/軟件程序、構(gòu)件軟件/函數(shù)(function)庫、操作系統(tǒng)、特定的計(jì)算設(shè)備的基礎(chǔ)設(shè)備系統(tǒng)/驅(qū)動(dòng)器等。
[0065]適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)能夠在下面提供,并且能夠包括通過系統(tǒng)總線與存儲元件直接或間接通信耦接的至少一個(gè)處理器。存儲元件能夠包括但不限于:在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲器、大容量存儲器,以及用于為至少一些程序代碼提供臨時(shí)存儲以便減少在執(zhí)行期間必須從大容量存儲器中檢索代碼的次數(shù)的高速緩存存儲器。輸入/輸出和/或其他外部設(shè)備(包括但不限于,鍵盤、顯示器、指點(diǎn)裝置等)能夠直接地或者通過中介的設(shè)備控制器與系統(tǒng)耦接。
[0066]網(wǎng)絡(luò)適配器還可以與系統(tǒng)耦接以允許數(shù)據(jù)處理系統(tǒng)通過中介的專用或公共網(wǎng)絡(luò)的任意組合與其他數(shù)據(jù)處理系統(tǒng)、遠(yuǎn)程打印機(jī)、存儲設(shè)備等耦接。說明性的網(wǎng)絡(luò)適配器包括但不限于:調(diào)制解調(diào)器、有線調(diào)制解調(diào)器和以太網(wǎng)卡。
[0067]以上關(guān)于本發(fā)明的各個(gè)方面的描述已經(jīng)出于說明和描述的目的而給出。并非是要作為窮盡性的或者將本發(fā)明限定于所公開的精確形式,而是很明顯,許多修改和變化都是可能的。本領(lǐng)域技術(shù)人員可以清楚此類修改和變化意指包含于由所附權(quán)利要求書所界定的本發(fā)明的范圍之內(nèi)。
【權(quán)利要求】
1.一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的計(jì)算機(jī)實(shí)現(xiàn)的方法,包括: 在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,所述請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:所述程序代碼庫的首要程序代碼語言、所述程序代碼庫的可替換的程序代碼語言,或者與所述程序代碼庫關(guān)聯(lián)的方法對; 基于所述注釋集在所述至少一個(gè)程序代碼庫的儲存庫中搜索所述程序代碼庫;以及 基于搜索將匹配的搜索結(jié)果的集合提供給作為所述IDE的主機(jī)的設(shè)備。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述匹配的搜索結(jié)果的集合包括方法集。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述匹配的搜索結(jié)果的集合包括程序代碼庫的集合。
4.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,搜索包括解析所述注釋集。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,搜索包括搜索具有所述首要程序代碼語言的程序代碼庫的第一程序代碼庫。
6.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,搜索包括搜索具有所述可替換的程序代碼語言的程序代碼庫的第二程序代碼庫。
7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述網(wǎng)絡(luò)化計(jì)算環(huán)境包括云計(jì)算環(huán)境。
8.一種用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的系統(tǒng),包括: 包含指令的存儲介質(zhì); 與所述存儲器介質(zhì)耦接的總線;以及 與所述總線耦接的處理器,所述處理器在執(zhí)行所述指令時(shí)促使所述系統(tǒng): 在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,所述請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:所述程序代碼庫的首要程序代碼語言、所述程序代碼庫的可替換的程序代碼語言,或者與所述程序代碼庫關(guān)聯(lián)的方法對; 基于所述注釋集在所述至少一個(gè)程序代碼庫的儲存庫中搜索所述程序代碼庫;以及 基于搜索將匹配的搜索結(jié)果的集合提供給作為所述IDE的主機(jī)的設(shè)備。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),所述匹配的搜索結(jié)果的集合包括方法集。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),所述匹配的搜索結(jié)果的集合包括程序代碼庫的集合。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),所述存儲器介質(zhì)還包括用于促使所述系統(tǒng)解析所述注釋集的指令。
12.根據(jù)權(quán)利要求8所述的系統(tǒng),所述存儲器介質(zhì)還包括用于促使所述系統(tǒng)搜索具有所述首要程序代碼語言的程序代碼庫的第一程序代碼庫的指令。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),所述存儲器介質(zhì)還包括用于促使所述系統(tǒng)搜索具有所述可替換的程序代碼語言的程序代碼庫的第二程序代碼庫的指令。
14.根據(jù)權(quán)利要求8所述的系統(tǒng),所述網(wǎng)絡(luò)化計(jì)算環(huán)境包括云計(jì)算環(huán)境。
15.一種用于部署用于在網(wǎng)絡(luò)化計(jì)算環(huán)境中搜索多種編程語言的程序代碼庫的系統(tǒng)的方法,包括:提供計(jì)算機(jī)基礎(chǔ)設(shè)施,該計(jì)算機(jī)基礎(chǔ)設(shè)施可操作用于: 在計(jì)算機(jī)存儲介質(zhì)中接收在與集成開發(fā)環(huán)境(IDE)關(guān)聯(lián)的至少一個(gè)程序代碼庫的儲存庫中搜索程序代碼庫的請求,所述請求包括與下列項(xiàng)中的至少一項(xiàng)對應(yīng)的注釋集:所述程序代碼庫的首要程序代碼語言、所述程序代碼庫的可替換的程序代碼語言,或者與所述程序代碼庫關(guān)聯(lián)的方法對; 基于所述注釋集在所述至少一個(gè)程序代碼庫的儲存庫中搜索所述程序代碼庫;以及 基于所述搜索將匹配的搜·索結(jié)果的集合提供給作為所述IDE的主機(jī)的設(shè)備。
【文檔編號】G06F9/44GK103853549SQ201310627217
【公開日】2014年6月11日 申請日期:2013年11月29日 優(yōu)先權(quán)日:2012年12月6日
【發(fā)明者】S·百拉薩布拉曼尼恩, R·A·哈密爾頓二世, B·M·奧康內(nèi)爾, K·R·沃克 申請人:國際商業(yè)機(jī)器公司