亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

信息查詢方法及裝置與流程

文檔序號(hào):11276352閱讀:280來源:國知局
信息查詢方法及裝置與流程

本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及信息查詢方法及裝置。



背景技術(shù):

在java等編程語言中提供了注解(annotation)的語言特性。注解通常聲明在包、類、字段、方法、局部變量、方法參數(shù)等程序元素的前面,用來對(duì)這些元素進(jìn)行說明或注釋,并與這些元素信息關(guān)聯(lián)。因此,注解可以認(rèn)為是一個(gè)接口,程序可以通過反射機(jī)制來獲取指定程序元素的注解,然后獲取注解所關(guān)聯(lián)的程序元素的信息,開發(fā)人員則可以利用注解跟蹤源代碼中的依賴性或執(zhí)行基本編譯時(shí)檢查代碼等。然而,相關(guān)技術(shù)中如objective-c等多種編程語言并沒有提供注解功能。



技術(shù)實(shí)現(xiàn)要素:

為克服相關(guān)技術(shù)中存在的問題,本申請(qǐng)?zhí)峁┝诵畔⒉樵兎椒把b置。

根據(jù)本申請(qǐng)實(shí)施例的第一方面,提供一種信息查詢方法,所述方法包括:

從源代碼中識(shí)別出元素的注解;其中,所述注解為所述源代碼中按預(yù)設(shè)協(xié)議編寫的代碼;

根據(jù)所述注解獲取所述元素的相關(guān)信息;

生成包含所述元素的相關(guān)信息的配置文件;

當(dāng)接收到對(duì)所述元素的查詢請(qǐng)求時(shí),通過所述配置文件查詢所述元素的相關(guān)信息。

根據(jù)本申請(qǐng)實(shí)施例的第二方面,提供一種信息查詢裝置,所述裝置包括:

注解識(shí)別模塊,用于從源代碼中識(shí)別出元素的注解;其中,所述注解為所述源代碼中按預(yù)設(shè)協(xié)議編寫的代碼;

信息獲取模塊,用于根據(jù)所述注解獲取所述元素的相關(guān)信息;

文件生成模塊,用于生成包含所述元素的相關(guān)信息的配置文件;

信息查詢模塊,用于當(dāng)接收到對(duì)所述元素的查詢請(qǐng)求時(shí),通過所述配置文件查詢所述元素的相關(guān)信息。

本申請(qǐng)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:

本申請(qǐng)實(shí)施例所提供的方案,可以在使用編程語言編寫程序的源代碼時(shí),首先按照預(yù)設(shè)協(xié)議編寫用于對(duì)元素進(jìn)行注解的注解代碼。后續(xù),利用預(yù)設(shè)協(xié)議,可以從源代碼中識(shí)別出所有注解,從而根據(jù)注解獲取到被注解的元素的相關(guān)信息。將每個(gè)注解所對(duì)應(yīng)的元素的相關(guān)信息都寫入至配置文件中,則可以通過配置文件查詢到元素的相關(guān)信息,因此本申請(qǐng)實(shí)施例所提供的方案實(shí)現(xiàn)了利用注解查詢?cè)匦畔⒌墓δ?,為開發(fā)人員提供了較多便利。

應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本申請(qǐng)。

附圖說明

此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本申請(qǐng)的實(shí)施例,并與說明書一起用于解釋本申請(qǐng)的原理。

圖1是本申請(qǐng)根據(jù)一示例性實(shí)施例示出的一種信息查詢方法的流程圖。

圖2是本申請(qǐng)根據(jù)一示例性實(shí)施例示出的一種終端的結(jié)構(gòu)示意圖。

圖3是本申請(qǐng)根據(jù)一示例性實(shí)施例示出的一種信息查詢裝置的框圖。

具體實(shí)施方式

這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本申請(qǐng)相一致的所有實(shí)施方 式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本申請(qǐng)的一些方面相一致的裝置和方法的例子。

在本申請(qǐng)使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本申請(qǐng)。在本申請(qǐng)和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。

應(yīng)當(dāng)理解,盡管在本申請(qǐng)可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請(qǐng)范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。

