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

用于源代碼補丁的裝置和方法

文檔序號:6397891閱讀:141來源:國知局
專利名稱:用于源代碼補丁的裝置和方法
技術(shù)領(lǐng)域
本公開一般地涉及計算機編程,更具體地說,涉及源代碼補丁。
背景技術(shù)
許多軟件開發(fā)都使用迭代修改-審查過程完成。開發(fā)人員修改源代碼-例如,修復(fù)錯誤或添加新特性。然而,這種修改無法立即加入項目中-在它可以被接受之前,所述修改需要由整個團隊或由項目的多個管理人員之一審查。在某些組織中,可能進行面對面審查,其中開發(fā)人員將其代碼提供給審查者。然而,在許多其他組織中,開發(fā)人員遍布各個國家和時區(qū),或者只是發(fā)現(xiàn)難以協(xié)調(diào)會議,并且從遠方執(zhí)行審查,例如通過電子郵件:開發(fā)人員將其建議的源代碼修改打包在補丁文件中并將此更改信息發(fā)送給審查者。具體地說,此過程常見于對等生產(chǎn)模型,例如開源開發(fā)。在本公開中,“源代碼補丁”或“補丁”是一組在概念上關(guān)聯(lián)的源代碼修改指令,例如所有修改都致力于共同目標,例如添加特性或解決現(xiàn)有錯誤。補丁可以被提供為文本文件(例如,在Unix 環(huán)境中使用diff軟件實用程序生成),或者提供為源代碼控制系統(tǒng)(例如,CVS 、Rational ClearCase 等)中的修訂。在許多場合下,補丁附帶有人類可讀的更改描述,以使審查者更容易理解補丁。審查者可以按原樣接受建議的更改,或者要求修復(fù)某些問題,之后開發(fā)人員應(yīng)發(fā)送改進的補丁以進行另一輪審查-直到補丁被最終接受并“提交”到項目的主要源代碼中。

發(fā)明內(nèi)容
所公開的主題的一個示例性實施例是一種具有處理器的計算機化裝置,所述裝置包括:源代碼獲得器,其用于獲得計算機程序的源代碼;補丁指令獲得器,其用于獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令;源代碼編輯器,其被配置為向用戶同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注;其中所述源代碼編輯器還被配置為根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。所公開的主題的另一個示例性實施例是一種由處理器執(zhí)行的計算機實現(xiàn)的方法,所述方法包括:獲得計算機程序的源代碼;獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令;同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注;以及根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。所公開的主題的另一個示例性實施例是一種計算機程序產(chǎn)品,包括:在其上保存計算機程序的非瞬時性計算機可讀介質(zhì),其中所述計算機程序當由處理器執(zhí)行時導(dǎo)致所述處理器:獲得計算機程序的源代碼;獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令;同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注;以及根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。所公開的主題的另一個示例性實施例是一種計算機程序產(chǎn)品,包括:在其上保存計算機程序的源代碼的非瞬時性計算機可讀介質(zhì),其中所述源代碼包括與源代碼補丁指令關(guān)聯(lián)的預(yù)處理指令;其中所述源代碼補丁指令包括:第一源代碼補丁指令,其包括與第一源代碼補丁關(guān)聯(lián)的第一組源代碼修改指令,其中所述第一源代碼補丁指令包括:第一指令,其用于添加第一源代碼行,所述第一源代碼行包括始終在包括所述第一源代碼行的情況下被執(zhí)行的條件預(yù)處理命令;第二指令,其用于刪除第二源代碼行,所述第二源代碼行包括從不在包括所述第二源代碼行的情況下被執(zhí)行的條件預(yù)處理命令;第二源代碼補丁指令,其包括與第二源代碼補丁關(guān)聯(lián)的第二組源代碼修改指令,其中所述第二源代碼補丁指令包括:第三指令,其用于添加第三源代碼行,所述第三源代碼行包括始終在包括所述第三源代碼行的情況下被執(zhí)行的條件預(yù)處理命令;由此編譯所述源代碼的處理器可操作以便至少通過添加所述第一源代碼行、刪除所述第二源代碼行以及添加所述第三源代碼行而自動應(yīng)用所述第一和第二源代碼補丁。


