欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

經(jīng)定性化注釋的代碼的制作方法

文檔序號:6570366閱讀:221來源:國知局
專利名稱:經(jīng)定性化注釋的代碼的制作方法
經(jīng)定性化注釋的代碼 背景
應(yīng)用程序、程序、函數(shù)、以及其它可編程和可執(zhí)行代碼的程序集
(assemblage)通常是為第三方(即,"客戶")的使用而編寫的。因此,有 效代碼是以一種啟用第三方使用情景并且滿足第三方期望的方式來編寫的。
概述
由于應(yīng)用程序、程序、函數(shù)、以及其它可編程和可執(zhí)行代碼的程序集被模 塊化,所以可以對與至少一個這樣的代碼模塊相關(guān)聯(lián)的數(shù)據(jù)進行注釋以便提供 關(guān)于模塊使用的定性化向?qū)А?br> 附圖簡述
本描述參考以下附圖。


圖1示出通過網(wǎng)絡(luò)與實現(xiàn)產(chǎn)生并利用經(jīng)注釋的代碼中的至少一種的示例技 術(shù)的設(shè)備進行通信的設(shè)備。
圖2示出用于實現(xiàn)產(chǎn)生并利用經(jīng)注釋的代碼中的至少一種的示例性技術(shù)的 執(zhí)行環(huán)境的示例。
圖3示出關(guān)于產(chǎn)生經(jīng)注釋的代碼的一個示例的工具的示例數(shù)據(jù)流。
圖4示出關(guān)于利用經(jīng)注釋的代碼的工具的示例數(shù)據(jù)流。
詳細描述
此處描述用于產(chǎn)生經(jīng)注釋的代碼并使用該注釋以提供關(guān)于代碼使用的向 導(dǎo)的工具、系統(tǒng)和方法。此外,有關(guān)對代碼的至少數(shù)部分進行注釋并使用該注 釋的描述可涉及用于將代碼的數(shù)部分的預(yù)期使用告知客戶的工具、系統(tǒng)、過程、 指令、技術(shù)和例程。即,通過采用表示例如代碼的相應(yīng)部分的功能性意圖的角 色或分類來注釋代碼的至少一些部分,可允許客戶編寫不太可能被破壞或崩潰
的高效的應(yīng)用程序、程序、函數(shù)、或其它可編程和可執(zhí)行代碼的程序集。此外, 這種工具、系統(tǒng)和過程可在網(wǎng)絡(luò)環(huán)境中的一個或多個設(shè)備或節(jié)點中實現(xiàn)。
此處描述的"模塊"可表示可使用公共物理和/或邏輯資源的諸如方法、類、 DLL (動態(tài)鏈接庫)、框架等獨立實體。
此處描述的"程序集"可表示代碼的部署單元。
圖1示出在其中實現(xiàn)生成經(jīng)注釋的代碼并利用該注釋來提供關(guān)于代碼使用
的向?qū)У氖纠夹g(shù)的示例網(wǎng)絡(luò)環(huán)境100。然而,該示例技術(shù)并不局限于網(wǎng)絡(luò)環(huán) 境。該技術(shù)可包括,但不限于,此處描述的與經(jīng)定性化注釋的代碼120相關(guān)聯(lián) 的工具、方法(例如,技術(shù))和系統(tǒng)。在圖1中,客戶機設(shè)備105、服務(wù)器設(shè) 備10以及"其它"設(shè)備115可以通過網(wǎng)絡(luò)125以通信方式彼此耦合;并且此 外,客戶機設(shè)備105、服務(wù)器設(shè)備110以及"其它"設(shè)備115中的至少一個能 夠?qū)崿F(xiàn)上述技術(shù)。
客戶機設(shè)備105可表示各種已知計算設(shè)備中的至少一個,包括能夠?qū)崿F(xiàn)產(chǎn) 生和使用經(jīng)定性化注釋的代碼120中的至少一個的示例技術(shù)的臺式個人計算機 (PC)、工作站、大型計算機、因特網(wǎng)設(shè)備、機頂盒或游戲控制臺??蛻魴C設(shè) 備105還可表示能夠通過有線和/或無線鏈路與網(wǎng)絡(luò)125相關(guān)聯(lián)的至少一個設(shè) 備,這些設(shè)備包括移動(即,蜂窩)電話、個人數(shù)字助理(PDA)、膝上型計 算機等。此外,客戶機設(shè)備105可按各種數(shù)量和/或其組合來表示上述客戶機設(shè) 備。"其它"設(shè)備115也可由上述客戶機設(shè)備105的示例中的任一個來實施。
服務(wù)器設(shè)備IIO可表示能夠根據(jù)產(chǎn)生和使用經(jīng)定性化注釋的代碼120中的 至少一個的至少一個實現(xiàn)向客戶機設(shè)備105或"其它"設(shè)備115提供各種數(shù)據(jù) 和/或功能中的任何一種的任何設(shè)備。數(shù)據(jù)可以公共可獲得或者受限制的,例如, 僅限于某些用戶或只有當(dāng)支付了適當(dāng)?shù)挠嗛嗁M或許可費時才可用。服務(wù)器設(shè)備 IIO可以是網(wǎng)絡(luò)服務(wù)器、應(yīng)用程序服務(wù)器、刀片服務(wù)器或其任意組合中的至少 一個。通常,服務(wù)器設(shè)備IIO可表示作為內(nèi)容源的任何設(shè)備,而客戶機設(shè)備105 可表示通過網(wǎng)絡(luò)125或者以離線方式接收這樣的內(nèi)容的任何設(shè)備。然而,根據(jù) 此處描述的示例實現(xiàn),客戶機設(shè)備105和服務(wù)器設(shè)備IIO可互換地成為網(wǎng)絡(luò)環(huán) 境100中的發(fā)送節(jié)點或接收節(jié)點。"其它設(shè)備"還可由服務(wù)器設(shè)備110的上述 示例中的任何一個來實施。
"其它"設(shè)備115可以表示根據(jù)此處描述的一個或多個示例技術(shù)的能夠開 發(fā)和/或使用經(jīng)定性化注釋的代碼120的任何另外的設(shè)備。S卩,"其它"設(shè)備
115可以表示能夠采用角色或分類對至少一部分代碼進行注釋的設(shè)備,其中該
角色或分類指示例如代碼的相應(yīng)部分的功能性意圖和/或根據(jù)所賦予的角色向
客戶提供關(guān)于該部分代碼使用的向?qū)?。因此?其它"設(shè)備115可以是在其上 實現(xiàn)了操作系統(tǒng)、解釋器、轉(zhuǎn)換器、編譯器、或運行時執(zhí)行環(huán)境中的任何一個 的計算或處理設(shè)備。這些示例并不意在以任何方式為限制性的,并且因此,不 應(yīng)該以那種方式來解釋。
網(wǎng)絡(luò)125可以表示包括有線和/或無線網(wǎng)絡(luò)等各種常規(guī)網(wǎng)絡(luò)拓撲和類型中 的任何一種。網(wǎng)絡(luò)125還可采用包括公共和/或?qū)S脜f(xié)議等各種常規(guī)網(wǎng)絡(luò)協(xié)議中 的任何一種。網(wǎng)絡(luò)125可包括(例如)因特網(wǎng)以及諸如802.11系統(tǒng)等一個或多 個局域網(wǎng)(也被個別地稱為"LAN"),或者規(guī)模更大一點的廣域網(wǎng)(即, "WAN"),或者諸如藍牙等個人區(qū)域網(wǎng)(即,PAN)中的至少一些部分。
設(shè)備105、 110及115中的至少一個設(shè)備中的計算機體系結(jié)構(gòu)通常按照硬 件與軟件來定義計算平臺。用于計算設(shè)備的軟件基于功能被歸類成組,這些組 包括硬件抽象層(或者稱為"HAL")、操作系統(tǒng)(或者稱為"OS")以及 應(yīng)用程序。
運行時執(zhí)行環(huán)境可駐留在OS與應(yīng)用程序、程序、函數(shù)、或其它代碼的程 序集之間。運行時執(zhí)行環(huán)境可用作一個空間,在該空間中,應(yīng)用程序、程序、 函數(shù)、或其它代碼的程序集可在處理設(shè)備105、 110和115中的一個或多個設(shè) 備上執(zhí)行具體任務(wù)。更具體地,運行時執(zhí)行環(huán)境可通過向在包括服務(wù)器、臺式 計算機、膝上型計算機、和移動處理/通信設(shè)備等范圍不斷增加的處理設(shè)備105、 110和115上運行的應(yīng)用程序提供抽象層和服務(wù)并進一步向該應(yīng)用程序提供包 括存儲器管理及其配置的能力,來提高在這些處理設(shè)備上執(zhí)行應(yīng)用程序、程序、 函數(shù)、或其它代碼的程序集的可靠性。
運行時執(zhí)行環(huán)境可用作編程和執(zhí)行平臺中的至少一種。作為編程平臺,運 行時執(zhí)行環(huán)境可將以多種計算語言中的一種語言編寫的一個或多個目標(biāo)應(yīng)用 程序、程序、函數(shù)、或其它代碼的程序集編譯為中間語言(下文稱"IL")或 字節(jié)代碼。IL通常獨立于平臺,并且中央處理單元(下文稱"CPU")執(zhí)行IL。 事實上,IL是比許多CPU機器語言更高級的語言。
作為執(zhí)行平臺,運行時執(zhí)行環(huán)境可將已編譯的IL解釋成本機機器指令。 運行時執(zhí)行環(huán)境可以采用解釋器或者編譯器(例如,"即時(just-in-time)", 或稱JIT編譯器)來執(zhí)行這樣的指令。不管怎樣,接著,本機機器指令可被CPU 直接執(zhí)行。由于IL是獨立于CPU的,因此只要在任何CPU平臺上運行的OS 主宿適當(dāng)?shù)倪\行時執(zhí)行環(huán)境,IL即可在該CPU平臺上執(zhí)行。
或者,應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集中的至少數(shù)部分可作 為本機映像文件在運行時執(zhí)行環(huán)境中被預(yù)編譯和安裝,由此繞開了 JIT編譯所 需要的CPU消耗。有效的是,預(yù)編譯部分是以IL格式(例如,程序集、方法 或類型)而不是以本機平臺執(zhí)行格式分發(fā)的軟件組件。這種預(yù)編譯IL的源可 被置于非托管執(zhí)行環(huán)境中或在設(shè)備105、 110和115中的同一個或不同的設(shè)備 上的運行時執(zhí)行環(huán)境的單獨實現(xiàn)中。該源可在與該預(yù)編譯IL對應(yīng)的應(yīng)用程序、 程序、方法、函數(shù)或其它可編程和可執(zhí)行代碼的程序集的安裝時期間或之前部 署預(yù)編譯IL。
不管怎樣,在其中實現(xiàn)生成和/或利用經(jīng)定性化注釋的代碼120的運行時環(huán) 境的示例包括Visual Basic運行時環(huán)境;用于運行例如Java 例程的Java 虛 擬機運行時環(huán)境;或在執(zhí)行一調(diào)用例程之前將例如Microsoft .^^1^應(yīng)用程序編 譯成機器語言的公共語言運行庫(CLR)。然而,該運行時環(huán)境的列舉只是提 供示例而已。此處描述的示例技術(shù)不僅僅局限于這些托管執(zhí)行環(huán)境。尤其是, 由于可在測試環(huán)境和/或非托管執(zhí)行環(huán)境內(nèi)實現(xiàn)一個或多個示例,因此示例實現(xiàn) 不僅限于托管執(zhí)行環(huán)境。
被編譯為IL的應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集可被稱為"托 管代碼",這就是運行時執(zhí)行環(huán)境也可被稱為"托管執(zhí)行環(huán)境"的原因。注意 的是,不采用運行時執(zhí)行環(huán)境來執(zhí)行的代碼可被稱為本機代碼應(yīng)用程序。
圖2示出在其中實現(xiàn)用于開發(fā)并利用經(jīng)定性化注釋的代碼120 (見圖1) 的技術(shù)的運行時執(zhí)行環(huán)境的示例。
根據(jù)至少一個示例實現(xiàn),運行時執(zhí)行環(huán)境200可幫助用于計算機設(shè)備平臺 的托管代碼的執(zhí)行。托管代碼可被認為是一組核心應(yīng)用程序開發(fā)技術(shù)的一部 分,并且還可被視為為在運行時執(zhí)行環(huán)境200上執(zhí)行而被編譯并加載以便向計
算設(shè)備平臺提供對應(yīng)的服務(wù)的應(yīng)用程序、程序、函數(shù)、以及其它可編程和可執(zhí) 行代碼的程序集。另外,運行時執(zhí)行環(huán)境200可將解釋級的托管代碼翻譯成可 被代理并隨后由處理器執(zhí)行的指令?;蛘?,托管代碼可通過解釋器或編譯器, 或一種被設(shè)計成作為本地映像在安裝時運行的編譯器來執(zhí)行。運行時執(zhí)行環(huán)將
200的框架還可提供被視為用于托管應(yīng)用程序的軟件構(gòu)件塊的類庫。
運行時執(zhí)行環(huán)境200可提供原本期望從內(nèi)核獲得的至少部分功能,取決于 設(shè)備105、 UO和115中(見圖1)的一個特定設(shè)備的資源約束,計算設(shè)備平臺 可能有或沒有該至少部分功能。因此,運行時執(zhí)行環(huán)境200的至少一個示例可 實現(xiàn)以下功能輸入/輸出(下文稱"I/O")例程管理、編譯、存儲器管理、 以及服務(wù)例程管理。因此,運行時執(zhí)行環(huán)境200可包括I/O組件205、編譯器 210、至少一個存儲器管理組件215、服務(wù)例程管理組件220、以及執(zhí)行組件225。 這些將在下面進一步詳細描述的組件僅作為示例提供,它們并不意在局限于運 行時執(zhí)行環(huán)境200的任何特定實現(xiàn),并且不應(yīng)該作這樣的推斷。因此,可以在 運行時執(zhí)行環(huán)境200的示例的各種組合及其配置中實現(xiàn)該組件。
運行時執(zhí)行環(huán)境200的I/O組件205可提供對物理資源(例如,處理器和 外圍設(shè)備)以及邏輯資源(例如,驅(qū)動程序,或按特定方式劃分的物理資源) 的同步或異步訪問中的至少一種。更具體地,1/O組件205可以為運行時執(zhí)行 環(huán)境200提供穩(wěn)健的系統(tǒng)吞吐量并且進一步流線化從中發(fā)起I/O請求的應(yīng)用程 序、程序、函數(shù)、以及其它可編程和可執(zhí)行代碼的程序集的執(zhí)行。
編譯器210可表示運行時執(zhí)行環(huán)境200中可將已編譯的IL解釋為本機機 器指令以便在運行時執(zhí)行環(huán)境200中執(zhí)行的組件。此外,根據(jù)開發(fā)和使用經(jīng)定 性化注釋的代碼120的技術(shù)的至少一個替換實現(xiàn),編譯器210可動態(tài)地探測與 應(yīng)用程序、程序、函數(shù)、以及其它可編程和可執(zhí)行代碼的程序集相關(guān)聯(lián)的代碼 模塊的行為,以便進行剖析/記錄以及各種其它目的。代碼模塊可以或不能被加 載到運行時執(zhí)行環(huán)境200中。如果代碼模塊被加載到運行時執(zhí)行環(huán)境200中, 則剖析可包括記錄或以其他方式跟蹤相應(yīng)的代碼模塊與運行時執(zhí)行環(huán)境200中 的一個或多個組件之間的交互。相應(yīng)的代碼模塊與運行時執(zhí)行環(huán)境200中的特 定組件之間的這種交互包括接收和發(fā)送數(shù)據(jù)、參數(shù)以及狀態(tài)。剖析可以在不觸 及或影響代碼模塊的可執(zhí)行部分的情況下來執(zhí)行,并且可以在相對于執(zhí)行路徑
的可執(zhí)行部分的執(zhí)行的編譯時、初始運行時或其之后的任何時候來執(zhí)行。
加載器215可表示在需要時可被調(diào)用以定位和讀取程序集的程序集管理
器。盡管非托管執(zhí)行環(huán)境(即,OS)的至少一個實現(xiàn)可在其中包括加載器325, 但加載器325可位于執(zhí)行環(huán)境200中。加載器215可在部署或安裝期間存放預(yù) 編譯的IL,以將其加載到運行時執(zhí)行環(huán)境200中。因此,根據(jù)運行時執(zhí)行環(huán)境 200的至少一個替換實現(xiàn),加載器215可有效地用作將預(yù)編譯的IL加載到運行 時執(zhí)行環(huán)境200中去的入口點。
存儲器管理組件220可以被稱為實現(xiàn)無用信息收集的"無用信息收集器"。 無用信息收集可被視為托管代碼執(zhí)行環(huán)境的一個穩(wěn)健特征,通過無用信息收 集,如果在對存儲器堆的清掃或掃描之后一個對象被確定為不會再被任何應(yīng)用 程序、程序、函數(shù)、或其它代碼的程序集使用,則該對象被自動釋放(即解除 分配)。由存儲器管理組件220實現(xiàn)的進一步功能可包括在計算設(shè)備平臺上 運行的各任務(wù)中,管理有限易失性RAM (即,存儲器堆)存儲的一個或多個 鄰接塊或存儲器的一組鄰接塊;向在該計算設(shè)備平臺上運行的至少一個應(yīng)用程 序、程序、函數(shù)、以及其它可編程和可執(zhí)行代碼的程序集分配存儲;根據(jù)應(yīng)用 程序、程序、函數(shù)、或其它代碼的程序集中的至少一個的請求釋放存儲器的至 少數(shù)部分;以及防止應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集中的任何一 個入侵性地訪問已經(jīng)被分配給其它應(yīng)用程序、程序、函數(shù)、或其它代碼的程序 集中的任何一個的存儲空間。
服務(wù)例程管理器225可作為應(yīng)用程序支持層的至少一部分被包括,以便為 與計算設(shè)備平臺相關(guān)聯(lián)的物理和邏輯資源提供服務(wù)功能。開發(fā)和/或使用經(jīng)定性 化注釋的代碼120的示例技術(shù)(例如,工具、方法和系統(tǒng))可由服務(wù)例程管理 器225來管理。目卩,這些技術(shù)或者單個地或者組合在一起由編譯器210 (如以 上所引用的)、服務(wù)例程管理器225、或運行時執(zhí)行環(huán)境200中的某些其它組 件根據(jù)這些技術(shù)的各種替換實現(xiàn)來實現(xiàn)。服務(wù)例程管理器225可以在不觸及或 影響代碼模塊的可執(zhí)行部分的情況下在相對于代碼模塊的可執(zhí)行部分的執(zhí)行 的編譯時、初始運行時或在其之后的任何時候起此作用。
執(zhí)行組件230可允許執(zhí)行計算設(shè)備平臺的托管代碼。更具體地,對于開發(fā) 和/或使用經(jīng)定性化注釋的代碼120的技術(shù)的實現(xiàn)而言,執(zhí)行代碼230可用作運
行時執(zhí)行環(huán)境200中的一個示例性組件,該示例性組件可實現(xiàn)用于在代碼模塊 的可執(zhí)行部分的執(zhí)行期間的編譯時、初始運行時或在其之后的任何時候?qū)σ粋€ 或多個代碼模塊進行注釋和/或解釋的工具、系統(tǒng)和過程中的一個或多個。
圖3示出實現(xiàn)一個或多個與經(jīng)定性化注釋的代碼120 (見圖1)相關(guān)聯(lián)的 示例技術(shù)的示例數(shù)據(jù)流300。更具體地,經(jīng)定性化注釋的代碼120是被賦予了 一個原型角色或分類的代碼,該原型角色或分類與特定的代碼模塊的至少一個 定性化的性能特征有關(guān)。這種定性化的性能特征可包括該特定的代碼模塊的功 能性意圖。通過指示"功能性意圖",該角色或分類可描述在其中適合使用特 定代碼模塊的一個或多個上下文,而不是描述其精確的功能。不管怎樣,對這 些性能特征的參考僅作為非限制性示例來提供。定性化的安全特性還可用作將 角色或分類賦予相應(yīng)的代碼模塊的至少一部分基礎(chǔ)。
此外,經(jīng)定性化注釋的代碼120可以是由運行時執(zhí)行環(huán)境200編譯或為運 行時執(zhí)行環(huán)境200預(yù)編譯的托管代碼。不管怎樣,如果不是被明確地預(yù)期的話, 可以預(yù)見相應(yīng)的代碼模塊的可能的性能相關(guān)故障,并因此規(guī)避到一個期望的程 度。
為此,經(jīng)定性化注釋的代碼120可提供具穩(wěn)健性的廣義向?qū)А<?,通過提 供定性化向?qū)В皇嵌炕驅(qū)?由此對應(yīng)于相應(yīng)的代碼模塊的嚴(yán)格規(guī)則必 須隨代碼的任何修訂而被修改),對應(yīng)于經(jīng)定性化注釋的代碼120的角色或分 類可允許對代碼的改變并因此可用作規(guī)定性向?qū)Ф皇墙剐韵驅(qū)А?br> 此外,賦給經(jīng)定性化注釋的代碼120的相應(yīng)模塊的相應(yīng)角色或分類所提供 的總向?qū)Э芍甘敬a120可調(diào)用的優(yōu)選方法、代碼120可引發(fā)的行為、代碼120 可能擁有的依賴性,或者甚至指示基于諸如圈復(fù)雜度(cyclomatic complexity) 等復(fù)雜度參數(shù)的指定的復(fù)雜程度。當(dāng)然,這種向?qū)H作為示例提供,以用來說 明編程因素的廣泛的范圍,這些因素受賦給經(jīng)定性化注釋的代碼120的角色或 分類的影響。
不管怎樣,在以下描述中,各種操作將被描述為由與代碼注釋工具315相 關(guān)聯(lián)的組件來執(zhí)行。有關(guān)這些組件中的任何一個特定組件所描述的操作可由該 組件自身來執(zhí)行、組合其它與該工具相關(guān)聯(lián)的組件執(zhí)行、或由該特定組件與運 行時執(zhí)行環(huán)境200 (見圖2)中的一個或多個組件協(xié)作執(zhí)行。此外,代碼注釋
工具315的每個組件的操作可由一個或多個處理器來執(zhí)行,并可單獨或組合地 實現(xiàn)為硬件、固件或軟件。
代碼注釋工具315的示例實現(xiàn)可采用離線方式與運行時執(zhí)行環(huán)境200中的 任何組件分開實現(xiàn)。然而,代碼注釋工具315的至少一個實現(xiàn)可單獨或一同組 合地包含編譯器210的任何一部分、服務(wù)例程管理器220、或運行時執(zhí)行環(huán)境 200的某些其它組件。在這種實現(xiàn)中,可由執(zhí)行組件325來執(zhí)行或處理代碼注 釋工具315。
模塊305可表示對應(yīng)于根據(jù)例如運行時執(zhí)行環(huán)境200中的執(zhí)行組件230來 執(zhí)行的應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集的一個或多個可執(zhí)行指令 模塊。更具體地,模塊305可表示諸如方法、類、DLL (動態(tài)鏈接庫)、框架 等實體。
代碼310可表示與模塊305相關(guān)聯(lián)的應(yīng)用程序編程接口 (以下可替換地被 稱為"API")。更具體地,API310可視為被類所展示的并且被應(yīng)用程序、程 序、方法、函數(shù)、或其它代碼的程序集用來指引運行時執(zhí)行環(huán)境200或甚至是 操作系統(tǒng)的過程執(zhí)行的一個或多個方法或例程。
代碼注釋工具315可表示一個多功能工具,該工具可以能夠根據(jù)合適的角 色或分類幫助對對應(yīng)于應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集的代碼模 塊進行注釋;根據(jù)相應(yīng)的模塊的功能性意圖或所賦予的角色或分類中的至少一 個來幫助監(jiān)視、記錄、和/或剖析該代碼模塊的活動;以及根據(jù)代碼模塊的意圖 或賦給該代碼模塊的角色或分類中的至少一個來提供關(guān)于該代碼模塊的使用 的向?qū)А?br> 設(shè)置在代碼注釋工具315內(nèi)或以其他方式在功能上與代碼注釋工具315相 關(guān)聯(lián)的分析器320可被視為能夠基于包括(但不限于)代碼模塊的功能性意圖 的特性來將適當(dāng)?shù)淖⑨尰蚍诸惻c該代碼模塊相關(guān)聯(lián)的組件。分析器還能夠讀取 與對應(yīng)于應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集的代碼模塊相關(guān)聯(lián)的注 釋,并還能夠單獨或與代碼注釋工具315的其它組件組合地將該注釋的內(nèi)容傳 達給用戶。
模塊325可表示對應(yīng)于根據(jù)例如運行時執(zhí)行環(huán)境200中的執(zhí)行組件230來 執(zhí)行的應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集的一個或多個可執(zhí)行指令模塊。更具體地,模塊325可表示諸如方法、類、DLL (動態(tài)鏈接庫)、框架 等包括代碼310和相關(guān)聯(lián)的注釋330的實體。
注釋330可表示與代碼310相關(guān)聯(lián)的文本文件。具體地,注釋330可以是 列出由代碼注釋工具315賦給代碼310的角色或分類的文本文件(例如,XML); 或者注釋300可以是清楚表達例如代碼310的功能性特征或意圖的文本文件。 注釋330與代碼310相關(guān)聯(lián),并因此可被接收到運行時執(zhí)行環(huán)境200中并由其 進行編譯,其中注釋300作為模塊325的一部分而附于代碼310?;蛘?,雖然 注釋330與代碼310相關(guān)聯(lián),但是注釋330可以被預(yù)編譯,并由此可脫離代碼 310而被接收到運行時執(zhí)行環(huán)境200中。例如,注釋330可通過網(wǎng)絡(luò)125 (見 圖1)在線地從可執(zhí)行代碼200的開發(fā)者或管理員處被接收到運行時執(zhí)行環(huán)境 200中;或者,注釋330可采用離線方式(例如,通過可攜帶的計算機可讀介 質(zhì))從上述開發(fā)者或管理員中的任何一個處接收到運行時執(zhí)行環(huán)境200中。
如上所述,注釋330可列出已賦給代碼310的角色或分類。該角色或分類 可提供指示代碼310的功能性意圖的數(shù)據(jù)(例如,API、方法或例程)。艮卩, 數(shù)據(jù)可指示可在其中適當(dāng)使用代碼310的一個或多個上下文。此外,為了定性 化地將將代碼310用于高級代碼生成或例外代碼剖析的期望使用通知客戶,由 分析器320進行關(guān)聯(lián)的角色或分類通常就已分析的特性彼此相關(guān),并且該角色 或分類被通常視為既提供可靠向?qū)в衷试S例外和/或創(chuàng)造性的模擬。
賦給代碼310的角色或分類的示例可包括(僅作為說明性示例)內(nèi)循環(huán) 代碼、輸入輸出(throughput)代碼、交互代碼以及啟動代碼。這些角色的術(shù) 語僅作為示例提供。角色或分類可被賦予各種名稱中的任何一種,盡管可能比 較好的是對相應(yīng)的角色或分類賦予一個指示代碼的功能性意圖或其它功能性 特征的名稱。
內(nèi)循環(huán)代碼角色可指示代碼310有可能在更大的循環(huán)中被客戶端應(yīng)用程 序、程序、函數(shù)、或其它代碼的程序集調(diào)用,以作為更大的算法的一部分。更 具體地,內(nèi)循環(huán)代碼310可以被視為對應(yīng)的應(yīng)用程序、程序、函數(shù)、或其它代 碼的程序集的"最里面"的代碼。其示例包括比較函數(shù)、散列函數(shù)、低級格式 化函數(shù)等。對于這種代碼,不鼓勵存儲分配。與內(nèi)循環(huán)代碼330相關(guān)聯(lián)的注釋 330可建議該代碼由被賦予以下所述的示例代碼角色/分類(例如,輸入輸出、
交互和啟動)中的任何一種的代碼調(diào)用。
輸入輸出代碼角色可指示代碼310有可能被用于諸如網(wǎng)頁上的批處理過程 或服務(wù)過程。更具體地,輸入輸出代碼310可被視為為其創(chuàng)建臨時對象的代碼, 因此,可允許一些存儲分配。該代碼通??捎删W(wǎng)頁或業(yè)務(wù)邏輯來實現(xiàn),并且該 代碼的意圖是不管資源(例如,存儲器)的成本如何而執(zhí)行。輸入輸出代碼的 向?qū)У囊粋€示例是該輸入輸出代碼在功能上與內(nèi)循環(huán)代碼不兼容,并因此不能
被內(nèi)循環(huán)代碼調(diào)用。因此,與輸入輸出代碼310相關(guān)聯(lián)的注釋330可以不建議 或甚至禁止調(diào)用被賦予內(nèi)循環(huán)角色或分類的代碼。
交互代碼角色可指示代碼310有可能被交互事件驅(qū)動的應(yīng)用程序、程序、 函數(shù)、或其它代碼的程序集的一部分使用。更具體地,交互代碼310可以被視 為其模式可突然改變的代碼,并且該代碼的意圖是在執(zhí)行該代碼期間盡可能少
地使用資源(例如,存儲器)。交互代碼向?qū)У囊粋€示例是該交互代碼可調(diào)用 內(nèi)循環(huán)代碼。因此,與交互代碼310相關(guān)聯(lián)的注釋330可提倡調(diào)用被賦予內(nèi)循 環(huán)角色或分類的代碼。另一個示例可包括調(diào)用輸入輸出代碼的交互代碼,而這 個是不太可能的情形,因為考慮到使用的資源,交互代碼希望是簡潔的,并且 輸入輸出代碼意在不管資源的成本如何而持續(xù)。因此,與交互代碼310相關(guān)聯(lián) 的注釋會進一步不鼓勵調(diào)用已被賦予輸入輸出代碼角色或分類的代碼。
啟動代碼角色可指示代碼310有可能在對應(yīng)的應(yīng)用程序、程序、函數(shù)、或 其它代碼的程序集的啟動路徑上出現(xiàn)。更具體地,啟動代碼310可以被視為對 依賴性以及輸入/輸出(10)敏感的代碼。與啟動代碼310相關(guān)聯(lián)的注釋330 不鼓勵、或拒絕從已被賦予另一個角色或分類的代碼中進行調(diào)用。
因此,當(dāng)對包括對代碼310的調(diào)用的應(yīng)用程序、程序、函數(shù)、以及其它可 編程和可執(zhí)行代碼的程序集迸行編程時,注釋330可向編程客戶提供包括(但 不必然限于)交互向?qū)?、診斷(即,剖析器)向?qū)?、代碼生成向?qū)А⒋a維護 向?qū)б约巴茢嘞驅(qū)У南驅(qū)?。上述所有這些向?qū)У念悇e可由分析器320基于例如 代碼310的已知功能性意圖來實現(xiàn)。以下描述這些向?qū)У氖纠悇e。
交互編程向?qū)Э商峁┐a310與代碼310的較新近被調(diào)用的實現(xiàn)在功能上 的兼容性的指示,該實現(xiàn)可以是或不是例如己被賦予另一個角色或分類的API、 方法或例程?;蛘?,交互編程向?qū)Э商峁┚幊桃?guī)則,該規(guī)則警告涉及上述代碼
310的較新近地被調(diào)用的實現(xiàn)的對賦給代碼310的角色或分類的所存在的潛在
編程違規(guī)。
診斷(即,剖析器)向?qū)Э商峁┥婕按a310的已測量的編程事件和/或 賦給代碼310的角色或分類的報告。更具體地,基于對涉及代碼310的編程事 件和/或所賦給代碼310的角色或分類的記錄,診斷/剖析器向?qū)Э商峁╆P(guān)于代 碼310的使用的靜態(tài)分析和/或推薦。分析和/或推薦可甚至包括相對于先前推 薦的向?qū)У年P(guān)于代碼310的編程事件的測量。編程事件的記錄由例如分析器 320來生成并且該編程事件可包括,但不以任何方式局限于先前調(diào)用代碼310 的函數(shù);以及對特定應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集調(diào)用代碼310 的次數(shù);等等。
代碼生成向?qū)Э梢詾榫幾g器(例如,編譯器210;見圖2)提供編程向?qū)А?例如,代碼生成向?qū)Э商峁Υa310的功能性意圖的可能指示,從而,編譯 器可以用一種利用經(jīng)編譯的代碼310的特性的方式來編譯代碼310。更具體地, 由注釋330清楚表達的代碼生成向?qū)Э芍甘窘换ゴa310的功能性意圖在于使 用盡可能少的資源,從而,可引導(dǎo)該編譯器以一種精簡的方式編譯代碼310以 便由此減少所使用的空間?;蛘?,代碼生成向?qū)Э芍甘緝?nèi)循環(huán)代碼310的功能 性意圖在于不對其分配存儲,從而,編譯器可用優(yōu)化速度的方式被引導(dǎo)至編譯 器305。這些情景僅作為示例提供,并且并不應(yīng)該被理解為有任何限制。
代碼維護向?qū)Э商峁┚幊滔驅(qū)?,該編程向?qū)峁x給代碼310的角色或 分類的一個或多個理論基礎(chǔ)。如果代碼310的至少一部分被改變,該向?qū)н€可 提供對賦給代碼310的角色或分類的解釋。因此,代碼維護向?qū)Э梢詮哪撤N程 度上引導(dǎo)被賦予特定角色或分類的代碼向被賦予另一個角色或分類的代碼的 轉(zhuǎn)化。
推斷向?qū)Э商峁┰诖a注釋工具被用作為靜態(tài)分析工具的一部分時的用 于代碼310的追溯注釋。g卩,對于己經(jīng)被編譯的應(yīng)用程序、程序、函數(shù)、以及 其它可編程/可執(zhí)行代碼的程序集,分析器320可追溯性地賦予代碼310 —個角 色或分類。因此,可向用戶提供代碼310的分析,以及調(diào)用代碼310的函數(shù)和 被代碼310調(diào)用的函數(shù)。
圖4示出產(chǎn)生并利用經(jīng)定性化注釋的代碼120 (見圖1)的至少一個示例
實現(xiàn)的示例數(shù)據(jù)流400。更具體地,可對代碼生成器或代碼實施器實現(xiàn)示例數(shù)
據(jù)流400。
在以下描述中,盡管圖4中的參考標(biāo)號與先前附圖的那些不同,但是各種 操作將被描述為由與運行時執(zhí)行環(huán)境200 (見圖2)或者與代碼注釋工具315 (見圖3)相關(guān)聯(lián)的組件執(zhí)行。針對這些組件中的任何特定一個組件所描述的 操作可由該組件本身、與其它與該工具相關(guān)聯(lián)的組件相組合、或由與運行時執(zhí) 行環(huán)境200的一個或多個組件協(xié)作的特定組件來執(zhí)行。此外,代碼注釋工具315 的每個組件的操作可由一個或多個處理器來執(zhí)行并單獨或組合地實現(xiàn)為硬件、 固件或軟件。
數(shù)據(jù)流400的第一示例實現(xiàn)涉及手動或自動代碼生成器。
框405可表示采取或?qū)⒁扇〉拇呋瘎幼?,該催化動作會影響諸如API、
方法或例程等代碼模塊。該催化動作可包括該代碼模塊被另一個代碼模塊調(diào)用。
因此,數(shù)據(jù)模塊410可表示對應(yīng)于根據(jù)例如運行時執(zhí)行環(huán)境200中的執(zhí)行 組件230來執(zhí)行的應(yīng)用程序、程序、函數(shù)、或其它代碼的程序集的可執(zhí)行指令 的一個或多個模塊。更具體地,數(shù)據(jù)模塊410可表示諸如方法、類、DLL (動 態(tài)鏈接庫)、框架等實體。
代碼415可表示與數(shù)據(jù)模塊410相關(guān)聯(lián)的API、方法或例程。更具體地, 代碼415可由類來呈現(xiàn)并被應(yīng)用程序、程序、方法、函數(shù)、以及其它可編程和 可執(zhí)行代碼的程序集用于指導(dǎo)運行時執(zhí)行環(huán)境200或甚至操作環(huán)境的過程執(zhí) 行。
分析器435可表示能夠基于特征將適當(dāng)?shù)淖⑨尰蚍诸惻c模塊代碼進行關(guān) 聯(lián)的組件,其中該特征包括,但不限于,代碼模塊的功能性意圖。分析器425 可以與一個用于開發(fā)和/或利用經(jīng)注釋的代碼的更綜合性的工具相關(guān)聯(lián),或者, 可甚至被實現(xiàn)為運行時執(zhí)行環(huán)境200的一個組件(例如,編譯器)。
不管怎樣,當(dāng)接收了包含在數(shù)據(jù)模塊410內(nèi)或脫離數(shù)據(jù)模塊410的代碼 415之后,分析器435可實現(xiàn)一個用于確定代碼415的功能性意圖或其它功能 性特性的預(yù)定算法,由此將角色或分類與代碼415相關(guān)聯(lián)。將代碼415的角色 和分類基于代碼415的功能性意圖之上僅作為一個示例來描述。
注釋向?qū)?40可表示與代碼310相關(guān)聯(lián)的文本文件。具體地,注釋440可 以是列出代碼注釋工具315賦給代碼415的角色或分類的文本文件(例如, XML)?;蛘?,注釋向?qū)?40可作為用戶界面的一部分采用例如清楚表達與代 碼415相關(guān)聯(lián)的規(guī)則或向?qū)У膶υ捒蚧蛳吕藛巍⒉噬幋a字體(例如,綠色 表示可接受的、黃色表示注意、以及紅色表示禁止的)的形式展示給客戶。 數(shù)據(jù)流400的第二示例實現(xiàn)同樣涉及手動或自動代碼生成器。 框405可表示采取或?qū)⒁扇〉拇呋瘎幼鳎摯呋瘎幼鲿绊懼T如API、 方法或例程等代碼模塊。該催化動作可包括該代碼模塊被編譯或被提交以用于 編譯。
類似于數(shù)據(jù)模塊410,數(shù)據(jù)模塊420可表示諸如方法、類、DLL (動態(tài)鏈 接庫)、框架等一個或多個可執(zhí)行指令模塊。
類似于代碼425,代碼425可表示與數(shù)據(jù)模塊420相關(guān)聯(lián)的API、方法或例程。
注釋430可表示與代碼425相關(guān)聯(lián)的文本文件,該注釋采用例如文本文件 (例如,XML)形式來列出基于代碼425的功能性意圖或其它專用的功能性特 征而賦給代碼425的角色或分類。更具體地,根據(jù)數(shù)據(jù)流400的該第二示例, 代碼425早已如此處所述地被手動過程或自動過程進行了注釋。
分析器435可表示能夠過讀取與代碼425相關(guān)聯(lián)的注釋430的組件。因此, 作為運行時執(zhí)行環(huán)境200的一部分,分析器435可向編譯器210 (見圖2)提 供注釋向?qū)?40,使得對代碼425進行編譯以便在功能上與注釋430中所清楚 表達的功能性意圖相兼容。
數(shù)據(jù)流400的第三示例實現(xiàn)涉及手動或自動代碼剖析器或診斷工具。
框405可表示采取或?qū)⒁扇〉拇呋瘎幼?,該催化動作會影響諸如API、 方法或例程等代碼模塊。在代碼剖析器的上下文中,該催化動作可包括將先前 編譯的代碼提交給剖析工具,以供分析或進行任何其它形式的檢査或研究。
數(shù)據(jù)模塊410可表示諸如方法、類、DLL (動態(tài)鏈接庫)、框架等一個或 多個可執(zhí)行指令模塊。
代碼415可表示與數(shù)據(jù)模塊410相關(guān)聯(lián)的API、方法或例程。
分析器435可表示能夠讀取已經(jīng)被編譯的代碼425并且能夠基于建立的準(zhǔn)
則對代碼415的功能性意圖或其它指定的功能性特征進行解碼的組件。因此,
分析器435還能夠?qū)⑦m當(dāng)?shù)慕巧蚍诸惻c代碼415相關(guān)聯(lián)。
注釋向?qū)?40可表示與代碼415相關(guān)聯(lián)的文本文件,該注釋向?qū)宄磉_ 了分析器435賦給代碼415的角色或分類。另外,注釋向?qū)?40可清楚表達對 應(yīng)于特定角色或分類的規(guī)則或其它形式的編程向?qū)АW⑨屜驅(qū)?40可作為用戶 界面的一部分采用例如清楚表達與代碼415相關(guān)聯(lián)的規(guī)則或向?qū)У膶υ捒蚧蛳?拉菜單、彩色編碼字體(例如,綠色表示可接受的、黃色表示注意、以及紅色 表示禁止的)的形式展示給客戶。
通過關(guān)于上述圖l一4的描述,角色或分類可被賦給一個或多個代碼模塊, 從而在托管執(zhí)行環(huán)境或非托管執(zhí)行環(huán)境中提供定性編程向?qū)?。然而,此處描?的示例實現(xiàn)并不局限于圖1的環(huán)境、圖2的組件、圖3的執(zhí)行路徑、或圖4的 過程。與經(jīng)定性化注釋的代碼120 (見圖1)相關(guān)聯(lián)的技術(shù)(例如,工具、方 法以及系統(tǒng))可以由關(guān)于圖2 — 4所描述的組件的各種組合來實現(xiàn)。
此外,用于上述的示例和實現(xiàn)中的任何一個的計算機環(huán)境可包括具有例如 一個或多個處理器或處理單元、系統(tǒng)存儲器、耦合各種系統(tǒng)組件的系統(tǒng)總線等 計算設(shè)備。
計算設(shè)備可包括各種計算機可讀介質(zhì),包括易失性和非易失性介質(zhì)、可移 動和不可移動介質(zhì)兩者。系統(tǒng)存儲器可包括采用諸如隨機存取存儲器(RAM) 等易失性存儲器和/或諸如只讀存儲器(ROM)或閃存RAM等非易失性存儲 器形式的計算機可讀介質(zhì)??梢砸庾R到,能存儲可被計算機訪問的數(shù)據(jù)的其它 類型的計算機可讀介質(zhì),諸如磁帶盒或其它磁存儲設(shè)備、閃存卡、CD-ROM、 數(shù)字多功能盤(DVD)或其它光學(xué)存儲、隨機存取存儲器(RAM)、只讀存 儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等,也可被用來實 現(xiàn)示例計算系統(tǒng)和環(huán)境。
整篇說明書對"示例"、"替換示例"、"至少一個示例"、"實現(xiàn)"或 "示例實現(xiàn)"的表述表示一個具體描述的特征、結(jié)構(gòu)或特點被包括在本發(fā)明的 至少一個實現(xiàn)中。因此,該詞語的使用可表示不止有一個實現(xiàn)。此外,所描述 的特征、結(jié)構(gòu)、或特點可以用任何合適的方式在一個或多個實現(xiàn)中組合。
然而,相關(guān)領(lǐng)域的技術(shù)人員可認識到,可以不采用一個或多個具體細節(jié)或
者采用其它方法、資源、材料等來實踐本發(fā)明。在另一個實例中,公知的結(jié)構(gòu)、 資源、或操作沒有被顯示或詳細描述僅僅是為了避免混淆本發(fā)明的各方面。
盡管示出和描述了本發(fā)明的各示例實現(xiàn)和應(yīng)用,但將理解,本發(fā)明并不局 限于上述的精確配置和資源。本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明此處所公開的各 個方法和系統(tǒng)的安排、操作以及細節(jié)作出各種修改、變化、以及變型,而不背 離如上述以及下面所請求保護的本發(fā)明的范圍。
權(quán)利要求
1.至少一種具有存儲于其上的數(shù)據(jù)結(jié)構(gòu)的計算機可讀介質(zhì),所述數(shù)據(jù)結(jié)構(gòu)包括應(yīng)用程序編程接口(API);以及基于所述API的定性化屬性來規(guī)定編程向?qū)У淖⑨尅?br> 2. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述API 被預(yù)編譯。
3. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述API 還沒有被預(yù)編譯。
4. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)е甘臼褂盟鯝PI的至少一個規(guī)則。
5. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)е甘舅鯝PI是否在功能上與調(diào)用所述API的方法相兼容。
6. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)е甘菊{(diào)用的方法是否在功能上與所述API相兼容。
7. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)?biāo)識可被所述API成功調(diào)用的方法。
8. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述注 釋指示所述API的分類。
9. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述注 釋指示所述API的分類并且還指示另一個API的在功能上兼容的分類。
10. 如權(quán)利要求l所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)г诓扇幼鱽碛绊懰鯝PI時出現(xiàn)。
11. 如權(quán)利要求l所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)г诓扇幼鱽碛绊懰鯝PI時出現(xiàn)在對話框中。
12. 如權(quán)利要求1所述的至少一種計算機可讀介質(zhì),其特征在于,所述編 程向?qū)г诓扇幼鱽碛绊懰鯝PI時出現(xiàn)在下拉菜單中。
13. —種系統(tǒng),包括 接收代碼的接收器;以及基于所述代碼的定性化特征來提供編程向?qū)У墓芾砥鳌?br> 14. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述接收的代碼被編譯。
15. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述接收的代碼在定性化 的基礎(chǔ)上被注釋,并且其中所述管理器還基于對應(yīng)于所述接收的代碼的注釋來 提供所述向?qū)А?br> 16. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述接收的代碼采用基于 定性化的角色來注釋,并且其中,所述管理器還提供指示在功能上與所述接收 的代碼兼容的、另一個基于定性化的角色的所述向?qū)А?br> 17. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述接收的代碼用基于其 功能性意圖的分類來注釋,并且其中,所述管理器還提供指示用于代碼的、在 功能上與所述接收的代碼的分類兼容的另一個分類的所述向?qū)А?br> 18. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述接收的代碼采用基于 所述接收的代碼的安全特性的功能性分類來注釋。
19. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述系統(tǒng)是剖析器。
20. 如權(quán)利要求13所述的系統(tǒng),其特征在于,所述系統(tǒng)是診斷工具。
全文摘要
可以對與至少一個代碼模塊相關(guān)聯(lián)的數(shù)據(jù)進行注釋,以便提供關(guān)于該模塊的使用的向?qū)А?br> 文檔編號G06F17/00GK101361058SQ200680051587
公開日2009年2月4日 申請日期2006年12月26日 優(yōu)先權(quán)日2006年1月24日
發(fā)明者R·瑪麗安尼 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
璧山县| 客服| 曲水县| 枣庄市| 兰溪市| 柘荣县| 土默特左旗| 塔城市| 夏邑县| 明光市| 襄樊市| 赫章县| 仙桃市| 噶尔县| 清镇市| 佛学| 泰宁县| 方山县| 西乌珠穆沁旗| 泾阳县| 彭山县| 汉寿县| 雅安市| 饶阳县| 罗田县| 扬中市| 师宗县| 澄城县| 丹棱县| 闽侯县| 商丘市| 水城县| 濉溪县| 高尔夫| 色达县| 嫩江县| 沙雅县| 诏安县| 沙河市| 夏河县| 额尔古纳市|