用于在代碼審查期間顯示測(cè)試覆蓋數(shù)據(jù)的過(guò)程的制作方法
【專利摘要】所提供的是用于在代碼審查過(guò)程期間監(jiān)測(cè)為進(jìn)行審查而發(fā)送的代碼更改并且對(duì)所述代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以生成對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的方法和系統(tǒng)。代碼覆蓋服務(wù)監(jiān)測(cè)輸入至代碼審查系統(tǒng)的代碼更改,并且對(duì)作為代碼審查過(guò)程的結(jié)果被確定為已經(jīng)顯著演進(jìn)的任何代碼更改自動(dòng)執(zhí)行測(cè)試覆蓋計(jì)算。所述代碼覆蓋服務(wù)將產(chǎn)生的測(cè)試覆蓋數(shù)據(jù)(例如,測(cè)試覆蓋數(shù))的通知提供至與所述代碼更改相關(guān)聯(lián)的各種用戶和/或系統(tǒng),包括代碼審查者、代碼作者、代碼審查系統(tǒng)、其它通知系統(tǒng)、和/或其任何組合。所述測(cè)試覆蓋數(shù)據(jù)能夠用于所涉及的相關(guān)代碼的代碼健康的綜合評(píng)估。
【專利說(shuō)明】
用于在代碼審查期間顯示測(cè)試覆蓋數(shù)據(jù)的過(guò)程
【背景技術(shù)】
[0001]在程序代碼審查期間,對(duì)于審查代碼的工程師而言,了解測(cè)試是否覆蓋一個(gè)特定代碼可以耗費(fèi)相當(dāng)多的時(shí)間和精力。工程師需要讀取正受測(cè)試的代碼和測(cè)試兩者,遵循代碼執(zhí)行路徑,并且對(duì)于每行代碼確定是否執(zhí)行了該行代碼。這種過(guò)程不但艱難,而且還容易出錯(cuò)。
[0002]可替代地,代碼審查者可以要求代碼更改的作者手動(dòng)運(yùn)行現(xiàn)有代碼覆蓋計(jì)算器中的一種并且手動(dòng)地向?qū)彶檎邎?bào)告結(jié)果。由于該過(guò)程涉及至少兩個(gè)執(zhí)行手動(dòng)步驟的人,因此該過(guò)程可能具有顯著的等待時(shí)間,尤其是如果審查者和代碼更改的作者在地理上彼此相距較遠(yuǎn)。
【發(fā)明內(nèi)容】
[0003]本
【發(fā)明內(nèi)容】
簡(jiǎn)要介紹了對(duì)構(gòu)思的選取,以便提供對(duì)本公開(kāi)的某些方面的基本了解。本
【發(fā)明內(nèi)容】
不是對(duì)本公開(kāi)的詳盡綜述,并且不旨在識(shí)別本公開(kāi)的重要或者關(guān)鍵要素或者勾畫本公開(kāi)的范圍。本
【發(fā)明內(nèi)容】
僅僅提出了本公開(kāi)的某些構(gòu)思作為以下提供的【具體實(shí)施方式】的序g。
[0004]本公開(kāi)大體涉及向用戶提供自動(dòng)化服務(wù)的方法和系統(tǒng)。更具體地,本公開(kāi)的各個(gè)方面涉及用于在代碼審查過(guò)程期間向用戶提供對(duì)于計(jì)算機(jī)代碼更改的測(cè)試覆蓋信息的自動(dòng)化服務(wù)。
[0005]本公開(kāi)的一個(gè)實(shí)施例涉及用于提供對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)方法,該方法包括:檢測(cè)到至代碼審查系統(tǒng)傳入的代碼更改;對(duì)傳入的代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算;基于所執(zhí)行的一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù);以及,將生成的對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送至與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。
[0006]在另一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的方法進(jìn)一步包括:監(jiān)測(cè)代碼審查系統(tǒng)有關(guān)代碼客戶端中的更改的通知;以及,基于接收的有關(guān)代碼客戶端中的更改的通知,檢測(cè)到傳入的代碼更改。
[0007]在另一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的方法進(jìn)一步包括:確定對(duì)傳入的代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算;以及,基于確定了傳入的代碼更改不同于代碼更改的先前版本,對(duì)傳入的代碼更改執(zhí)行一個(gè)或者多個(gè)更新的測(cè)試覆蓋計(jì)算。
[0008]在再一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的方法進(jìn)一步包括:比較傳入的代碼更改的快照與代碼更改的先前版本的快照;以及基于該比較,按照以下方式中的至少一種來(lái)確定傳入的代碼更改不同于代碼更改的先前版本:已經(jīng)向代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;已經(jīng)從代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;除了測(cè)試代碼之外,已經(jīng)向代碼更改添加了超過(guò)閾值量的新代碼;以及,除了測(cè)試代碼之外,已經(jīng)從代碼更改中去除了超過(guò)閾值量的代碼。
[0009]在又一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的方法進(jìn)一步包括:接收對(duì)于提交至代碼審查系統(tǒng)的代碼更改的更新的測(cè)試覆蓋計(jì)算的請(qǐng)求,其中,在檢測(cè)到所提交的代碼更改之前,接收更新的測(cè)試覆蓋計(jì)算的請(qǐng)求;并且,響應(yīng)于該請(qǐng)求,對(duì)所提交的代碼更改執(zhí)行一個(gè)或者多個(gè)更新的測(cè)試覆蓋計(jì)算。
[0010]本公開(kāi)的又一實(shí)施例涉及一種用于提供對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括:一個(gè)或者多個(gè)處理器;以及,耦合至一個(gè)或者多個(gè)處理器的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),該非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)具有存儲(chǔ)在其上的指令,當(dāng)指令由一個(gè)或者多個(gè)處理器執(zhí)行時(shí),該指令使一個(gè)或者多個(gè)處理器執(zhí)行操作,該操作包括:檢測(cè)到至代碼審查服務(wù)的傳入的代碼更改;對(duì)傳入的代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算;基于所執(zhí)行的一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù);以及,將生成的對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送至與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。
[0011]在另一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)中的該一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,該操作包括:監(jiān)測(cè)代碼審查服務(wù)有關(guān)代碼客戶端中的更改的通知;以及,基于接收的有關(guān)代碼客戶端中的更改的通知,檢測(cè)到傳入的代碼更改。
[0012]在再一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)中的該一個(gè)或者更多處理器執(zhí)行進(jìn)一步操作,該操作包括:確定對(duì)傳入的代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算;以及,基于確定了傳入的代碼更改不同于代碼更改的先前版本,對(duì)傳入的代碼更改執(zhí)行一個(gè)或者多個(gè)更新的測(cè)試覆蓋計(jì)算。
[0013]在再一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)中的該一個(gè)或者更多處理器執(zhí)行進(jìn)一步操作,該操作包括:比較傳入的代碼更改的快照與代碼更改的先前版本的快照;以及,基于該比較,按照以下方式中的至少一種來(lái)確定傳入的代碼更改不同于與代碼更改的先前版本:已經(jīng)向代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;已經(jīng)從代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;除了測(cè)試代碼之外,已經(jīng)向代碼更改添加了超過(guò)閾值量的新代碼;以及,除了測(cè)試代碼之外,已經(jīng)從代碼更改中去除了超過(guò)閾值量的代碼。
[0014]在再一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)中的該一個(gè)或者更多處理器執(zhí)行進(jìn)一步操作,該操作包括:在與代碼審查服務(wù)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中發(fā)布通知,其中,所發(fā)布的通知可由與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方訪問(wèn)。
[0015]在再一實(shí)施例中,用于提供測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)中的該一個(gè)或者更多處理器執(zhí)行進(jìn)一步操作,該操作包括:接收對(duì)于提交至代碼審查服務(wù)的代碼更改的更新的測(cè)試覆蓋計(jì)算的請(qǐng)求,其中,在檢測(cè)到所提交的代碼更改之前,接收更新測(cè)試覆蓋計(jì)算的請(qǐng)求;并且,響應(yīng)于該請(qǐng)求,對(duì)所提交的代碼更改執(zhí)行一個(gè)或者多個(gè)更新的測(cè)試覆蓋計(jì)算。
[0016]本公開(kāi)的又一實(shí)施例涉及一種或者多種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),該非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)了計(jì)算機(jī)可執(zhí)行指令,當(dāng)計(jì)算機(jī)可執(zhí)行指令由一個(gè)或者多個(gè)處理器執(zhí)行時(shí),計(jì)算機(jī)可執(zhí)行指令使一個(gè)或者多個(gè)處理器執(zhí)行操作,該操作包括:監(jiān)測(cè)代碼審查系統(tǒng)有關(guān)代碼客戶端中的更改的通知;基于接收的有關(guān)代碼客戶端中的更改的通知,檢測(cè)到至代碼審查系統(tǒng)的傳入的代碼更改。對(duì)傳入的代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算;基于所執(zhí)行的一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù);以及,將生成的對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送給與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。
[0017]在一個(gè)或者多個(gè)其它實(shí)施例中,本文描述的方法和系統(tǒng)可以可選地包括以下附加特征中的一種或者多種:確定對(duì)傳入的代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算是基于與傳入的代碼更改和傳入的代碼更改的先前版本兩者相關(guān)聯(lián)的代碼更改標(biāo)識(shí)符;確定傳入的代碼更改不同于代碼更改的先前版本是基于傳入的代碼更改的快照與傳入的代碼更改的先前版本的快照之間的比較;與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方包括代碼更改的作者、代碼更改的審查者和可通過(guò)其訪問(wèn)代碼更改的代碼審查服務(wù)中的至少一個(gè);并且/或者發(fā)送生成的對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的通知包括:在與所述代碼審查系統(tǒng)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中發(fā)布通知,其中,所發(fā)布的通知可由與代碼更改相關(guān)聯(lián)的至少一個(gè)接收方訪問(wèn)。
[0018]本公開(kāi)的進(jìn)一步適用范圍將通過(guò)下面給出的【具體實(shí)施方式】而變得顯而易見(jiàn)。然而,應(yīng)了解,僅通過(guò)說(shuō)明性的方式給出了指示優(yōu)選實(shí)施例的【具體實(shí)施方式】和具體示例,這是因?yàn)椋瑢?duì)于本領(lǐng)域的技術(shù)人員而言,在本公開(kāi)的精神和范圍內(nèi)的多種改變和修改通過(guò)本【具體實(shí)施方式】將變得顯而易見(jiàn)。
【附圖說(shuō)明】
[0019]對(duì)于本領(lǐng)域的技術(shù)人員而言,本公開(kāi)的這些和其它目的、特征和特性將通過(guò)結(jié)合隨附權(quán)利要求書和附圖學(xué)習(xí)以下的【具體實(shí)施方式】而變得顯而易見(jiàn),所有這些構(gòu)成了本說(shuō)明書的一部分。在圖中:
[0020]圖1是圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的用于在代碼審查過(guò)程期間對(duì)為進(jìn)行審查而發(fā)送的代碼更改提供測(cè)試覆蓋數(shù)據(jù)的示例系統(tǒng)的框圖。
[0021]圖2是圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的用于監(jiān)測(cè)輸入至代碼審查系統(tǒng)的代碼更改并且對(duì)該代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以生成對(duì)于該代碼更改的對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的示例方法的流程圖。
[0022]圖3是圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的用于檢測(cè)輸入至代碼審查系統(tǒng)的新代碼更改,監(jiān)測(cè)代碼更改的進(jìn)展,并且基于監(jiān)測(cè)到的代碼更改的進(jìn)展對(duì)代碼更改執(zhí)行更新的測(cè)試覆蓋計(jì)算的示例方法的流程圖。
[0023]圖4是圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的被布置用于監(jiān)測(cè)輸入至代碼審查系統(tǒng)的代碼更改并且對(duì)代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以對(duì)于代碼更改生成對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的示例計(jì)算裝置的框圖。
[0024]本文提供的標(biāo)題僅是為了方便起見(jiàn),并不一定影響本公開(kāi)中所要求保護(hù)的范圍和含義。
[0025]在圖中,為了容易理解和方便起見(jiàn),相同的參考標(biāo)號(hào)和任何縮略詞識(shí)別了具有相同或者相似結(jié)構(gòu)或者功能的元件或者動(dòng)作。通過(guò)下面的【具體實(shí)施方式】,將詳細(xì)描述這些圖。
【具體實(shí)施方式】
[0026]現(xiàn)在將描述各種示例和實(shí)施例。下面的描述提供了用于全面理解這些示例的描述并使其能夠?qū)崿F(xiàn)的具體細(xì)節(jié)。然而,相關(guān)領(lǐng)域的技術(shù)人員應(yīng)該理解,可以在沒(méi)有很多這些細(xì)節(jié)的情況下實(shí)踐本文描述的一個(gè)或者多個(gè)實(shí)施例。同樣,相關(guān)領(lǐng)域的技術(shù)人員也應(yīng)該理解,本公開(kāi)的一個(gè)或者多個(gè)實(shí)施例能夠包括本文未詳細(xì)描述的許多其它明顯的特征。此外,為了避免不必要地模糊相關(guān)描述,下面可能不詳細(xì)示出或者描述某些周知的結(jié)構(gòu)或者功能。
[0027]本公開(kāi)的實(shí)施例涉及用于在代碼審查過(guò)程期間監(jiān)測(cè)為了審查而發(fā)送的計(jì)算機(jī)代碼更改并且對(duì)該代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以生成對(duì)于該代碼更改的對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的方法和系統(tǒng)。如本文將更詳細(xì)描述的,中央監(jiān)測(cè)服務(wù)可以生成對(duì)于輸入至代碼審查系統(tǒng)的代碼更改的測(cè)試覆蓋數(shù)據(jù),并且將這種測(cè)試覆蓋數(shù)據(jù)提供至與特定代碼更改相關(guān)聯(lián)的一個(gè)或者多個(gè)用戶和/或系統(tǒng)。例如,根據(jù)本文描述的至少一個(gè)實(shí)施例,該服務(wù)可以將對(duì)于代碼更改所生成的測(cè)試覆蓋數(shù)據(jù)提供(諸如,發(fā)送、使其可以利用等)至代碼更改的作者、代碼更改的審查者、代碼審查系統(tǒng)的通知部件、和/或其任何組合。對(duì)于代碼更改所生成的測(cè)試覆蓋數(shù)據(jù)可以由各種有關(guān)方/系統(tǒng)用于,例如,評(píng)估代碼的健康。
[0028]如上所論述的,當(dāng)代碼審查者與代碼更改的作者在地理上彼此相距較遠(yuǎn)(例如,相隔幾個(gè)時(shí)區(qū))時(shí),對(duì)于代碼審查者來(lái)說(shuō),要求代碼更改的作者手動(dòng)地運(yùn)行現(xiàn)有代碼覆蓋計(jì)算器并且手動(dòng)地向?qū)彶檎邎?bào)告結(jié)果,通常是很耗時(shí)的。在這種地理上相距較遠(yuǎn)的場(chǎng)景下,甚至在審查者已經(jīng)有機(jī)會(huì)查看代碼更改之前,代碼更改的作者將受益于確保該作者未忘記測(cè)試他或她的更改的任何代碼路徑的測(cè)試代碼覆蓋計(jì)算。該作者可以,例如,執(zhí)行與審查者將執(zhí)行的過(guò)程相同的過(guò)程并且手動(dòng)地檢查代碼,這既容易出錯(cuò)又很耗時(shí),或者手動(dòng)地運(yùn)行覆蓋計(jì)算,該作者可能會(huì)忘記這樣做或者可能未意識(shí)到這種操作是很容易完成的。
[0029]某些現(xiàn)有的方法對(duì)每個(gè)代碼更改提供二進(jìn)制的“所有測(cè)試通過(guò)”或者“某些測(cè)試失敗”的信息。然而,這種方法未提供解決上述問(wèn)題的必要的每行解決方案。其它現(xiàn)有的方法利用在預(yù)定時(shí)間運(yùn)行所有測(cè)試的外部系統(tǒng)。如此,一旦代碼更改已經(jīng)被納入代碼中,這些其它方法只能提供回顧性信息。
[0030]因此,本公開(kāi)的實(shí)施例涉及大規(guī)模自動(dòng)提供代碼更改測(cè)試覆蓋信息的方法和系統(tǒng)。如下面將更詳細(xì)描述的,可以對(duì)被確定為在一段時(shí)間內(nèi)顯著演進(jìn)的任何代碼更改自動(dòng)執(zhí)行測(cè)試覆蓋計(jì)算。根據(jù)至少一個(gè)實(shí)施例,可以確定新的代碼更改對(duì)于保證新的/更新的測(cè)試覆蓋計(jì)算的性能是足夠顯著的,其中通過(guò)以下示例方式中的至少一種新代碼更改的快照不同于先前測(cè)試的代碼更改的快照:(I)已經(jīng)向代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;
(2)已經(jīng)從代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;(3)除了測(cè)試代碼之外,已經(jīng)向代碼更改添加了超過(guò)閾值量(例如,10%)的新代碼;(4)除了測(cè)試代碼之外,已經(jīng)從代碼更改去除了超過(guò)閾值量(例如,10%)的代碼;(5)(1)-(4)的任何組合。應(yīng)該理解,上述因素本質(zhì)上是示例性的,并且除了或者代替上述示例因素,在確定新的代碼更改對(duì)保證新的/更新的測(cè)試覆蓋計(jì)算是否足夠顯著時(shí),也可以考慮很多其它因素。
[0031]根據(jù)至少一個(gè)實(shí)施例,集中式服務(wù)可以配置為監(jiān)測(cè)為審查而發(fā)送的代碼更改,并且通過(guò)使用本領(lǐng)域的技術(shù)人員已知的現(xiàn)有測(cè)試覆蓋計(jì)算工具(例如,涉及代碼更改的特定代碼語(yǔ)言)對(duì)代碼更改運(yùn)行一個(gè)或者多個(gè)預(yù)先配置的測(cè)試集合。然后,集中式服務(wù)可以將產(chǎn)生的測(cè)試覆蓋信息(測(cè)試覆蓋數(shù))的通知提供至代碼審查者、代碼的作者、代碼審查系統(tǒng)、一個(gè)或者多個(gè)其它有關(guān)方、和/或其任何組合。在一個(gè)示例中,該服務(wù)可以經(jīng)由電子郵件提供此類通知。在一個(gè)或者多個(gè)其它示例中,該服務(wù)通過(guò)經(jīng)由即時(shí)消息服務(wù)發(fā)送該通知,或者通過(guò)向一個(gè)或者多個(gè)其他通知系統(tǒng)發(fā)送測(cè)試覆蓋數(shù)據(jù),可以在與代碼審查系統(tǒng)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中提供該通知。
[0032]根據(jù)本文描述的至少一個(gè)實(shí)施例,集中式服務(wù)可以配置為通過(guò)訂閱提交至代碼審查系統(tǒng)的所有傳入的代碼更改來(lái)監(jiān)測(cè)代碼更改。
[0033]應(yīng)該注意,根據(jù)本公開(kāi)的一個(gè)或者多個(gè)實(shí)施例,本文描述的代碼覆蓋服務(wù)可以配置用于向用戶提供一種手動(dòng)調(diào)用服務(wù)的機(jī)制。例如,在代碼覆蓋服務(wù)不能自動(dòng)檢測(cè)到為進(jìn)行審查而提交的代碼更改(例如,提交至代碼審查系統(tǒng))的情況下,或者在迫切需要更新的測(cè)試覆蓋計(jì)算(例如,由于如代碼審查過(guò)程的結(jié)果,代碼更改存在顯著更改)的情況下,與代碼更改相關(guān)聯(lián)的用戶(例如,代碼更改的作者、代碼更改的審查者等)可以手動(dòng)地調(diào)用代碼覆蓋服務(wù)以執(zhí)行本文描述的各種操作。根據(jù)至少一個(gè)實(shí)施例,本文描述的代碼審查系統(tǒng)的用戶可以訪問(wèn)實(shí)用程序,該實(shí)用程序能夠以與代碼審查服務(wù)(如下面更詳細(xì)描述的)在檢測(cè)到代碼更改時(shí)發(fā)送通知的方式相同或相似的方式向代碼覆蓋服務(wù)發(fā)送通知。進(jìn)一步地,根據(jù)至少一個(gè)實(shí)施例,與代碼審查服務(wù)相關(guān)聯(lián)的用戶界面屏幕可以包括可選按鈕,用戶能夠選擇該可選按鈕使代碼審查系統(tǒng)代表用戶向代碼覆蓋服務(wù)提交請(qǐng)求。
[0034]—旦使該服務(wù)首次意識(shí)到代碼更改,該服務(wù)可以以規(guī)律的時(shí)間間隔(例如,每小時(shí)、每天等)持續(xù)監(jiān)測(cè)代碼更改。如果服務(wù)確定代碼更改已經(jīng)顯著演進(jìn),服務(wù)可以自動(dòng)地重新運(yùn)行測(cè)試覆蓋計(jì)算并且發(fā)送新的覆蓋信息。根據(jù)至少一個(gè)實(shí)施例,服務(wù)可以持續(xù)監(jiān)測(cè)代碼更改直到這些更改:(I)被提交至代碼庫(kù);(2)從審查系統(tǒng)中丟棄和刪除;或者(3)由于超時(shí)而到期并且被宣布廢棄。在服務(wù)檢測(cè)到代碼更改已經(jīng)提交至代碼庫(kù)的示例場(chǎng)景中,該服務(wù)可以配置為執(zhí)行最終測(cè)試覆蓋運(yùn)行并且計(jì)算最終的“發(fā)布的提交”的覆蓋數(shù)。在這種場(chǎng)景中,服務(wù)也可以配置為確定(例如,由服務(wù)執(zhí)行的)首次代碼覆蓋計(jì)算與發(fā)布的提交覆蓋計(jì)算之間的差異,并且(在數(shù)據(jù)庫(kù)中)存儲(chǔ)該差異并且/或者向有關(guān)方發(fā)送關(guān)于該差異的通知。根據(jù)至少一個(gè)實(shí)施例,可以存儲(chǔ)該服務(wù)收集到的所有信息(例如,對(duì)每次代碼更改每次運(yùn)行預(yù)配置測(cè)試的測(cè)試覆蓋結(jié)果),以便進(jìn)行長(zhǎng)期趨勢(shì)和總體代碼健康的分析。
[0035]根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例,代碼覆蓋服務(wù)的自動(dòng)化性質(zhì)免除了代碼更改的作者必須記住對(duì)于代碼更改運(yùn)行覆蓋計(jì)算。替代地,代碼更改的代碼審查者可以具備從視覺(jué)上(直接地)確定測(cè)試是否覆蓋一行特定代碼的能力,并且可以向與代碼更改相關(guān)聯(lián)的各種其它用戶/系統(tǒng)等提供綜合的測(cè)試覆蓋數(shù)據(jù)(例如,總體測(cè)試覆蓋數(shù)),該綜合的測(cè)試覆蓋數(shù)據(jù)可以用于評(píng)估相關(guān)代碼的代碼健康。除了許多其它優(yōu)點(diǎn),本公開(kāi)的代碼覆蓋服務(wù)減少了人為誤差(例如,提高了代碼審查過(guò)程的準(zhǔn)確性),減少了貫穿整個(gè)代碼審查過(guò)程的各個(gè)階段的等待時(shí)間(例如,提高了代碼審查過(guò)程的效率),并且允許對(duì)代碼健康進(jìn)行長(zhǎng)期跨項(xiàng)目的分析。
[0036]圖1圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的在代碼審查過(guò)程期間對(duì)為進(jìn)行審查而發(fā)送的代碼更改提供測(cè)試覆蓋數(shù)據(jù)的示例系統(tǒng)。系統(tǒng)100可以包括代碼客戶端105、代碼覆蓋服務(wù)客戶端115、代碼更改服務(wù)器110、代碼更改服務(wù)120、測(cè)試執(zhí)行器130、代碼審查服務(wù)150和通知服務(wù)145。系統(tǒng)100還可以包括配置為存儲(chǔ)數(shù)據(jù)的一個(gè)或者多個(gè)數(shù)據(jù)庫(kù),諸如,例如,代碼覆蓋儲(chǔ)存器135和測(cè)試結(jié)果儲(chǔ)存器140。
[0037]根據(jù)至少一個(gè)實(shí)施例,系統(tǒng)100可以是分布式系統(tǒng),在該分布式系統(tǒng)中,組成系統(tǒng)100的各個(gè)部件可以配置為在獨(dú)立的機(jī)器(例如,計(jì)算機(jī)、服務(wù)器等)上運(yùn)行。例如,代碼客戶端105可以在開(kāi)發(fā)者的機(jī)器上(例如,計(jì)算機(jī))運(yùn)行,而系統(tǒng)100中的其余部件在通過(guò)系統(tǒng)100的各種用戶之間共享的通信網(wǎng)絡(luò)可訪問(wèn)的位置中操作。此外,許多代碼客戶端105可以與同一服務(wù)(例如,代碼覆蓋服務(wù)客戶端115、代碼更改服務(wù)器110、代碼更改服務(wù)120等)通信。根據(jù)一個(gè)或者多個(gè)實(shí)施例,系統(tǒng)100可以以容錯(cuò)的方式來(lái)設(shè)計(jì),借此同一共享進(jìn)程的多個(gè)實(shí)例在通過(guò)網(wǎng)絡(luò)連接的多臺(tái)計(jì)算機(jī)上運(yùn)行。
[0038]代碼客戶端105可以是配置為管理由開(kāi)發(fā)者更改的源代碼的快照的應(yīng)用(例如,計(jì)算機(jī)軟件應(yīng)用或者程序)
[0039]代碼覆蓋服務(wù)客戶端115可以是實(shí)用程序,該實(shí)用程序配置為向代碼覆蓋服務(wù)120通知有關(guān)代碼更改并且當(dāng)檢測(cè)到代碼更改時(shí)還生成代碼覆蓋計(jì)算的請(qǐng)求。
[0040]代碼更改服務(wù)器110可以是配置為管理代碼快照和由開(kāi)發(fā)者提交的代碼更改建議的服務(wù)。
[0041]代碼覆蓋服務(wù)120可以是配置為監(jiān)測(cè)從代碼覆蓋服務(wù)客戶端115接收的代碼更改通知并且執(zhí)行代碼覆蓋計(jì)算(例如,使用一種或者多種現(xiàn)有的測(cè)試覆蓋計(jì)算工具)的服務(wù)。
[0042]測(cè)試執(zhí)行器130可以是配置為對(duì)代碼庫(kù)的任何給出的快照?qǐng)?zhí)行測(cè)試并且將測(cè)試執(zhí)行結(jié)果記錄在例如測(cè)試結(jié)果儲(chǔ)存器140中的服務(wù)。
[0043]根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例,代碼審查服務(wù)150可以配置為促進(jìn)代碼審查過(guò)程。例如,開(kāi)發(fā)者可以利用代碼審查服務(wù)150來(lái)請(qǐng)求代碼審查,并且代碼審查者可以將所建議的代碼更改的意見(jiàn)提交至代碼審查服務(wù)150。另外,代碼審查服務(wù)150可以包括允許用戶對(duì)所建議的代碼更改進(jìn)行注釋(諸如,突出顯示、插入評(píng)論、顯示修訂等)的一種或者多種工具。
[0044]通知服務(wù)145可以是配置為生成有關(guān)于代碼覆蓋測(cè)試結(jié)果(例如,由測(cè)試執(zhí)行器130存儲(chǔ)在測(cè)試結(jié)果儲(chǔ)存器140中)的通知并且將這種通知發(fā)送(或以其它方式使之可用)至一個(gè)或者多個(gè)單獨(dú)的用戶或者用戶組的服務(wù)。
[0045]根據(jù)本文描述的至少一個(gè)實(shí)施例,在系統(tǒng)的各個(gè)部件之間的示例數(shù)據(jù)流可以包括如下。
[0046]代碼覆蓋服務(wù)120可以配置為從測(cè)試結(jié)果儲(chǔ)存器140中讀取(例如,由測(cè)試執(zhí)行器130)完成的測(cè)試執(zhí)行的代碼覆蓋數(shù)據(jù)。例如,代碼覆蓋服務(wù)120可以讀取關(guān)于由測(cè)試執(zhí)行器130執(zhí)行的一個(gè)或者多個(gè)測(cè)試所覆蓋的代碼的更改行的百分比的數(shù)據(jù)。在另一示例中,代碼覆蓋服務(wù)120可以從測(cè)試結(jié)果140中讀取關(guān)于由測(cè)試執(zhí)行器130執(zhí)行的任何一次測(cè)試所覆蓋的文件列表的數(shù)據(jù)。
[0047]根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)120也可以配置為從代碼覆蓋儲(chǔ)存器135讀取數(shù)據(jù)和向其寫入數(shù)據(jù)這兩者。例如,代碼覆蓋服務(wù)120可以配置為將對(duì)于給出的代碼更改的測(cè)試覆蓋計(jì)算(例如,正由代碼覆蓋服務(wù)120執(zhí)行)的當(dāng)前狀態(tài)記錄在代碼覆蓋儲(chǔ)存器135中。根據(jù)一個(gè)或者多個(gè)其它實(shí)施例,代碼覆蓋服務(wù)120可以進(jìn)一步配置為:在服務(wù)器重新啟動(dòng)的情況下(例如,發(fā)生故障后),從代碼覆蓋儲(chǔ)存器135中讀取這種記錄,以便,例如,重新開(kāi)始對(duì)代碼更改執(zhí)行測(cè)試覆蓋計(jì)算。
[0048]代碼審查服務(wù)150可以配置為從測(cè)試結(jié)果儲(chǔ)存器140中讀取(例如,由測(cè)試執(zhí)行器130)完成的測(cè)試執(zhí)行的代碼覆蓋數(shù)據(jù)。例如,代碼審查服務(wù)150可以讀取關(guān)于由測(cè)試執(zhí)行器130執(zhí)行的任何一次測(cè)試所覆蓋的文件列表的數(shù)據(jù),以及對(duì)于這些文件中的每一個(gè)由測(cè)試所覆蓋的代碼行的列表。根據(jù)本文描述的至少一個(gè)實(shí)施例,代碼審查服務(wù)150可以使用從測(cè)試結(jié)果儲(chǔ)存器140中讀取的數(shù)據(jù),以便,例如,識(shí)別和區(qū)分經(jīng)過(guò)測(cè)試的代碼行與未經(jīng)過(guò)測(cè)試的代碼行。例如,代碼審查服務(wù)可以使用第一種顏色來(lái)突出顯示經(jīng)過(guò)測(cè)試的代碼行,而使用第二種顏色來(lái)突出顯示未經(jīng)過(guò)測(cè)試的代碼行,并且然后在代碼審查用戶界面屏幕(未示出)中(使用突出顯示)呈現(xiàn)所有的代碼行,該用戶界面屏幕可以呈現(xiàn)給與代碼相關(guān)聯(lián)的各種用戶(例如,代碼開(kāi)發(fā)者、代碼審查者等)。代碼審查服務(wù)150也可以配置為將所審查的代碼的更改通知給代碼覆蓋服務(wù)120。
[0049]測(cè)試執(zhí)行器130可以配置為向測(cè)試結(jié)果儲(chǔ)存器140寫入數(shù)據(jù)。根據(jù)至少一個(gè)實(shí)施例,測(cè)試執(zhí)行器130可以配置為向測(cè)試結(jié)果儲(chǔ)存器140寫入測(cè)試日志、通過(guò)信息/失敗信息、以及測(cè)試覆蓋數(shù)據(jù)(例如,由測(cè)試執(zhí)行器130執(zhí)行的任何測(cè)試所覆蓋的文件列表,以及對(duì)于這些文件中的每一個(gè)由測(cè)試覆蓋的代碼行的列表)。例如,測(cè)試執(zhí)行器可以配置為向測(cè)試結(jié)果儲(chǔ)存器140寫入以下示例數(shù)據(jù):
[0050]測(cè)試_1通過(guò)[0051 ]測(cè)試_2失敗
[0052]測(cè)試_3超時(shí)
[0053]測(cè)試_4構(gòu)建失敗
[0054]代碼_文件_1:
[0055]行1:已插粧、已覆蓋
[0056]行2:已插粧、已覆蓋
[0057]行3:已插粧、未覆蓋
[0058]行4:未插粧
[0059]...
[0060]代碼_文件_2:
[0061 ] 行1:已插粧、已覆蓋
[0062]行2:已插粧、已覆蓋
[0063]行3:已插粧、未覆蓋
[0064]行4:已插粧、已覆蓋
[0065]...
[0066]代碼覆蓋服務(wù)客戶端115可以配置為向代碼覆蓋儲(chǔ)存器135寫入數(shù)據(jù)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)客戶端115可以配置為將(例如,當(dāng)檢測(cè)到代碼更改時(shí)由代碼覆蓋服務(wù)客戶端115生成并且發(fā)送至代碼覆蓋服務(wù)120的)代碼覆蓋計(jì)算請(qǐng)求的事件記錄在代碼覆蓋儲(chǔ)存器135中。例如,當(dāng)向代碼覆蓋服務(wù)120發(fā)送代碼覆蓋計(jì)算請(qǐng)求時(shí),代碼覆蓋服務(wù)客戶端115可以將有關(guān)該請(qǐng)求的各種數(shù)據(jù)作為日志記錄在代碼覆蓋儲(chǔ)存器135中,該數(shù)據(jù)諸如為代碼客戶端標(biāo)識(shí)符、代碼更改標(biāo)識(shí)符、用戶名、包括將運(yùn)行的測(cè)試列表和將插粧的文件模式的項(xiàng)目配置、或者其任何組合。應(yīng)該理解,除了或者替代以上描述的示例數(shù)據(jù),各種其它數(shù)據(jù)也可以由代碼覆蓋服務(wù)客戶端115作為日志記錄在代碼覆蓋儲(chǔ)存器135中。
[0067]代碼客戶端105可以配置為向代碼覆蓋服務(wù)客戶端115推送數(shù)據(jù)。例如,代碼客戶端105可以配置為向代碼覆蓋服務(wù)客戶端115發(fā)送請(qǐng)求,其中,該請(qǐng)求涉及特定代碼更改,并且可以包括項(xiàng)目配置,該項(xiàng)目配置包括對(duì)于該代碼更改將運(yùn)行的測(cè)試列表和將插粧的文件模式。
[0068]根據(jù)至少一個(gè)實(shí)施例,響應(yīng)于代碼客戶端105向代碼覆蓋服務(wù)客戶端115推送代碼,代碼客戶端105可以從代碼覆蓋服務(wù)客戶端115接收狀態(tài)(諸如,“OK”,“NOT 0K”)。例如,代碼客戶端105可以,響應(yīng)于代碼覆蓋服務(wù)客戶端115確定將開(kāi)發(fā)者更改的源代碼的快照成功上傳至代碼更改服務(wù)器110并且確定代碼覆蓋服務(wù)120已經(jīng)對(duì)該代碼更改啟動(dòng)了所請(qǐng)求的代碼覆蓋計(jì)算,從代碼覆蓋服務(wù)客戶端115接收“OK”狀態(tài)。在另一示例中,代碼客戶端105可以,響應(yīng)于代碼覆蓋服務(wù)客戶端115確定在上述操作中的任一個(gè)中發(fā)生了故障,從代碼覆蓋服務(wù)客戶端115接收“NOT OK”狀態(tài)。
[0069]代碼覆蓋服務(wù)客戶端115可以配置為向代碼更改服務(wù)器110和代碼覆蓋服務(wù)120推送數(shù)據(jù)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)客戶端115可以配置為將開(kāi)發(fā)者更改的源代碼的當(dāng)前快照上傳至代碼更改服務(wù)器110。例如,代碼覆蓋服務(wù)客戶端115可以將更改的源代碼的快照上傳至代碼更改服務(wù)器110,以便使測(cè)試執(zhí)行器130可以訪問(wèn)該快照。下面是可以由代碼覆蓋服務(wù)客戶端115推送至代碼更改服務(wù)器110的示例數(shù)據(jù):
[0070]〈用戶名〉
[0071]目錄_1/文件_1,〈文件I內(nèi)容〉
[0072]目錄_1/文件_2,〈文件2內(nèi)容〉
[0073]目錄_2/文件_3,〈文件3內(nèi)容〉
[0074]代碼覆蓋服務(wù)客戶端115也可以配置為將關(guān)于代碼更改通知給代碼覆蓋服務(wù)120。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)客戶端115可以通過(guò)向代碼覆蓋服務(wù)120發(fā)送對(duì)代碼更改的代碼覆蓋計(jì)算的請(qǐng)求,來(lái)將關(guān)于代碼更改通知給代碼覆蓋服務(wù)120。在這種請(qǐng)求中可以發(fā)送至代碼覆蓋服務(wù)120的數(shù)據(jù)可以包括:例如,上傳至代碼更改服務(wù)器110的代碼更改快照的代碼更改快照標(biāo)識(shí)符、代碼更改標(biāo)識(shí)符、用戶名、包括將運(yùn)行的測(cè)試列表和將插粧的文件模式的項(xiàng)目配置、或者其任何組合。例如,對(duì)特定代碼更改的代碼覆蓋計(jì)算的請(qǐng)求可以包括以下示例數(shù)據(jù):
[0075]代碼更改快照標(biāo)識(shí)符:12[對(duì)于具體代碼更改是唯一的]
[0076]代碼更改標(biāo)識(shí)符:12345[對(duì)于任何代碼更改是唯一的]
[0077]用戶名:用戶_1
[0078]測(cè)試模式:目錄_1/測(cè)試_1,目錄_2/*[指定單次測(cè)試,或者應(yīng)該擴(kuò)展至與該模式匹配的所有測(cè)試的通配符模式]
[0079]文件插粧模式:目錄_1/*,目錄_2/*
[0080]應(yīng)該理解,除了或者替代上述示例數(shù)據(jù),各種其它數(shù)據(jù)也可以包括在從代碼覆蓋服務(wù)客戶端115發(fā)送至代碼覆蓋服務(wù)120的代碼覆蓋計(jì)算的請(qǐng)求中。
[0081]響應(yīng)于代碼覆蓋服務(wù)客戶端115向代碼更改服務(wù)器110和代碼覆蓋服務(wù)120推送數(shù)據(jù),代碼覆蓋服務(wù)客戶端115可以從代碼更改服務(wù)器110和代碼覆蓋服務(wù)120中的每一個(gè)接收狀態(tài)(例如,“0K”或者“NOT 0K”狀態(tài))。例如,響應(yīng)于代碼覆蓋服務(wù)客戶端115將開(kāi)發(fā)者更改的源代碼的快照上傳至代碼更改服務(wù)器110,如果源代碼快照被成功上傳,那么代碼覆蓋服務(wù)客戶端115可以從代碼更改服務(wù)器110接收“0K”狀態(tài)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)客戶端115可以從代碼更改服務(wù)器110—起接收“0K”狀態(tài)和上傳至代碼更改服務(wù)器110的代碼更改快照的標(biāo)識(shí)符。在另一示例中,響應(yīng)于代碼覆蓋服務(wù)客戶端115將源代碼快照上傳至代碼更改服務(wù)器110,如果源代碼快照未能被恰當(dāng)?shù)鼗蛘咄耆厣蟼髦链a更改服務(wù)器110,那么代碼服務(wù)客戶端115可以從代碼更改服務(wù)器110接收“NOT 0K”狀態(tài)。在又一示例中,響應(yīng)于代碼覆蓋服務(wù)客戶端115向代碼覆蓋服務(wù)120發(fā)送代碼覆蓋計(jì)算的請(qǐng)求,如果,例如代碼覆蓋服務(wù)120無(wú)法啟動(dòng)所請(qǐng)求的代碼覆蓋計(jì)算,那么代碼覆蓋服務(wù)客戶端115可以從代碼覆蓋服務(wù)120接收“NOT 0K”狀態(tài)。
[0082]根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例,如果代碼覆蓋服務(wù)客戶端115從代碼更改服務(wù)器110和代碼覆蓋服務(wù)120中的一個(gè)接收“NOT 0K”狀態(tài),那么代碼覆蓋服務(wù)客戶端115可以配置為中止正在執(zhí)行的操作(例如,將源代碼快照上傳至代碼更改服務(wù)器110或者請(qǐng)求來(lái)自代碼覆蓋服務(wù)120的代碼覆蓋計(jì)算)并且將故障事件作為日志記錄在代碼覆蓋儲(chǔ)存器135中。代碼覆蓋服務(wù)客戶端115可以將其作為日志記錄在代碼覆蓋儲(chǔ)存器135中的故障事件可以包括:例如,關(guān)于特定故障的數(shù)據(jù)一一諸如所嘗試的操作、所涉及的源代碼更改、時(shí)間戳信息等。在至少一個(gè)示例中,作為日志記錄在代碼覆蓋儲(chǔ)存器135中的數(shù)據(jù)可以用于各種系統(tǒng)100調(diào)試目的。
[0083]代碼覆蓋服務(wù)120可以配置為請(qǐng)求來(lái)自測(cè)試執(zhí)行器130的對(duì)特定代碼更改的測(cè)試執(zhí)行。根據(jù)至少一個(gè)實(shí)施例,可以從代碼覆蓋服務(wù)120發(fā)送至測(cè)試執(zhí)行器130的該請(qǐng)求可以包括與包括在如上所述從代碼覆蓋服務(wù)客戶端115發(fā)送至代碼覆蓋服務(wù)120的代碼覆蓋計(jì)算的請(qǐng)求中的數(shù)據(jù)相似的數(shù)據(jù)。例如,可以從代碼覆蓋服務(wù)120發(fā)送至測(cè)試執(zhí)行器130的該請(qǐng)求可以包含:來(lái)自代碼蓋率服務(wù)120處接收的代碼覆蓋計(jì)算請(qǐng)求的數(shù)據(jù)的子集,包括,例如,上傳至代碼更改服務(wù)器110的代碼更改快照的標(biāo)識(shí)符,以及包括將運(yùn)行的測(cè)試列表和將插粧的文件模式的項(xiàng)目配置。
[0084]測(cè)試執(zhí)行器130可以配置為從代碼更改服務(wù)器110讀取由開(kāi)發(fā)者更改的源代碼的快照。例如,測(cè)試執(zhí)行器130可以讀取(例如,由代碼覆蓋服務(wù)客戶端115)存儲(chǔ)在代碼更改服務(wù)器110中的代碼更改,以便對(duì)該代碼更改執(zhí)行測(cè)試。
[0085]測(cè)試執(zhí)行器130也可以配置為基于由測(cè)試執(zhí)行器130對(duì)特定代碼更改執(zhí)行的測(cè)試結(jié)果向代碼覆蓋服務(wù)120報(bào)告狀態(tài)。例如,響應(yīng)于測(cè)試執(zhí)行器130確定代碼更改通過(guò)了所有測(cè)試,測(cè)試執(zhí)行器130可以向代碼覆蓋服務(wù)120發(fā)送“0K”狀態(tài)。在另一示例中,響應(yīng)于測(cè)試執(zhí)行器130確定代碼更改未通過(guò)一個(gè)或者多個(gè)測(cè)試或者確定對(duì)代碼更改不能執(zhí)行所請(qǐng)求的測(cè)試,測(cè)試執(zhí)行器130可以向代碼覆蓋服務(wù)120發(fā)送“NOT 0K”狀態(tài)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)120可以將從測(cè)試執(zhí)行器130接收的狀態(tài)記錄在代碼覆蓋儲(chǔ)存器135中。
[0086]代碼覆蓋服務(wù)120可以配置為請(qǐng)求通過(guò)通知服務(wù)145生成和傳送電子郵件。例如,代碼覆蓋服務(wù)120可以請(qǐng)求通知服務(wù)145發(fā)送電子郵件(例如,發(fā)送至一個(gè)或者多個(gè)授權(quán)的或者指定的接收方),該電子郵件包含了(例如,由測(cè)試執(zhí)行器130)已經(jīng)對(duì)其執(zhí)行了測(cè)試的代碼更改的報(bào)告和由此確定的總體代碼覆蓋計(jì)算(例如,百分比)。根據(jù)至少一個(gè)實(shí)施例,響應(yīng)于向通知服務(wù)145發(fā)送電子郵件通知的請(qǐng)求,代碼覆蓋服務(wù)120可以從通知服務(wù)145接收狀態(tài)報(bào)告。例如,如果通知服務(wù)145成功發(fā)送了所請(qǐng)求的電子郵件,那么代碼覆蓋服務(wù)120可以從通知服務(wù)145接收“0K”狀態(tài),以及,如果通知服務(wù)145未能發(fā)送所請(qǐng)求的電子郵件,那么代碼覆蓋服務(wù)120可以接收“NOT 0K”狀態(tài)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)120可以將從通知服務(wù)145接收的狀態(tài)記錄在代碼覆蓋儲(chǔ)存器135中。
[0087]根據(jù)一個(gè)或者多個(gè)實(shí)施例,代碼覆蓋服務(wù)120也可以配置為向代碼審查服務(wù)150推送代碼覆蓋數(shù)據(jù)(例如,基于從測(cè)試執(zhí)行器130接收的測(cè)試結(jié)果的代碼覆蓋計(jì)算),以將其顯示在與代碼審查服務(wù)150相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中。例如,代碼覆蓋服務(wù)120可以配置為生成對(duì)特定代碼更改的代碼覆蓋結(jié)果的概要并且將該概要發(fā)布在與代碼審查服務(wù)150相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中。
[0088]圖2圖示了用于監(jiān)測(cè)輸入至代碼審查系統(tǒng)的代碼更改并且對(duì)該代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以生成對(duì)于該代碼更改的對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的示例過(guò)程。根據(jù)至少一個(gè)實(shí)施例,該過(guò)程200可以由配置為運(yùn)行一個(gè)或者多個(gè)服務(wù)器的分布式系統(tǒng)(例如,圖1所示的系統(tǒng)100)來(lái)執(zhí)行。
[0089]在框205中,程序可以是監(jiān)測(cè)關(guān)于代碼客戶端中的更改的通知。例如,代碼覆蓋服務(wù)可以配置為監(jiān)測(cè)用于通知的實(shí)用程序,該通知是關(guān)于由開(kāi)發(fā)者進(jìn)行的源代碼更改(例如,在圖1所示的示例系統(tǒng)100中,代碼覆蓋服務(wù)120可以監(jiān)測(cè)從代碼覆蓋客戶端115接收的關(guān)于通過(guò)代碼客戶端105提交的代碼更改的通知)。根據(jù)至少一個(gè)實(shí)施例,在框205中監(jiān)測(cè)到的通知可以是實(shí)用程序生成的通知,該實(shí)用程序配置為從管理開(kāi)發(fā)者正從事的源代碼的快照的應(yīng)用接收代碼更改請(qǐng)求。
[0090]在框210中,基于在框205中執(zhí)行的該監(jiān)測(cè),可以檢測(cè)到關(guān)于代碼更改的通知。例如,代碼覆蓋服務(wù)可以基于從代碼覆蓋服務(wù)客戶端接收的通知,檢測(cè)到代碼更改(例如,在圖1所示的示例系統(tǒng)100中,代碼覆蓋服務(wù)120可以基于從代碼覆蓋服務(wù)客戶端115接收的通知,檢測(cè)到代碼更改)。
[0091]在框215中,可以對(duì)在框210中檢測(cè)到的代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試。例如,可以使用本領(lǐng)域技術(shù)人員已知的測(cè)試覆蓋計(jì)算工具對(duì)代碼更改(例如,由圖1所示的示例系統(tǒng)100中的測(cè)試執(zhí)行器130)執(zhí)行一個(gè)或者多個(gè)覆蓋測(cè)試。
[0092]在框220中,可以基于在框215中執(zhí)行的測(cè)試,對(duì)代碼更改生成測(cè)試覆蓋數(shù)據(jù)(例如,代碼覆蓋計(jì)算)。根據(jù)至少一個(gè)實(shí)施例,代碼覆蓋服務(wù)可以利用從在框215中對(duì)代碼更改執(zhí)行的測(cè)試中所獲得的結(jié)果,來(lái)生成對(duì)于代碼更改的代碼覆蓋計(jì)算(例如,百分比)(例如,在如圖1所示的示例系統(tǒng)100中,代碼覆蓋服務(wù)120可以利用從測(cè)試執(zhí)行器130中獲得的結(jié)果來(lái)生成代碼覆蓋計(jì)算)
[0093]在框225中,可以將通知發(fā)送給與代碼更改相關(guān)聯(lián)的一個(gè)或者多個(gè)接收方(例如,用戶、系統(tǒng)、服務(wù)等),其中,該通知指示了或者包括在框220中生成的測(cè)試覆蓋數(shù)據(jù)。例如,在框225中,可以向一個(gè)或者多個(gè)授權(quán)的或者指定的接收方發(fā)生電子郵件,其中,該電子郵件包含了在框215中對(duì)其執(zhí)行了測(cè)試的代碼更改的報(bào)告、以及基于測(cè)試結(jié)果在框220中確定的總體代碼覆蓋計(jì)算。根據(jù)至少一個(gè)實(shí)施例,可以在框225中發(fā)送的通知可以是將代碼更改的代碼覆蓋結(jié)果的概要發(fā)布在與代碼審查服務(wù)(例如,圖1所示的示例系統(tǒng)100中的代碼審查服務(wù)150)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中。
[0094]圖3圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的用于檢測(cè)輸入至代碼審查系統(tǒng)的新代碼更改,監(jiān)測(cè)該代碼更改的更改(例如,如代碼審查過(guò)程的結(jié)果),并且基于對(duì)該代碼更改所做出的更改(例如代碼更改的進(jìn)展)對(duì)代碼更改執(zhí)行更新的測(cè)試覆蓋計(jì)算的示例過(guò)程。根據(jù)至少一個(gè)實(shí)施例,該過(guò)程300可以由配置為運(yùn)行一個(gè)或者多個(gè)服務(wù)器的分布式系統(tǒng)(例如,圖1所示的系統(tǒng)1 O)來(lái)執(zhí)行。
[0095]在框305中,可以檢測(cè)到至代碼審查系統(tǒng)的傳入的代碼更改。例如,開(kāi)發(fā)者可以將源代碼更改(例如,為了進(jìn)行審查和/或得到批準(zhǔn))提交至代碼審查系統(tǒng),并且該提交可以由該系統(tǒng)的部件檢測(cè)到(例如,在如圖1所示的示例系統(tǒng)100中,可以由代碼覆蓋服務(wù)120基于由代碼覆蓋服務(wù)客戶端115生成的通知,檢測(cè)到客戶端代碼150中開(kāi)發(fā)者所進(jìn)行的代碼更改)。
[0096]在框310中,可以對(duì)于在框305中檢測(cè)到的傳入的代碼更改先前是否已經(jīng)請(qǐng)求了覆蓋計(jì)算(例如,測(cè)試覆蓋測(cè)量),進(jìn)行確定。根據(jù)至少一個(gè)實(shí)施例,基于與傳入的代碼更改相關(guān)聯(lián)的各種數(shù)據(jù),可以做出在框310中的確定。例如,在框305中檢測(cè)到的代碼更改可以包括代碼客戶端標(biāo)識(shí)符、代碼更改標(biāo)識(shí)符、用戶名、包括將運(yùn)行的測(cè)試列表和將插粧的文件模式的項(xiàng)目配置、或者其任何組合。與代碼更改相關(guān)聯(lián)的數(shù)據(jù)可以用于,例如,確定對(duì)于該代碼更改(例如,在圖1所示的示例系統(tǒng)100的測(cè)試結(jié)果儲(chǔ)存器140中)是否存儲(chǔ)了任何覆蓋測(cè)試結(jié)果。
[0097]如果在框310中確定先前尚未對(duì)傳入的代碼更改請(qǐng)求覆蓋測(cè)量,那么該過(guò)程可以結(jié)束。根據(jù)至少一個(gè)實(shí)施例,如果在框310中確定當(dāng)前尚不存在對(duì)代碼更改的覆蓋測(cè)量(例如,在圖1所示的示例系統(tǒng)100的測(cè)試結(jié)果儲(chǔ)存器140中),那么,可以根據(jù)圖2中圖示的以及上面所述的示例過(guò)程200,對(duì)代碼更改執(zhí)行測(cè)試覆蓋計(jì)算,以生成對(duì)于代碼更改的對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)。
[0098]另一方面,如果在框305中確定先前已經(jīng)對(duì)于傳入的代碼更改請(qǐng)求了覆蓋測(cè)量,那么,在框315中,可以將傳入的代碼更改與先前已經(jīng)測(cè)試了覆蓋的代碼更改進(jìn)行比較。例如,在框315中,可以將傳入的代碼更改的快照(例如,在圖1所示的示例系統(tǒng)100中,由代碼客戶端105提供至代碼覆蓋服務(wù)客戶端115的代碼更改的快照)與先前測(cè)試的代碼更改的快照(例如,存儲(chǔ)在圖1所示的示例系統(tǒng)100的代碼更改服務(wù)器110中)進(jìn)行比較,以確定代碼更改已經(jīng)被修改的程度。
[0099]基于在框315中執(zhí)行的比較,可以在框320中對(duì)是否需要對(duì)代碼更改進(jìn)行更新的測(cè)試覆蓋計(jì)算(測(cè)量),進(jìn)行確定。根據(jù)至少一個(gè)實(shí)施例,可以在框320中進(jìn)行的確定可以基于根據(jù)先前對(duì)其測(cè)試的版本和在框305中檢測(cè)到的版本代碼更改已經(jīng)演進(jìn)(例如,已經(jīng)修改或者修訂)的程度。例如,可以確定新的代碼更改對(duì)于保證新的/更新的測(cè)試覆蓋計(jì)算的性能是足夠顯著的,其中,通過(guò)以下示例方式中的至少一種新代碼更改的快照不同于先前測(cè)試的代碼更改的快照:(I)已經(jīng)向代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;(2)已經(jīng)從代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;(3)除了測(cè)試代碼之外,已經(jīng)向代碼更改添加了超過(guò)閾值量(例如,10%)的新代碼;(4)除了測(cè)試代碼之外,已經(jīng)從代碼更改中去除了超過(guò)閾值量(例如,10%)的代碼;(5)(1)-(4)的任何組合。應(yīng)該理解,除了或者代替上述示例因素,在框中320中確定在框305中檢測(cè)到的代碼更改的新版本是否對(duì)保證新的/更新的測(cè)試覆蓋計(jì)算足夠顯著時(shí),也可以考慮很多其它因素。
[0100]如果在框320中確定不需要對(duì)特定代碼更改進(jìn)行更新的測(cè)試覆蓋計(jì)算,那么該過(guò)程可以返回至框305并且重復(fù)。另一方面,如果基于在框315中執(zhí)行的比較,在框320中確定代碼更改已經(jīng)演進(jìn)至足以保證更新的覆蓋計(jì)算,那么該過(guò)程可以前進(jìn)至框325。
[0101]根據(jù)至少一個(gè)實(shí)施例,在示例過(guò)程300中剩余的框325、330和335可以包括分別與圖2所示以及以上詳細(xì)描述的示例過(guò)程200中的框215、220和225的操作相似的操作。因此,為了簡(jiǎn)潔起見(jiàn),將不再進(jìn)一步描述示例過(guò)程300中的框325、330、和335的操作。
[0102]圖4是圖示了根據(jù)本文描述的一個(gè)或者多個(gè)實(shí)施例的被布置用于監(jiān)測(cè)輸入至代碼審查系統(tǒng)的代碼更改并且對(duì)代碼更改執(zhí)行測(cè)試覆蓋計(jì)算以生成對(duì)于代碼更改的對(duì)應(yīng)的測(cè)試覆蓋數(shù)據(jù)的示例性計(jì)算機(jī)(400)的高層次框圖。在非?;A(chǔ)的配置(401)中,計(jì)算裝置(400)通常包括一個(gè)或者多個(gè)處理器(410)和系統(tǒng)存儲(chǔ)器(420)。存儲(chǔ)器總線(430)能夠用于在處理器(410)與系統(tǒng)存儲(chǔ)器(420)之間進(jìn)行通信。
[0103]依據(jù)所需的配置,處理器(410)能夠是任何類型,包括但不限于:微處理器(μΡ)、微控制器(μθ)、數(shù)字信號(hào)處理器(DSP)、或其任何組合。處理器(410)可以包括諸如級(jí)別I緩存(411)和級(jí)別2緩存(412)的一個(gè)或者多個(gè)級(jí)別緩存、處理器核(413)和寄存器(414)。處理器核(413)可以包括算數(shù)邏輯單元(ALU)、浮點(diǎn)單元(FPU)、數(shù)字信號(hào)處理核(DSP核)、或其任何組合。存儲(chǔ)器控制器(416)也可以與處理器(410) —起使用,或者在一些實(shí)施方式中,存儲(chǔ)器控制器(415)可以是處理器(410)的內(nèi)部部分。
[0104]依據(jù)所需的配置,系統(tǒng)存儲(chǔ)器(420)可以是任何類型,包括但不限于:易失性存儲(chǔ)器(諸如,RAM)、非易失性存儲(chǔ)器(諸如R0M、閃存等)、或其任何組合。系統(tǒng)存儲(chǔ)器(420)通常包括操作系統(tǒng)(421)、一個(gè)或者多個(gè)應(yīng)用(422)、和程序數(shù)據(jù)(424)。應(yīng)用(422)可以包括提供對(duì)于代碼更改(例如,提交至諸如圖1所示的示例代碼審查系統(tǒng)100的代碼審查系統(tǒng)的代碼更改)的測(cè)試覆蓋數(shù)據(jù)的服務(wù)(423)。程序數(shù)據(jù)(424)可以包括存儲(chǔ)指令,當(dāng)該存儲(chǔ)指令由一個(gè)或者多個(gè)處理裝置執(zhí)行時(shí),該存儲(chǔ)指令實(shí)施提供對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的服務(wù)。此外,根據(jù)至少一個(gè)實(shí)施例,程序數(shù)據(jù)(424)可以包括代碼更改和測(cè)試結(jié)果數(shù)據(jù)(425),該測(cè)試結(jié)果數(shù)據(jù)(425)可以包括作為代碼審查過(guò)程的結(jié)果的關(guān)于對(duì)代碼更改進(jìn)行的一個(gè)或者多個(gè)更改的數(shù)據(jù),以及關(guān)于(通過(guò)提供對(duì)于代碼更改的測(cè)試覆蓋數(shù)據(jù)的服務(wù)(423))對(duì)代碼更改執(zhí)行的測(cè)試覆蓋計(jì)算的數(shù)據(jù)。在一些實(shí)施例中,應(yīng)用(422)可以布置為在操作系統(tǒng)(421)上使用程序數(shù)據(jù)(424)來(lái)操作。
[0105]計(jì)算裝置(400)可以具有附加特征或者功能,以及促進(jìn)基礎(chǔ)配置(401)與任何需要的裝置和接口之間的通信的附加接口。
[0106]系統(tǒng)存儲(chǔ)器(420)是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括,但不限于,RAM、R0M、EEPR0M、閃存或者其它存儲(chǔ)技術(shù)、⑶-R0M、數(shù)字多功能盤(DVD)或者其它光存儲(chǔ)裝置、磁帶盒、磁帶、磁盤存儲(chǔ)或者其它磁存儲(chǔ)裝置、或者可以用于存儲(chǔ)所需信息并且可以由計(jì)算裝置400訪問(wèn)的任何其它介質(zhì)。任何這種計(jì)算存儲(chǔ)介質(zhì)可以是裝置(400)的部分。
[0107]計(jì)算裝置(400)可以實(shí)施為小型便攜式(或者移動(dòng))電子裝置的一部分,諸如手機(jī)、智能手機(jī)、個(gè)人數(shù)據(jù)助理(PDA)、個(gè)人媒體播放器裝置、平板計(jì)算機(jī)(平板)、無(wú)線網(wǎng)絡(luò)監(jiān)視裝置、個(gè)人耳機(jī)裝置、應(yīng)用專用裝置、或者包括任何以上功能的混合裝置。計(jì)算裝置(400)也可以實(shí)現(xiàn)為個(gè)人計(jì)算機(jī),包括膝上型計(jì)算機(jī)和非膝上型計(jì)算機(jī)配置。
[0108]經(jīng)由使用框圖、流程圖、和/或示例,前述的詳細(xì)描述已經(jīng)闡述了裝置和/或過(guò)程的各種實(shí)施例。在這種框圖、流程圖、和/或示例的范圍內(nèi)包含一個(gè)或者多個(gè)功能和/或操作,本領(lǐng)域的技術(shù)人員將理解,在這種框圖、流程圖、或者示例中的每個(gè)功能和/或操作能夠各自地和/或共同地通過(guò)大范圍的硬件、軟件、固件、或其實(shí)質(zhì)上任何組合來(lái)實(shí)施。在一個(gè)實(shí)施例中,本文描述的主題的多個(gè)部分可以經(jīng)由專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、數(shù)字信號(hào)處理器(DSP)或者其它集成格式來(lái)實(shí)施。然而,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)至IJ,本文所公開(kāi)的實(shí)施例的一些方面能夠整體地或者部分地等效實(shí)施在集成電路中,作為在一個(gè)或者多個(gè)計(jì)算機(jī)上運(yùn)行的一個(gè)或者多個(gè)計(jì)算機(jī)程序、作為在一個(gè)或者多個(gè)處理器上運(yùn)行的一個(gè)或者多個(gè)程序、作為固件、或作為其實(shí)質(zhì)上任何組合,并且將認(rèn)識(shí)到,根據(jù)本公開(kāi),設(shè)計(jì)軟件和/或固件的電路系統(tǒng)和/或編寫軟件和/或固件的代碼應(yīng)在本領(lǐng)域的技術(shù)人員所掌握的技術(shù)內(nèi)。另外,本領(lǐng)域的技術(shù)人員將了解,本文描述的主題的機(jī)制能夠分配為各種形式的程序產(chǎn)品,并且將了解,本文描述的主題的說(shuō)明性實(shí)施例的適用與用于實(shí)際執(zhí)行該分配的非暫時(shí)性信號(hào)承載介質(zhì)的特定類型無(wú)關(guān)。非暫時(shí)性信號(hào)承載介質(zhì)的示例包括但不限于以下:可記錄式介質(zhì),諸如,軟盤、硬盤驅(qū)動(dòng)器、壓縮盤(CD)、數(shù)字視頻盤(DVD)、數(shù)字磁帶、計(jì)算機(jī)存儲(chǔ)器等;以及,傳輸式介質(zhì),諸如,數(shù)字和/或模擬通信介質(zhì)(例如,光纖電纜、波導(dǎo)、有線通信鏈路、無(wú)線通信鏈路等)。
[0109]關(guān)于本文中實(shí)質(zhì)上使用了任何復(fù)數(shù)和/或單數(shù)術(shù)語(yǔ),本領(lǐng)域的技術(shù)人員可以按照適用于上下文和/或本申請(qǐng),將復(fù)數(shù)轉(zhuǎn)化為單數(shù),和/或?qū)螖?shù)轉(zhuǎn)化為復(fù)數(shù)。為了明晰起見(jiàn),本文可以清楚闡述各種單/復(fù)數(shù)排列。
[0110]因此,已經(jīng)描述了主題的具體實(shí)施例。其它實(shí)施例在以下權(quán)利要求書的范圍內(nèi)。在一些情況下,可以按照不同的順序執(zhí)行權(quán)利要求書中列舉的動(dòng)作,并且仍然可以獲得所需的效果。另外,附圖中描述的過(guò)程并不一定要求所示的特定順序或者依次的順序來(lái)實(shí)現(xiàn)所需的結(jié)果。在某些實(shí)施方式中,多任務(wù)處理和并行處理可以是有利的。
【主權(quán)項(xiàng)】
1.一種用于提供代碼更改的測(cè)試覆蓋數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)方法,所述方法包括: 檢測(cè)(210)至代碼審查系統(tǒng)的傳入代碼更改; 對(duì)所述傳入代碼更改執(zhí)行(215) —個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算; 基于所執(zhí)行的所述一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成(220)所述代碼更改的測(cè)試覆蓋數(shù)據(jù);以及 將對(duì)于所述代碼更改而生成的所述測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送(225)至與所述代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括: 為有關(guān)代碼客戶端中的更改的通知而監(jiān)測(cè)(205)所述代碼審查系統(tǒng);以及 基于有關(guān)所述代碼客戶端中的更改的所接收通知,檢測(cè)(210)所述傳入代碼更改。3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括: 確定(310)對(duì)所述傳入代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算;以及 基于確定所述傳入代碼更改不同于所述代碼更改的先前版本,對(duì)所述傳入代碼更改執(zhí)行(325) —個(gè)或者多個(gè)更新測(cè)試覆蓋計(jì)算。4.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中,確定對(duì)所述傳入代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算是基于與所述傳入代碼更改和所述傳入代碼更改的所述先前版本兩者相關(guān)聯(lián)的代碼更改標(biāo)識(shí)符。5.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中,確定所述傳入代碼更改不同于所述代碼更改的先前版本是基于所述傳入代碼更改的快照與所述傳入代碼更改的所述先前版本的快照之間的比較。6.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括: 將所述傳入代碼更改的快照與所述代碼更改的所述先前版本的快照進(jìn)行比較(315);以及 基于所述比較,按照以下方式中的至少一種來(lái)確定所述傳入代碼更改不同于所述代碼更改的所述先前版本:已經(jīng)向所述代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;已經(jīng)從所述代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;已經(jīng)向所述代碼更改添加了除測(cè)試代碼外的超過(guò)閾值量的新代碼;以及已經(jīng)從所述代碼更改中去除了除測(cè)試代碼外的超過(guò)閾值量的代碼。7.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中,與所述代碼更改相關(guān)聯(lián)的至少一個(gè)接收方包括下述中的至少一個(gè):所述代碼更改的作者、所述代碼更改的審查者、和可以訪問(wèn)所述代碼更改所通過(guò)的代碼審查服務(wù)。8.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,其中,發(fā)送對(duì)于所述代碼更改而生成的所述測(cè)試覆蓋數(shù)據(jù)的通知包括:在與所述代碼審查系統(tǒng)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中發(fā)布通知,其中,所發(fā)布的通知能由與所述代碼更改相關(guān)聯(lián)的所述至少一個(gè)接收方訪問(wèn)。9.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)實(shí)現(xiàn)方法,進(jìn)一步包括: 接收對(duì)于提交至所述代碼審查系統(tǒng)的代碼更改的更新測(cè)試覆蓋計(jì)算的請(qǐng)求,其中,在檢測(cè)到所提交的代碼更改之前,接收所述更新測(cè)試覆蓋計(jì)算的請(qǐng)求;以及 響應(yīng)于所述請(qǐng)求,對(duì)所提交的代碼更改執(zhí)行一個(gè)或者多個(gè)更新測(cè)試覆蓋計(jì)算。10.—種用于提供代碼更改的測(cè)試覆蓋數(shù)據(jù)的系統(tǒng)(100),所述系統(tǒng)包括: 一個(gè)或者多個(gè)處理器;以及 耦合至所述一個(gè)或者多個(gè)處理器的非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),所述非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)具有存儲(chǔ)在其上的指令,當(dāng)所述指令由所述一個(gè)或者多個(gè)處理器執(zhí)行時(shí),所述指令使所述一個(gè)或者多個(gè)處理器執(zhí)行操作,所述操作包括: 檢測(cè)至代碼審查服務(wù)(150)的傳入代碼更改; 對(duì)所述傳入代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算; 基于所執(zhí)行的所述一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成所述代碼更改的測(cè)試覆蓋數(shù)據(jù);以及 將生成的所述代碼更改的測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送至與所述代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 為有關(guān)代碼客戶端(105)中的更改的通知而監(jiān)測(cè)所述代碼審查服務(wù);以及 基于有關(guān)所述代碼客戶端中的更改的所接收通知,檢測(cè)所述傳入代碼更改。12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 確定對(duì)所述傳入代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算;以及基于確定所述傳入代碼更改不同于所述代碼更改的先前版本,對(duì)所述傳入代碼更改執(zhí)行一個(gè)或者多個(gè)更新測(cè)試覆蓋計(jì)算。13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,確定對(duì)所述傳入代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算是基于與所述傳入代碼更改和所述傳入代碼更改的先前版本兩者相關(guān)聯(lián)的代碼更改標(biāo)識(shí)符。14.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,確定所述傳入代碼更改不同于所述代碼更改的先前版本是基于所述傳入代碼更改的快照與所述傳入代碼更改的所述先前版本的快照之間的比較。15.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 將所述傳入代碼更改的快照與所述代碼更改的所述先前版本的快照進(jìn)行比較;以及 基于所述比較,按照以下方式中的至少一種來(lái)確定所述傳入代碼更改不同于所述代碼更改的所述先前版本:已經(jīng)向所述代碼更改添加了一個(gè)或者多個(gè)新的測(cè)試;已經(jīng)從所述代碼更改中去除了一個(gè)或者多個(gè)測(cè)試;已經(jīng)向所述代碼更改添加了除測(cè)試代碼外的超過(guò)閾值量的新代碼;以及已經(jīng)從所述代碼更改中去除了除測(cè)試代碼外的超過(guò)閾值量的代碼。16.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,與所述代碼更改相關(guān)聯(lián)的所述至少一個(gè)接收方包括下述中的至少一個(gè):所述代碼更改的作者、所述代碼更改的審查者、和可以訪問(wèn)所述代碼更改所通過(guò)的代碼審查服務(wù)。17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 在與所述代碼審查服務(wù)相關(guān)聯(lián)的用戶界面屏幕的通知區(qū)域中發(fā)布通知,其中,所發(fā)布的通知能由與所述代碼更改相關(guān)聯(lián)的所述至少一個(gè)接收方訪問(wèn)。18.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 接收對(duì)于提交至所述代碼審查系統(tǒng)的代碼更改的更新測(cè)試覆蓋計(jì)算的請(qǐng)求,其中,在檢測(cè)到所提交的代碼更改之前,接收所述更新測(cè)試覆蓋計(jì)算的請(qǐng)求;以及 響應(yīng)于所述請(qǐng)求,對(duì)所提交的代碼更改執(zhí)行一個(gè)或者多個(gè)更新測(cè)試覆蓋計(jì)算。19.一種或者多種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),所述非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令,當(dāng)所述計(jì)算機(jī)可執(zhí)行指令由一個(gè)或者多個(gè)處理器執(zhí)行時(shí),使所述一個(gè)或者多個(gè)處理器執(zhí)行操作,所述操作包括: 為有關(guān)代碼客戶端中的更改的通知而監(jiān)測(cè)代碼審查系統(tǒng); 基于有關(guān)所述代碼客戶端中的更改的所接收通知,檢測(cè)至所述代碼審查系統(tǒng)的傳入代碼更改; 對(duì)所述傳入代碼更改執(zhí)行一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算; 基于所執(zhí)行的所述一個(gè)或者多個(gè)測(cè)試覆蓋計(jì)算,生成所述代碼更改的測(cè)試覆蓋數(shù)據(jù);以及 將所生成的所述代碼更改的所述測(cè)試覆蓋數(shù)據(jù)的通知發(fā)送至與所述代碼更改相關(guān)聯(lián)的至少一個(gè)接收方。20.根據(jù)權(quán)利要求19所述的一種或者多種非暫時(shí)性計(jì)算機(jī)可讀介質(zhì),其中,使所述一個(gè)或者多個(gè)處理器執(zhí)行進(jìn)一步的操作,所述進(jìn)一步的操作包括: 確定對(duì)所述傳入代碼更改的先前版本執(zhí)行了測(cè)試覆蓋計(jì)算;以及 基于確定所述傳入代碼更改不同于所述代碼更改的先前版本,對(duì)所述傳入代碼更改執(zhí)行一個(gè)或者多個(gè)更新測(cè)試覆蓋計(jì)算。
【文檔編號(hào)】G06F11/36GK105830037SQ201480068403
【公開(kāi)日】2016年8月3日
【申請(qǐng)日】2014年12月11日
【發(fā)明人】馬爾科·伊萬(wàn)科維奇, 維奧拉·卡塔林·彼得拉, 帕維爾·馬齊尼亞克
【申請(qǐng)人】谷歌公司