元數(shù)據與源代碼的關聯(lián)以及基于其的應用和服務的制作方法
【專利說明】元數(shù)據與源代碼的關聯(lián)從及基于其的應用和服務 睛川宜量
[0002] 在計算機科學中,術語"源代碼"指使用某種人類可讀計算機語言(通常為文本) 書寫的計算機指令集合。計算機程序的源代碼專口被設計來促進計算機程序員(在此也稱 為"軟件開發(fā)者"或簡單而言"開發(fā)者")的工作,其中計算機程序員大部分通過書寫源代碼 來指定要由計算機執(zhí)行的動作。源代碼在某一時間點被自動地翻譯成計算機可直接讀取和 執(zhí)行的機器代碼。解釋器將源代碼翻譯成機器代碼并在程序運行時實時地執(zhí)行它,而編譯 器在它將源代碼存儲為可執(zhí)行文件之前將源代碼翻譯成機器代碼;運些接著可在分開的步 驟中執(zhí)行。
[0003] 構成計算機程序的源代碼通常被保持在被存儲在某種形式的持久存儲中的一個 或多個文本文件中。例如,源代碼可被至少暫時地存儲在開發(fā)者的計算機的硬盤上。在現(xiàn) 代軟件開發(fā)環(huán)境中,網絡可訪問的源控制系統(tǒng)通常被開發(fā)者用來將源代碼存儲在中央儲存 庫中,在此它能被其他開發(fā)者(例如,開發(fā)團隊的其他成員)訪問。源控制系統(tǒng)通常提供用 于將源代碼登入和登出中央儲存庫的機制。運允許不同的開發(fā)者對同一項目進行操作,而 對丟失代碼或蓋寫改變具有減少的擔憂。源控制系統(tǒng)還通常包括能在開發(fā)生存周期期間管 理文件的版本控制系統(tǒng),從而保持對作了哪些改變、誰作出運些改變、改變何時被作出W及 出于何種原因的跟蹤。
[0004] 一些源控制系統(tǒng)使得關于源代碼的描述性信息能夠與源代碼相關聯(lián)地存儲。關于 源代碼的運種描述性信息可被稱為"元數(shù)據"。運樣的元數(shù)據通常與源代碼文件或文件組 相關聯(lián)。常規(guī)的源控制系統(tǒng)通常不提供用于將元數(shù)據與比文件更細粒度的各種不同類型的 源代碼實體(諸如包括在源代碼文件內的類、函數(shù)、行、語句和表達式)相關聯(lián)的方式。此 夕F,元數(shù)據通常被限為關于源代碼的可W追溯到該源代碼被首次登入到中央儲存庫中的時 間的歷史信息。 陽〇化]開發(fā)者有時將評論嵌入到他們的源代碼中。運樣的評論可被用于提供關于源代碼 的歷史信息,描述源代碼內某個功能的目的,解釋源代碼內使用的實體命名約定等。運樣的 評論也可被認為是與源代碼相關聯(lián)的一種形式的元數(shù)據。然而,由于評論被嵌入在源代碼 本身內,在不打開它們所位于的源代碼文件的情況下,它們不能被訪問或操縱。此外,運樣 的評論必須按隨編程語言變化的特定方式來被格式化,使得它們能被用于將源代碼轉換成 可執(zhí)行形式的解釋器或編譯器正確地處理。最終,運樣的評論通常包括非結構化數(shù)據。與 評論相關聯(lián)的所有運些特征(即,嵌入在源代碼中、特定于語言的格式化W及由非結構化 數(shù)據構成)限制了它們的有用性。
[0006] SM
[0007] 在此描述使得元數(shù)據能夠在各個粒度級別與源代碼相關聯(lián)(例如,在文件、類、函 數(shù)、行、語句和表達式的級別)的系統(tǒng)和方法。運樣的系統(tǒng)和方法還可使得運樣的元數(shù)據能 夠獨立于與其相關聯(lián)的源代碼被訪問。運些系統(tǒng)和方法使得運樣的元數(shù)據能被用在各種各 樣的應用和服務中來實現(xiàn)非常強大的功能。例如但非限制,運樣的元數(shù)據可被用于:在源代 碼儲存庫內和跨源代碼儲存庫跟蹤源代碼的出處和歷史;將質量或可靠性的評分或其他標 記與源代碼相關聯(lián),其中運樣的評分可被展示給開發(fā)者并且其中運樣的評分可被用于更好 地管理對源代碼的自動化的登入、測試和分析;W及促進借此管理源代碼實體的組件被通 知關于對相關源代碼實體作出的更新W及借此類似的改變可按手動或自動化的方式對該 源代碼實體作出的過程。
[0008] 現(xiàn)在將作為示例而非限制來描述某些特定實施例。例如,本文描述了一種計算機 實現(xiàn)的方法。根據該方法,作出已經關于第一源代碼實體執(zhí)行了一動作的確定。第一源代 碼實體包括源代碼文件內的源代碼項。基于該動作的執(zhí)行,接著與該第一源代碼實體相關 聯(lián)地生成元數(shù)據。所生成的元數(shù)據接著與該源代碼文件分開地存儲。
[0009] 根據W上的方法,確定已經關于第一源代碼實體執(zhí)行了一動作可包括確定已經關 于該源代碼文件內的一個或多個類、函數(shù)、行、語句或表達式作執(zhí)行了該動作。
[0010] 進一步根據W上方法,確定已經關于第一源代碼實體執(zhí)行了一動作可包括確定第 一源代碼實體已經被創(chuàng)建、修改或刪除,并且生成元數(shù)據可包括生成與第一源代碼實體相 關聯(lián)的包括關于該創(chuàng)建、修改或刪除的歷史信息的元數(shù)據。
[0011] 還進一步根據W上方法,確定已經關于第一源代碼實體執(zhí)行了一動作可包括確定 第一源代碼實體已經從第二源代碼實體復制,并且生成元數(shù)據可包括執(zhí)行W下中的一個或 多個:通過復制與第二源代碼實體相關聯(lián)的元數(shù)據來生成與第一源代碼實體相關聯(lián)的元數(shù) 據,W及生成與第一源代碼實體相關聯(lián)的包括到第二源代碼實體的鏈接的元數(shù)據。
[0012] 在W上方法的一個實施例中,確定已經關于第一源代碼實體執(zhí)行了一動作包括確 定第二源代碼實體已經從第一源代碼實體復制,并且生成元數(shù)據包括生成與第一源代碼實 體相關聯(lián)的包括到第二源代碼實體的鏈接的元數(shù)據。
[0013] 在另一實施例中,W上方法還包括確定第二源代碼實體類似于該第一源代碼實 體,并且響應于確定該第二源代碼實體類似于該第一源代碼實體,執(zhí)行W下中的一個或多 個:通過復制與第二源代碼實體相關聯(lián)的元數(shù)據來生成與第一源代碼實體相關聯(lián)的元數(shù) 據,生成與第一源代碼實體相關聯(lián)的包括到第二源代碼實體的鏈接的元數(shù)據,通過復制與 第一源代碼實體相關聯(lián)的元數(shù)據來生成與第二源代碼實體相關聯(lián)的元數(shù)據,W及生成與第 二源代碼實體相關聯(lián)的包括到第一源代碼實體的鏈接的元數(shù)據。
[0014] 在W上方法的進一步的實施例中,生成元數(shù)據包括生成結構化數(shù)據和非結構化數(shù) 據中的一個或多個。運樣的結構化數(shù)據可包括例如,一個或多個鍵/值對。
[0015] 在W上方法的還一實施例中,與源代碼文件分開地存儲所生成的元數(shù)據包括將所 生成的元數(shù)據存儲在W下之一中:與源代碼文件相關聯(lián)的元數(shù)據文件、與源代碼文件相關 聯(lián)的數(shù)據流、或數(shù)據庫。
[0016] 在此還描述了一種軟件開發(fā)系統(tǒng)。該軟件開發(fā)系統(tǒng)包括一個或多個計算機、存儲 源代碼文件的儲存庫和元數(shù)據管理器,當被一個或多個計算機中的至少一個執(zhí)行時,該元 數(shù)據管理器將元數(shù)據與包括在源代碼文件內的源代碼實體相關聯(lián),與每個源代碼實體相關 聯(lián)的元數(shù)據指示對應的源代碼實體的質量或可靠性。
[0017] W上系統(tǒng)還可包括將漏桐信息與每個源代碼實體相關聯(lián)的漏桐跟蹤系統(tǒng)。根據運 樣的實施例,與每個源代碼實體相關聯(lián)的元數(shù)據可至少部分基于與每個源代碼實體相關聯(lián) 的漏桐信息來生成。
[0018] W上系統(tǒng)還可包括分析引擎,該分析引擎標識在包括從源代碼文件生成的可執(zhí)行 代碼的應用的部署期間發(fā)生的問題,將運樣的問題與源代碼實體相關聯(lián),W及至少部分基 于與源代碼實體相關聯(lián)的任意一個或多個問題來確定要與每個源代碼實體相關聯(lián)的元數(shù) 據。
[0019] 在另一實施例中,W上系統(tǒng)包括自動化測試系統(tǒng)和分析引擎兩者。自動化測試系 統(tǒng)自動地測試每個源代碼實體并為之生成測試結果信息。分析引擎接收該測試結果信息并 至少部分基于為源代碼實體生成的測試結果信息來確定要與每個源代碼實體相關聯(lián)的元 數(shù)據。
[0020] 在進一步的實施例中,W上系統(tǒng)包括分析引擎,該分析引擎標識與源代碼實體中 的每個相關聯(lián)的開發(fā)者,獲得被如此標識的每個開發(fā)者的信譽信息,并至少部分基于與源 代碼實體相關聯(lián)的開發(fā)者的信譽信息來確定要與每個源代碼實體相關聯(lián)的元數(shù)據。根據運 樣的實施例,分析引擎可用于基于和與開發(fā)者相關聯(lián)的源代碼實體相關聯(lián)的元數(shù)據來修改 至少一個開發(fā)者的信譽信息。
[0021]W上系統(tǒng)還可包括源控制系統(tǒng)、自動化測試系統(tǒng)和/或源代碼編輯器,該源控制 系統(tǒng)基于該元數(shù)據來控制用于源代碼文件的登入策略,該自動化測試系統(tǒng)基于與源代碼 實體相關聯(lián)的元數(shù)據來確定要應用到源代碼實體的測試或靜態(tài)分析的數(shù)量、類型和/或程 度,該源代碼編輯器向每個源代碼實體的用戶展示與每個源代碼實體相關聯(lián)的元數(shù)據。
[0022] 在此描述另一方法。根據該方法,作出第一源代碼文件內的源代碼實體已經被修 改的確定?;谂c該源代碼實體相關聯(lián)的元數(shù)據來標識第二源代碼文件內或代碼存儲內的 相關源代碼實體。關于該修改的通知接著被發(fā)送到管理該相關源代碼實體的組件。該方法 還可包括接收關于對該相關源代碼實體的修改的通知,并且響應于接收到關于對該相關源 代碼實體的修改的通知,執(zhí)行W下之一:基于對該相關源代碼實體的修改來自動地更新該 源代碼實體,或向開發(fā)者提供用于基于對該相關源代碼實體的修改來更新該源代碼實體的 方式。
[0023] 提供本
【發(fā)明內容】
是為了W精簡的形式介紹將在W下詳細描述中進一步描述的一 些概念。本
【發(fā)明內容】
并不旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用 于限制所要求保護的主題的范圍。此外,注意到所要求保護的主題不限于在詳細描述和/ 或本文的其它章節(jié)中所述的特定實施例。本文呈現(xiàn)運些實施例僅用于說明性的用途?;?本文所包含的描述,其它實施例對于相關領域的技術人員將是顯而易見的。
[0024] 附圖簡沐
[0025] 合并在此并作為說明書一部分的附圖與說明書一起示出了本發(fā)明的實施例,且進 一步用于解釋本發(fā)明的原理的作用,并且使相關領域的技術人員能夠實現(xiàn)并使用本發(fā)明。 [00%] 圖1是根據一實施例的用于使得元數(shù)據能在各種粒度級別與源代碼相關聯(lián)的軟 件開發(fā)系統(tǒng)的框圖。
[0027] 圖2示出根據一實施例的可在元數(shù)據和源代碼實體之間維護的一些示例關系。
[0028] 圖3是示出根據一實施例的與對應的源代碼文件相關聯(lián)地維護元數(shù)據文件的框 圖。
[0029] 圖4是根據一包括元數(shù)據管理器的實施例的執(zhí)行集成開發(fā)環(huán)境(I呢)的開發(fā)者計 算機的框圖。
[0030] 圖5是描繪了根據一實施例的借此響應于源代碼實體從第一源代碼文件復制并 粘貼到第二源代碼文件可將元數(shù)據從第一元數(shù)據文件復制到第二元數(shù)據文件的方式的框 圖。
[0031] 圖6是描繪了根據一實施例的借此元數(shù)據可被用于創(chuàng)建從第一源代碼文件復制 并粘貼到第二源代碼文件的源代碼之間的鏈接的方式的框圖。
[0032] 圖7是描繪了借此元數(shù)據可被用于創(chuàng)建被包括在源代碼文件中的源代碼實體與 源代碼實體從其復制的代碼存儲之間的鏈接的方式的框圖。
[0033] 圖8是描繪了根據一實施例的借此包括代碼克隆分析器的IDE可基于對類似源代 碼片段的標識來更新元數(shù)據的方式的框圖。
[0034] 圖9描繪了根據一實施例的用于生成和存儲與源代碼實體相關聯(lián)的元數(shù)據的方 法的流程圖。
[0035] 圖10是描述了借此一實施例利用元數(shù)據來在源代碼實體從代碼存儲復制到源代 碼文件W及從源代碼文件復制到源代碼文件時跟蹤運樣的實體的出處和歷史的方式的框 圖。圖11是根據一利用元數(shù)據來提供各種應用和服務的實施例的軟件開發(fā)系統(tǒng)的框圖。
[0036] 圖12描繪了根據一實施例的用于生成、存儲和使用指示源代碼實體的質量或可 靠性的元數(shù)據的方法的流程圖。
[0037] 圖13描繪了根據一實施例的用于使用鏈接相關源代碼實體的元數(shù)據來向管理一 個源代碼實體的組件通知關于已經對一相關源代碼實體作出修改的方法的流程圖。
[0038] 圖14描繪了根據一實施例的用于響應于接收關于對相關源代碼實體的修改的通 知來更新源代碼實體的方法的流程圖。
[0039] 圖15是可用于實現(xiàn)各實施例的基于處理器的示例計算機系統(tǒng)的框圖。 W40] 當結合其中相同的附圖標記標識對應的元素的附圖時,本發(fā)明的特征和優(yōu)點將從 W下闡述的詳細描述中變得更加顯而易見。在附圖中