2013-12-22 73 views
1

我是codecontracts的新手,我喜歡它,因爲它看起來很乾淨。在.net 4.0中使用codecontracts而不影響其他開發者

我不喜歡這樣一個事實,即我需要下載一個庫來使它工作。但是沒有理解爲什麼微軟沒有將它作爲整個框架的一部分。

我不想強迫其他同事下載它。

問題:

我可以下載擴展和動態鏈接庫添加到構建這樣,如果他們得到它的最新的或或工作,他們什麼都沒有做?

在使用Codecontracts內部部署應用程序之前有什麼需要了解的嗎?

感謝

回答

2

在.NET 4.0中,你不需要下載或添加任何庫添加到項目,以能夠合約代碼添加到您的代碼。您下載的部分是用於靜態分析和ccrewrite的工具。如果您使用的是舊版本的.NET,我建議您在開始使用代碼合同之前升級到4.0。

只要您只使用靜態分析的特點(靜態合同檢查),你可以使用它沒有與其他開發人員的開發過程直接干預(請繼續閱讀雖然)。在這種情況下,編譯或部署方面沒有任何變化。

如果您的意思是啓用執行運行時合同檢查,那麼您應該讓團隊中的每個人都使用這些工具。您還應該確保您的構建服務器能夠產生與本地Visual Studio相同的結果。這是因爲只要啓用該功能,代碼合同就會影響運行時行爲。顯然,代碼的行爲必須對每個人都是一樣的。

即使您現在決定僅使用靜態功能,但團隊中的每個人都無法使用這些工具存在缺點:他們無法正確維護使用代碼合同的代碼。重構可能需要更改合同,但沒有工具,他們就會在不經意間引入了很多,你將不得不如果你是唯一一個與工具來修復警告。

話雖這麼說,我已經在一個共享代碼庫的特定部分的代碼合同工作沒有使用它們的其他隊員沒有任何顯著的問題。當然,你還是應該談談您這同事,所以維護你的代碼時,他們不會遇到任何意外。當我使用代碼合約強制他們做一些額外的工作時,他們只是在我爲合同定義的接口中添加一個方法。契約位於實現該接口的抽象類中,這意味着它們必須將該新方法的最小實現添加到抽象類。

+0

嗨問題的.Net 2和4的混合物,感謝您的reply.This有我的立場幫助我更好地理解 – user9969

2

我已經在一個大型開發團隊中使用Code Contracts幾年,現在在代碼庫中的代碼量有限。

一旦你已經計算出你想從它使用什麼(例如重寫水平/靜態分析的配置等),我會建議卸載代碼契約,並在它的一個副本,而不是檢查到源代碼控制。這將使您的代碼在每個人的機器上構建,包括構建服務器。它還將允許您刪除未找到的「項目'xxx'的合同參考組件」。在不改變其他人的項目的情況下,選擇'Build'或'DoNotBuild'作爲項目設置中的合同參考「警告,同時也會降低重寫器無法運行的風險,因爲沒有安裝代碼合同就可以導致運行時出現警告你會錯過的是項目配置選項卡和代碼編輯器增強功能(如果它們首先爲你工作)

如果你在多個項目中使用它我還建議把你的標準化配置放在一個目標文件中,以便在它們之間共享它(使得配置標籤有點多餘)

如果你決定使用靜態分析,我會關閉你的普通配置即調試和釋放),否則你可能會減慢其他人的構建(第一次運行可能需要很長時間)。我有一個專門用於運行靜態分析的配置,所以當需要靜態分析的結果時,我可以輕鬆地在它之間進行切換。

BTW我們的代碼是沒有得到你只需要記住引用Microsoft.Contracts大會2.

相關問題