計(jì)算機(jī)程序(computerprogram),也稱為軟件(software),簡稱程序(program)是指一組指示計(jì)算機(jī)或其他具有信息處理能力裝置每一步動(dòng)作的指令,通常用某種程序設(shè)計(jì)語言編寫,運(yùn)行于某種目標(biāo)體系結(jié)構(gòu)上。源代碼即是指采用某種語言編寫的最原始程序的代碼。

本申請(qǐng)實(shí)施例所提供的方案,可以應(yīng)用在objective-c等沒有提供注解能力的編程語言中,開發(fā)人員可以在使用此類編程語言編寫程序的源代碼時(shí),首先按照預(yù)設(shè)協(xié)議編寫用于對(duì)元素進(jìn)行注解的注解代碼。后續(xù),利用預(yù)設(shè)協(xié)議,可以從源代碼中識(shí)別出所有注解,從而根據(jù)注解獲取到被注解的元素的相關(guān)信息。將每個(gè)注解所對(duì)應(yīng)的元素的相關(guān)信息都寫入至配置文件中,則可以通過配置文件查詢到元素的相關(guān)信息,因此本申請(qǐng)實(shí)施例所提供的方案實(shí)現(xiàn)了利用注解查詢?cè)匦畔⒌墓δ?,為開發(fā)人員提供了較多便利。

如圖1所示,圖1是本申請(qǐng)根據(jù)一示例性實(shí)施例示出的一種信息查詢方法的流程圖,包括以下步驟101至104:

在步驟101中,從源代碼中識(shí)別出元素的注解;其中,所述注解為所述源代碼中按預(yù)設(shè)協(xié)議編寫的代碼。

在步驟102中,根據(jù)所述注解獲取所述元素的相關(guān)信息。

在步驟103中,生成包含所述元素的相關(guān)信息的配置文件。

在步驟104中,當(dāng)接收到對(duì)所述元素的查詢請(qǐng)求時(shí),通過所述配置文件查詢所述元素的相關(guān)信息。

其中,元素是指程序元素,可以包括包、類、字段、方法、局部變量或方法參數(shù)等。

當(dāng)采用objective-c等沒有提供注解能力的編程語言編寫程序時(shí),開發(fā)人員可以在編寫源代碼階段,按照預(yù)設(shè)協(xié)議編寫元素的注解。預(yù)設(shè)協(xié)議主要用于區(qū)分注解代碼與其他代碼,并且還可以用于在源代碼中,根據(jù)協(xié)議的具體規(guī)定識(shí)別出注解代碼。因此,預(yù)設(shè)協(xié)議的具體規(guī)定可以根據(jù)實(shí)際需要而設(shè)定,例如采用預(yù)先約定的特殊的標(biāo)識(shí)、或者編寫在預(yù)先約定的特殊的位置、或者其他預(yù)先約定的語法規(guī)則等。

在一個(gè)可選的實(shí)現(xiàn)方式中,預(yù)設(shè)協(xié)議可以包括如下一種或多種協(xié)議:所述注解按注釋格式編寫、所述注解中包括預(yù)設(shè)的注解標(biāo)識(shí)、所述注解編寫在所述元素的聲明之前或所述注解編寫在一行代碼中。在實(shí)際應(yīng)用中,這幾種協(xié)議可以擇其一種實(shí)施,也可以選擇多種組合實(shí)施。

其中,注解按注釋格式編寫,可以使源代碼在編譯時(shí),注解代碼不會(huì)參與到編譯中,即注解不會(huì)影響程序代碼的執(zhí)行,無論增加或刪除注解,代碼都始終如一地執(zhí)行。常見的編程語言中都包括注釋語法,注釋一般包括行注釋或塊注釋,通常采用符號(hào)“//”來編寫單行注釋,或者使用“/*”和“*/”來編寫大的注釋塊。

注解中包括預(yù)設(shè)的注解標(biāo)識(shí),因此可以根據(jù)注解標(biāo)識(shí)從源代碼中快速地識(shí)別出注解代碼。注解標(biāo)識(shí)可以靈活配置,例如可以采用特殊的字符表示注解代碼的開始和結(jié)束,則注解代碼的具體內(nèi)容可以編寫在開始標(biāo)識(shí)及結(jié)束標(biāo)識(shí)之間,后續(xù)可以結(jié)合注釋符號(hào)、開始標(biāo)識(shí)或結(jié)束標(biāo)識(shí)等能快速地從源代碼識(shí)別出注解代碼。

