度量和提高代碼質量

jopen 8年前發布 | 7K 次閱讀 覆蓋率測試 持續集成 Github

Aigle Practitioners 2016 大會上, Boris Modylevsky 將做一場關于度量和提高代碼質量的演講。

InfoQ就如下內容對他進行了采訪:度量代碼質量的重要性及如何使用度量提高代碼質量,將靜態代碼分析工具集成進持續集成過程,測試覆蓋率分析和測試自動化,將代碼分析工具集成進持續集成過程以及測試覆蓋率分析可以帶來什么好處。

InfoQ:您能詳細介紹下度量代碼質量的重要性嗎?

Modylevsky:作為軟件開發人員,對于我們的軟件產品,我們有很多可以說的。它是否可以用于特定的場景,它是否能夠在受到某些限制時很好的運行,它是否能夠從災難中恢復過來。所有這些問題都沒有回答我們的代碼質量多好或多壞的問題。關于代碼質量,有許多定義,但通常,人們所說的“高質量代碼”是指具備靈活性、可測試性和可讀性的代碼。如果我們可以評價我們的代碼有多好,那么我們就可以更準確地估計后續任務的工作量,或者為了提高代碼質量,分配時間,用于減少技術債務。因此,通過度量內部代碼質量,我們可以提高外部質量,結果就是提高了軟件產品的質量。

InfoQ:關于如何度量代碼質量以及如何使用代碼度量提高代碼質量,您能舉例說明一下嗎?

Modylevsky:我曾經參加過一個混合了遺留代碼和新代碼的項目。遺留代碼需要重構,而且沒有經過單元測試,而新代碼是從頭開始寫的,經過了良好的設計,干凈且經過測試。問題是,新代碼同遺留代碼混在了一起,很難確定哪塊代碼需要改進。當我們開始度量代碼質量時,哪部分代碼需要改進就非常清楚和明顯了。度量代碼質量幫助我們評估技術債務,我們可以分配資源用于重構。

InfoQ:您是如何將靜態代碼分析集成到持續集成過程和工具的?

Modylevsky:有許多現成的靜態代碼分析工具,重要的是選擇最符合你的需求的工具。目前,我正致力于一個流程解決方案的開發,實現QualiSystems CloudShell和VMWare VCenter的集成。該項目是用Python編寫的,托管在Github的一個公共庫上。項目鏈接為 https://github.com/QualiSystems/vCenterShell

對于這個特定的項目,我一直在找配置最少,能與Github很好地集成,同時又是作為服務提供的工具。對于靜態代碼分析,我選擇了Code Climate,它可以快速準確地定位一些重復的代碼和潛在的Bug。不用說,它的配置非常簡單,而且對公共庫免費。

InfoQ:關于測試覆蓋率分析和測試自動化,您能分享下您在這方面的經驗嗎?

Modylevsky:通常,代碼覆蓋率分析用于單元測試時非常有效。它可以識別出一些沒有測到的邊緣情況,或者找出測試覆蓋率不夠的大段代碼。至于測試自動化,例如,端到端測試,即使有價值,價值也要小一些。代碼覆蓋率很高的自動化測試也不見得能夠做到很好地測試所有的邊緣情況。

InfoQ:將代碼分析集成進持續集成過程,測試覆蓋率分析,您從中獲得了什么好處?

Modylevsky:在持續集成過程中進行代碼分析和測試覆蓋率分析很有價值。首先,它可以顯示出每個指標隨時間的變化趨勢。其次,如果某個指標相對于上一次構建時降低了,那么它可以使構建失敗。例如,如果實現了Github與Coveralls.io的良好集成,就可以將代碼覆蓋率分析配置為合并Pull請求的必備檢查。這樣,就可以確保持續改進,防止代碼質量隨著時間下降。

InfoQ:如果人們在尋找改進產品質量的方法,您能給他們提些建議嗎?

Modylevsky:將這些工具作為一種游戲展示給開發團隊,當這些指標提升時,就可以獲得更多的分數。計量分數,并允許開發人員互相競爭。做一個儀表板,展示得分高的人,并顯示在公司里的大屏幕上。

讓人們為他們的代碼自豪!

查看英文原文: Measure and Improve Code Quality

 

來自: http://www.infoq.com/cn/news/2016/01/measure-improve-code-quality

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!