從下面結(jié)合附圖的詳細說明,將更全面地理解和領(lǐng)會本公開的主題,其中對應(yīng)或相同的數(shù)字或字符指示對應(yīng)或相同的組件。除非另外指出,否則附圖提供本公開的各示例性實施例或方面,并且不限于本公開的范圍。這些附圖是:圖1A和IB示出了根據(jù)所公開的主題的某些示例性實施例的計算機化環(huán)境的圖示;圖2A-2C示出了根據(jù)所公開的主題的某些示例性實施例的方法中的步驟的流程圖;圖3示出了根據(jù)所公開的主題的某些示例性實施例的計算機化裝置的組件的方塊圖;以及圖4示出了根據(jù)所公開的主題的示例性實施例的編輯器的圖示。
具體實施例方式下面將參考根據(jù)所公開的主題的實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或方塊圖對所述主題進行描述。將理解,所述流程圖和/或方塊圖的方塊以及所述流程圖和/或方塊圖中的方塊的組合可以由計算機程序指令來實現(xiàn)。這些計算機程序指令可以被提供給通用計算機、專用計算機、被測試處理器或其他可編程數(shù)據(jù)處理裝置的一個或多個處理器以產(chǎn)生機器,以便通過所述計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的所述指令產(chǎn)生用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的裝置。這些計算機程序指令也可以被存儲在能夠引導(dǎo)計算機或其他可編程數(shù)據(jù)處理裝置以特定方式執(zhí)行功能的非瞬時性計算機可讀介質(zhì)中,以便存儲在所述非瞬時性計算機可讀介質(zhì)中的所述指令產(chǎn)生一件包括實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的指令裝置的制品。所述計算機程序指令還可被加載到設(shè)備、計算機或其他可編程數(shù)據(jù)處理裝置,以導(dǎo)致在所述計算機或其他可編程裝置上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的過程,從而在所述計算機或其他可編程裝置上執(zhí)行的所述指令提供用于實現(xiàn)在一個或多個流程圖和/或方塊圖方塊中指定的功能/操作的過程。嚴格審查補丁 (與僅僅不經(jīng)審查就批準補丁相反)變得非常困難,因為補丁變得大于一百行左右(修改、添加或刪除)。當補丁發(fā)展到一千行時,審查者通常無法將大型補丁作為一個整體理解,也無法領(lǐng)會其中每個更改的有效性。此外,簡短說明不再足以描述補丁中所有更改的理由。當向代碼中添加新特性時,此類大型補丁很常見。一般而言,與理解一個執(zhí)行所有類型操作的大型1000行補丁相比,更容易理解10個補丁,每個補丁包含100行功能相關(guān)代碼以及有關(guān)此部分代碼所執(zhí)行操作的解釋。因此,堅決要求高質(zhì)量審查過程的項目應(yīng)該堅持將大型更改分解為一系列較小的補丁。通常,應(yīng)以如下方式將更改拆分為補丁:按順序應(yīng)用每個補丁之后,編譯所述代碼。此外,應(yīng)以這樣的方式拆分更改:使得易于分別解釋和理解每個補丁。在某些示例性實施例中,開發(fā)人員可以向每個小型補丁添加單獨說明。如果項目希望采取拆分大型補丁以便審查的做法,并且使用現(xiàn)有工具實現(xiàn)此目的,則通常將面臨障礙。開發(fā)人員需要能夠按照審查者的要求繼續(xù)修改代碼,并且通常需要重新組織拆分以使其更容易理解。開發(fā)人員需要一直執(zhí)行此操作,直到代碼被最終接受。在某些情況下,迭代開發(fā)和審查修改的過程可以涉及在可能包含數(shù)周或甚至更多時間的期間內(nèi),對不斷發(fā)展的一組補丁進行許多更改。因此,所公開的主題處理的一個技術(shù)問題是提供一種方便的方式,以保持將修改拆分為單獨補丁,同時仍然允許更改此拆分以及編輯和測試代碼而不會遇到更多麻煩。沒有公知的方法可方便地執(zhí)行此操作。沒有公知的工具可將大型補丁拆分為易于跟蹤的部分,并且用于手動拆分補丁的常用工具(“diff”、“patch”以及Subversion或Git之類的版本控制系統(tǒng))使得上述大部分任務(wù)難以執(zhí)行。當具有多個描述大型更改的補丁時,這些工具迫使開發(fā)人員在單個補丁的上下文中工作,從而使得開發(fā)人員難以將全部修改的源代碼作為一個整體查看-這通常是更好地理解,或進行可以跨多個補丁拆分的修改所必需的。使用現(xiàn)有工具,當將大型特性作為多個補丁進行創(chuàng)建或維護時,開發(fā)人員通常發(fā)現(xiàn)他們自己在補丁“官僚體系”方面(無數(shù)次反復(fù)應(yīng)用、編輯、區(qū)分、重新應(yīng)用)花費的時間遠遠多于實際編寫代碼所用的時間。一種技術(shù)解決方案是使用源代碼批注指示與補丁關(guān)聯(lián)的源代碼行。在某些示例性實施例中,可以將批注引入源代碼文件中。此外或備選地,批注可以在源代碼文件的外部并被指示給使用指定編輯器編輯源代碼的用戶。另一種技術(shù)解決方案是在源代碼文件中使用預(yù)處理命令作為批注,從而在編譯源代碼文件時,不編譯被批注為刪除的源代碼行,而編譯被批注為添加的源代碼行。所公開的主題的一種技術(shù)效果是使其相對容易地維護和更改多個補丁的拆分,以及在拆分之后繼續(xù)編輯和使用代碼-這全部在固定時間內(nèi),甚至當具有多個補丁時也是如此。另一種技術(shù)效果是將全部源代碼作為一個整體查看和編輯,而不僅僅作為單獨的補丁文件或修訂。在某些示例性實施例中,補丁具有依賴性順序,應(yīng)維護此順序以便能夠在每個補丁之后編譯所述代碼。所公開的主題提供一種技術(shù)解決方案,其中以一組補丁安排對源代碼的修改,同時允許用戶繼續(xù)直接處理所述源代碼。所公開的主題還使得用戶能夠輕松調(diào)整補丁拆分(例如,向現(xiàn)有補丁添加新更改,在補丁之間移動更改等)?,F(xiàn)在參考圖1A,其中示出了根據(jù)本主題的某些示例性實施例的計算機化環(huán)境。計算機化環(huán)境20包括若干開發(fā)人員(24、28、32)。所述開發(fā)人員可以共同開發(fā)軟件產(chǎn)品,例如開源程序。在某些示例性實施例中,所述開發(fā)人員可以彼此遠離并使用計算機化網(wǎng)絡(luò)36(例如因特網(wǎng))通信。每個開發(fā)人員的計算機(例如,33、34、35)可以連接到計算機化網(wǎng)絡(luò)36。開發(fā)人員32進行的修改可以由至少一個其他開發(fā)人員(例如管理人員、審查團隊等)審查、測試或以其他方式檢查。現(xiàn)在參考圖1B,其中示出了根據(jù)所公開的主題的某些實施例的單個開發(fā)人員(例如開發(fā)人員32)的計算機化環(huán)境。開發(fā)人員可以使用例如在軟件中實現(xiàn)并由開發(fā)人員的計算機(例如,35)執(zhí)行的編輯器實用程序110來編輯計算機程序的源代碼。編輯器110可以使得開發(fā)人員能夠指示與不同補丁關(guān)聯(lián)的修改,如在下文中說明的那樣。在某些示例性實施例中,編輯器110可以是通用文本編輯器。此外或備選地,根據(jù)所公開的主題,編輯器110可以被具體設(shè)計和配置為協(xié)助與不同補丁關(guān)聯(lián)的源代碼修改。開發(fā)人員可以使用編譯器120編譯編輯后的源代碼。此外或備選地,如果在不需要或不支持編譯的計算機程序(例如Perl)中提供源代碼,則編譯器120可以是解釋器。編譯器120可操作以便通過生成可執(zhí)行文件或通過執(zhí)行源代碼本身來準備要執(zhí)行的源代碼。編譯器120可以包括預(yù)處理器125,其可操作以處理預(yù)處理指令,如本領(lǐng)域公知的那樣。開發(fā)人員可以使用例如在軟件中實現(xiàn)并由開發(fā)人員的計算機(例如,35)執(zhí)行的補丁生成器130,基于編輯后的源代碼生成一個或多個補丁。在某些示例性實施例中,并且不同于用于維護補丁系列的其他系統(tǒng),開發(fā)人員并不直接處理補丁文件。相反,自動從定義補丁拆分的源代碼批注創(chuàng)建補丁文件。例如,開發(fā)人員可以批注代碼的幾個新行,指出這些行屬于名為“patchl”的補丁。幾個其他行被批注為屬于“patch2”。然后,當執(zhí)行根據(jù)所公開的主題的工具時,可以自動創(chuàng)建兩個補丁文件“patchl”和“patch2”以便添加這些行。當開發(fā)人員想要編輯其更改,或者可能合并這兩個補丁或從patchl中將幾行拆分到新的patch3時,這些操作如同編輯代碼和修改批注那樣容易。所公開的主題使得開發(fā)人員能夠處理單個源代碼,并且不再需要在每個微小編輯之間處理一系列較長的diff、patch或版本控制命令。將使用C語言代碼片段解釋所公開的主題。然而,所公開的主題并不限于此編程語言,并且可以用于任何形式的源代碼??紤]下面的代碼片段:
權(quán)利要求
1.一種具有處理器的計算機化裝置,所述裝置包括: 源代碼獲得器,其用于獲得計算機程序的源代碼; 補丁指令獲得器,其用于獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令; 源代碼編輯器,其被配置為向用戶同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注; 其中所述源代碼編輯器還被配置為根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。
2.根據(jù)權(quán)利要求1的計算機化裝置,其中所述源代碼編輯器被配置為以下面的方式修改所述補丁指令:將與所述第一源代碼補丁關(guān)聯(lián)的修改指令修改為與所述第二源代碼補丁 關(guān)聯(lián)。
3.根據(jù)權(quán)利要求1的計算機化裝置,其中響應(yīng)于來自用戶的輸入,所述源代碼編輯器被配置為更新所述源代碼以便同時修改所述源代碼的第一版本和所述源代碼的第二版本,其中所述源代碼的所述第一版本是在其上應(yīng)用所述第一源代碼補丁之后的源代碼;以及其中所述源代碼的所述第二版本是在其上應(yīng)用所述第二源代碼補丁之后的所述源代碼的所述第一版本。
4.根據(jù)權(quán)利要求1的計算機化裝置,其中在所述源代碼上首先應(yīng)用所述第一源代碼補丁之后,可在所述源代碼上應(yīng)用所述第二源代碼補丁。
5.根據(jù)權(quán)利要求1的計算機化裝置,其中所述源代碼包括指示所述一組源代碼補丁指令的批注,其中所述補丁指令獲得器被配置為從所述源代碼中的所述批注獲得所述一組源代碼補丁。
6.根據(jù)權(quán)利要求5的計算機化裝置,其中所述批注被提供為所述源代碼中的注釋,由此可以編譯所述源代碼。
7.根據(jù)權(quán)利要求5的計算機化裝置,其中所述批注被提供為所述源代碼中的預(yù)處理指令,由此可以編譯所述源代碼。
8.根據(jù)權(quán)利要求7的計算機化裝置,其中所述預(yù)處理指令被配置為導(dǎo)致預(yù)處理器應(yīng)用所有補丁 ;由此在編譯所述源代碼時,編譯已應(yīng)用了所有補丁的版本。
9.根據(jù)權(quán)利要求5的計算機化裝置,還包括補丁應(yīng)用器,其被配置為通過應(yīng)用預(yù)定補丁所依賴的所有補丁來應(yīng)用所述預(yù)定補丁。
10.根據(jù)權(quán)利要求9的計算機化裝置,其中所述補丁應(yīng)用器被配置為修改所述預(yù)處理指令以便應(yīng)用所述預(yù)定補丁所依賴的所有補丁和所述預(yù)定補??;以及其中所述補丁應(yīng)用器被配置為修改所述預(yù)處理指令以便不應(yīng)用所有其他補丁。
11.根據(jù)權(quán)利要求1的計算機化裝置,包括補丁生成器,其被配置為基于所述一組源代碼補丁指令而生成補丁。
12.根據(jù)權(quán)利要求11的計算機化裝置,其中所述補丁生成器被配置為獲得所述補丁的次序,以及其中所述補丁生成器被配置為通過以下操作生成預(yù)定補丁: 通過應(yīng)用由所述預(yù)定補丁決定并且不包括所述預(yù)定補丁的補丁而生成第一源代碼補丁級別;通過應(yīng)用由所述預(yù)定補丁決定并且包括所述預(yù)定補丁的補丁而生成第二源代碼補丁級別;以及 根據(jù)所述第一源代碼補丁級別和所述第二源代碼補丁級別之間的差異而生成所述預(yù)定補丁。
13.一種由處理器執(zhí)行的計算機實現(xiàn)的方法,所述方法包括: 獲得計算機程序的源代碼; 獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令; 同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注;以及 根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。
14.根據(jù)權(quán)利要求13的計算機實現(xiàn)的方法,其中所述編輯包括:通過以下操作修改所述補丁指令:將與所述第一源代碼補丁關(guān)聯(lián)的修改指令修改為與所述第二源代碼補丁關(guān)聯(lián)。
15.根據(jù)權(quán)利要求13的計算機實現(xiàn)的方法,其中所述源代碼包括指示所述一組源代碼補丁指令的批注,其中獲得所述一組源代碼補丁指令的步驟包括從所述源代碼中的所述批注獲得所述一組源代碼補丁。
16.根據(jù)權(quán)利要求1 5的計算機實現(xiàn)的方法,其中所述批注被提供為所述源代碼中的注釋,由此可以編譯所述源代碼。
17.根據(jù)權(quán)利要求15的計算機實現(xiàn)的方法,其中所述批注被提供為所述源代碼中的預(yù)處理指令,由此可以編譯所述源代碼。
18.根據(jù)權(quán)利要求17的計算機實現(xiàn)的方法,其中所述預(yù)處理指令被配置為導(dǎo)致預(yù)處理器應(yīng)用所有補丁 ;由此在編譯所述源代碼時,編譯已應(yīng)用了所有補丁的版本。
19.根據(jù)權(quán)利要求13的計算機實現(xiàn)的方法,還包括: 從所述源代碼生成預(yù)定補丁,所述生成包括: 通過應(yīng)用由所述預(yù)定補丁決定并且不包括所述預(yù)定補丁的補丁而生成第一源代碼補丁級別; 通過應(yīng)用由所述預(yù)定補丁決定并且包括所述預(yù)定補丁的補丁而生成第二源代碼補丁級別;以及 根據(jù)所述第一源代碼補丁級別和所述第二源代碼補丁級別之間的差異而生成所述預(yù)定補丁。
全文摘要
本發(fā)明涉及一種用于源代碼補丁的裝置和方法。提供了一種對源代碼補丁有用的裝置、過程和產(chǎn)品。所述計算機化裝置具有處理器,所述裝置包括源代碼獲得器,其用于獲得計算機程序的源代碼;補丁指令獲得器,其用于獲得一組源代碼補丁指令,其中第一補丁指令包括與第一源代碼補丁關(guān)聯(lián)的一組源代碼修改指令,其中第二補丁指令包括與第二源代碼補丁關(guān)聯(lián)的一組源代碼修改指令;源代碼編輯器,其被配置為向用戶同時顯示所述源代碼和與應(yīng)用每個源代碼補丁關(guān)聯(lián)的批注;以及其中所述源代碼編輯器還被配置為根據(jù)用戶輸入編輯所述源代碼,其中基于用戶輸入而修改所述第一和第二源代碼補丁指令。
文檔編號G06F9/44GK103207779SQ20131001481
公開日2013年7月17日 申請日期2013年1月15日 優(yōu)先權(quán)日2012年1月16日
發(fā)明者E·D·法爾基, A·戈登, N·Y·哈雷, M·肖沙 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1