注解編寫在所述元素的聲明之前,則后續(xù)在從源代碼識(shí)別注解時(shí),由于注 解代碼后即是元素的聲明代碼,因此可以快速獲取到被注解的元素的名稱或其他相關(guān)信息。

注解都編寫在一行代碼中,可以提高從源代碼中識(shí)別出注釋代碼的效率。

在其他可選的實(shí)現(xiàn)方式中,預(yù)設(shè)協(xié)議還可以包括:在注解中編寫元素的屬性信息,注解中包括預(yù)設(shè)的用于標(biāo)識(shí)屬性信息的屬性標(biāo)識(shí),則元素的相關(guān)信息可包括所述元素的屬性信息。利用該協(xié)議,開發(fā)人員在編寫注解時(shí),可以將被注解的元素的屬性信息都編寫在注解代碼中,則后續(xù)在識(shí)別出注解后能快速便捷地獲取到元素的屬性信息。其中,注解代碼可以采用預(yù)先設(shè)定的屬性標(biāo)識(shí),被注解元素的屬性信息采用該屬性標(biāo)識(shí)進(jìn)行標(biāo)記,則后續(xù)可以根據(jù)屬性標(biāo)識(shí)快速地獲取到注解代碼中攜帶的屬性信息。

例如,以下述一段源代碼為例進(jìn)行說明:

上述示例中,以采用objective-c語言編寫的一段源代碼為例,在該源代碼中第二行代碼@implementationasappdelegate表示聲明了一個(gè)名為asappdelegate的類,后面的幾行代碼表示編寫了該asappdelegate類的一些相關(guān)信息。

其中,第一行代碼//#pragmaannotion(param1:“classparam1”,param2:“classparam2”)即表示一個(gè)針對(duì)名為asappdelegate類的注解,asappdelegate類即被注解的元素。

上述例子的注解,所采用的協(xié)議包括:

注解編寫在注釋符號(hào)//之后。

注解的標(biāo)識(shí)采用#pragmaannotation和括號(hào),其中#pragmaannotation表示注解的開始標(biāo)識(shí),以右括號(hào)表示注解代碼的結(jié)束標(biāo)識(shí)。

注解編寫在被注解元素:asappdelegate類的聲明之前。

整個(gè)注解編寫在一行代碼中。

注解中已編寫了元素的屬性信息:括號(hào)中的param1:“classparam1”,param2:“classparam2”表示該asappdelegate類的兩個(gè)參數(shù),其中一個(gè)是名為classparam1的參數(shù),另一個(gè)是名為classparam2的參數(shù)。該屬性信息的編寫采用括號(hào)作為屬性信息標(biāo)記,被注解元素的屬性信息編寫在括號(hào)之間。

上述示例只示出了源代碼中asappdelegate類的其中一個(gè)注解,可以理解的是,每個(gè)元素的代碼中可以編寫多個(gè)注解。例如,仍以asappdelegate類的源代碼為例,以下示例中編寫了3個(gè)用于對(duì)asappdelegate類的一些相關(guān)信息進(jìn)行標(biāo)記的注解:

上述例子中的三個(gè)注解分別是:

//#pragmaannotation(type:“default”,param1:“valuehaha”,param2:“value2”)

//#pragmaannotation(param1:“classparam1”,param2:“classparam2”)

//#pragmaannotation(type:“default”,param1:“methodvalue1”,param2:“methodvalue2”)

根據(jù)上述對(duì)預(yù)設(shè)協(xié)議的規(guī)定,從源代碼中即可快速高效地識(shí)別出注解代碼。其中,在識(shí)別注解代碼時(shí),不僅可以識(shí)別出注解代碼的具體內(nèi)容,還可以結(jié)合注解所在位置的上下文環(huán)境,識(shí)別出更多有關(guān)被注解元素的相關(guān)信息。

