2011-02-04 35 views
8

在我提交更改之前,我想確保所有代碼都已經過測試,可以通過代碼覆蓋率報告自動或手動進行測試,但是存在大量遺留代碼,沒有自動化測試,並且不會受到我的更改的影響。將代碼覆蓋率鏈接到版本控制

是否有一種工具可以通過代碼覆蓋率報告交叉引用版本控制工具中的差異並確保所有已更改的內容都已運行?我認識到,在代碼覆蓋的情況下,這可能會給人一種虛假的安全感,就像這樣,甚至更多,但我認爲這值得嘗試。我使用git和PHP--我使用XCache的代碼coverager界面來瀏覽我已經運行的代碼,並且它很有用,但是如果某些東西能夠在git commit或push時自動運行,那將非常有用。

+0

投票遷移到程序員.stackexchange.com – Mchl 2011-02-05 18:03:08

回答

3

對於git差異,有一個工具名爲diff-cover,它可以檢查覆蓋率。它需要Cobertura XML覆蓋報告並與git diff的輸出進行比較。然後它報告差異中的行的覆蓋率信息。

考慮適當的覆蓋範圍xml文件,你可以使用這個命令來檢查你的變化相比master分支覆蓋:

$ diff-cover coverage.xml 

這也是很簡單的一個CI服務器集成,只要因爲它可以爲您提供您需要比較的提交,例如Jenkins中的$GIT_PREVIOUS_COMMIT

3

您可以設置一個continuous integration構建服務器(有很多excellent, free build servers)。其中一個構建步驟是運行代碼覆蓋。您可以將其設置爲忽略舊代碼並僅計算非舊代碼的覆蓋率。然後,如果覆蓋率爲< xx%,則將其設置爲失敗。如果覆蓋率從之前的版本降低,甚至會失敗。

+1

好主意;在每次簽入或推送時執行代碼覆蓋等繁重工作使版本控制更加痛苦,因此人們會討厭它。相反,不要讓人們擠進幹線;在連續集成服務器(我喜歡gitbuilder)中測試人員的分支,然後只有在持續集成批准它們之後纔將這些分支合併到主線。 – apenwarr 2011-02-05 19:31:08

+1

重讀我的問題,我強調錯了。重點不在於它在提交時運行並阻止我提交。關鍵是我可以確定我已經運行了所有我已經改變的代碼,然後再提交它。能夠在提交/推送時自動運行只是一個小小的獎勵,而不是真正的要求。 – rjmunro 2011-02-06 23:48:09