在本申請(qǐng)實(shí)施例中,所述元素的相關(guān)信息還可包括源代碼文件名,所述源代碼文件名可以通過讀取編寫有所述注解的源代碼文件的名稱而獲得,通過獲取該源代碼文件名,開發(fā)人員可以快速地獲取到被注解元素所在的文件,為開發(fā)人員提供較多的便利。

所述元素的相關(guān)信息還可包括所述元素的名稱,所述元素的名稱在所述預(yù)設(shè)協(xié)議包括所述注解編寫在所述元素的聲明之前時(shí),從所述注解所編寫的位置的下一行代碼中獲取得到。本申請(qǐng)實(shí)施例中,若預(yù)設(shè)協(xié)議中規(guī)定注解編寫在所述元素的聲明之前,由于元素的聲明中都寫有元素的名稱,則元素的名稱可以從所述注解所編寫的位置的下一行代碼中快速獲取得到。

具體的,注解代碼的識(shí)別可以是在源代碼編寫結(jié)束,且編譯之前進(jìn)行。上述識(shí)別過程,可以根據(jù)預(yù)設(shè)協(xié)議的具體規(guī)定,采用腳本語言預(yù)先編寫相應(yīng)的識(shí)別邏輯。在識(shí)別注解時(shí)調(diào)用該預(yù)先編寫的腳本文件掃描全部源代碼文件, 最終可識(shí)別出源代碼文件中的每個(gè)注解,并獲得被注解元素的相關(guān)信息??梢岳斫獾氖?,源代碼文件中可以包括一個(gè)或多個(gè)注解,并且,每個(gè)元素也可以對(duì)應(yīng)多個(gè)注解,這些被注解元素的相關(guān)信息都可以寫入至同一個(gè)配置文件中。配置文件的具體格式可以根據(jù)實(shí)際的開發(fā)環(huán)境和開發(fā)需求而設(shè)定,例如可以是plist等格式的配置文件。

以下示出了配置文件中記載的被注解元素的一些相關(guān)信息。

上述示例中,第一行代碼“@../sources/asappdelegate.m”表示注解是從名為asappdelegate.m的源代碼文件中識(shí)別出來的。

后續(xù)的以“@{”開頭,及“},\”結(jié)束之間的代碼,即表示一個(gè)注解及其所對(duì)應(yīng)的元素的相關(guān)信息。上述示例中包括了2個(gè)注解所對(duì)應(yīng)的元素的相關(guān)信息。

上述示例中示出的2個(gè)注解中,其元素的classname都為asappdelegate,其表示上述2個(gè)注解都編寫在名為asappdelegate的類下,也即是2個(gè)注解都是asappdelegate類的相關(guān)信息。

上述示例僅以配置文件所記載的2個(gè)注解所對(duì)應(yīng)的元素的相關(guān)信息為例進(jìn)行說明,在實(shí)際應(yīng)用中,配置文件中可以包括應(yīng)用程序源代碼中所有注解所對(duì)應(yīng)的信息。

在生成配置文件后,可以將配置文件添加到源代碼文件中進(jìn)行編譯,源代碼文件中可以根據(jù)相關(guān)技術(shù)預(yù)先編寫查詢功能代碼,將源代碼編譯后能獲得應(yīng)用程序,通過應(yīng)用程序所提供的查詢功能,當(dāng)接收到對(duì)所述被注解元素的查詢請(qǐng)求時(shí),可以調(diào)用所述配置文件查詢所述被注解元素的相關(guān)信息。

具體的,所述調(diào)用所述配置文件查詢所述被注解元素的相關(guān)信息,包括:

獲取所述查詢請(qǐng)求中攜帶的查詢對(duì)象的字符串。

在配置文件中,利用字符串匹配方式查找出包含有所述字符串的被注解元素的相關(guān)信息。

例如,仍以上述配置文件的示例進(jìn)行說明,當(dāng)開發(fā)人員需要查詢有關(guān)asappdelegate類的相關(guān)信息時(shí),可以輸入“asappdelegate”,根據(jù)字符串“asappdelegate”,采用字符串匹配的方法,可以從配置文件查詢到有2個(gè)注解所對(duì)應(yīng)的元素的相關(guān)信息包含有該字符串“asappdelegate”,即可輸出上述示例的2個(gè)注解所對(duì)應(yīng)的信息,從而實(shí)現(xiàn)在不支持注解功能的編程語言中提供信息查詢的能力。利用這些元素的相關(guān)信息,開發(fā)人員可以跟蹤源代碼中的依賴性或者檢查代碼等,因此可以為開發(fā)人員提供很多便利。

對(duì)應(yīng)于上述的信息查詢方法,如圖2所示,是本申請(qǐng)根據(jù)一示例性實(shí)施 例示出的一種終端的結(jié)構(gòu)示意圖。請(qǐng)參考圖2,在硬件層面,該終端包括處理器、內(nèi)部總線、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器,當(dāng)然還可能包括其他業(yè)務(wù)所需要的硬件。處理器從非易失性存儲(chǔ)器中讀取對(duì)應(yīng)的計(jì)算機(jī)程序到內(nèi)存中然后運(yùn)行,在邏輯層面上形成數(shù)據(jù)業(yè)務(wù)處理裝置。當(dāng)然,除了軟件實(shí)現(xiàn)方式之外,本申請(qǐng)并不排除其他實(shí)現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說以下處理流程的執(zhí)行主體并不限定于各個(gè)邏輯單元,也可以是硬件或邏輯器件。

請(qǐng)參考圖3,在軟件實(shí)施方式中,該信息查詢裝置可以包括:注解識(shí)別模塊31、信息獲取模塊32、文件生成模塊33和信息查詢模塊34。其中:

注解識(shí)別模塊31,用于從源代碼中識(shí)別出元素的注解;其中,所述注解為所述源代碼中按預(yù)設(shè)協(xié)議編寫的代碼。

信息獲取模塊32,用于根據(jù)所述注解獲取所述元素的相關(guān)信息。

文件生成模塊33,用于生成包含所述元素的相關(guān)信息的配置文件。

信息查詢模塊34,用于當(dāng)接收到對(duì)所述元素的查詢請(qǐng)求時(shí),通過所述配置文件查詢所述元素的相關(guān)信息。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述預(yù)設(shè)協(xié)議包括以下一種或多種協(xié)議:

所述注解按注釋格式編寫、所述注解中包括預(yù)設(shè)的注解標(biāo)識(shí)、所述注解編寫在所述元素的聲明之前或所述注解編寫在一行代碼中。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述預(yù)設(shè)協(xié)議還包括:所述注解中包括所述元素的屬性信息,所述注解中包括預(yù)設(shè)的屬性標(biāo)識(shí);

所述元素的相關(guān)信息包括所述元素的屬性信息。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述元素的相關(guān)信息還包括源代碼文件名,所述源代碼文件名通過讀取編寫有所述注解的源代碼文件的名稱而獲得。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述元素的相關(guān)信息還包括所述元素的名稱,所述元素的名稱在所述預(yù)設(shè)協(xié)議包括所述注解編寫在所述元素的聲明之前時(shí),從所述注解所編寫的位置之后的下一行代碼中獲取得到。

在一個(gè)可選的實(shí)現(xiàn)方式中,所述信息查詢模塊24,包括:

字符串獲取子模塊(圖3未示出),用于獲取所述查詢請(qǐng)求中攜帶的字符串;

信息查詢子模塊(圖3未示出),用于在所述配置文件中,利用字符串匹配的方式查找出包含所述字符串的所述元素的相關(guān)信息。

上述裝置中各個(gè)模塊的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對(duì)應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。

對(duì)于裝置實(shí)施例而言,由于其基本對(duì)應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本申請(qǐng)方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里申請(qǐng)的發(fā)明后,將容易想到本申請(qǐng)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本申請(qǐng)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本申請(qǐng)的一般性原理并包括本申請(qǐng)未申請(qǐng)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本申請(qǐng)的真正范圍和精神由下面的權(quán)利要求指出。

應(yīng)當(dāng)理解的是,本申請(qǐng)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本申請(qǐng)的范圍僅由所附的權(quán)利要求來限制。

以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1