Alan Tsai 的學習筆記


學而不思則罔,思而不學則殆,不思不學則“網貸” 為現任微軟最有價值專家 (MVP)、微軟認證講師 (MCT) 、Blogger、Youtuber:記錄軟體開發的點點滴滴 著重於微軟技術、C#、ASP .NET、Azure、DevOps、Docker、AI、Chatbot、Data Science

[iThome第8屆鐵人賽 14]程式碼品質 - 介紹篇

我曾經聽過一個笑話,一個人到一家公司面試,面試官問他:「請問你如何保證/保持你的程式碼品質?」

這個年輕人回答:「我...我會在發現bug的時候把問題加班修好」。

其實這個有點悲哀,也說明了為什麼軟體工程師時常需要加班,因為當軟體越寫越複雜的時候,要保持程式的品質是需要一些事情,但是這些事情是什麼?有沒有可能進入到我們日常環境里?

這個就是接下來會介紹的部分,我們如何透過做CI把程式碼品質要做的事情整合進來。

如何保持程式碼品質?

保持程式碼品質其實本身就是一個很大的主題,在這個系列裡面不會介紹非常詳細,但是會針對幾個比較容易執行並且能夠整并到我們CI裡面的來做介紹。

基本上,有兩方面的程式碼品質:

  • 需要做事情的 - 寫測試
  • 工具分析型的 - 程式碼分析

透過測試保證程式碼品質

測試有很多種,最常聽到的應該就是單元測試(Unit Test)。

單元測試簡單的說是一個最小單元是否符合撰寫的邏輯。但是,一個最小單元裡面可能有不同的路徑,測試到底包含了多少路徑會影響到這個測試的完整性。

舉例來說,一個簡單的方法,有個if邏輯判斷,如果測試只測試了true的部分,但是沒有測試false的部分,只能保證說true是沒問題的,但是false那段完全沒有涵蓋到。因此,涵蓋率只有50%

所以,我們的測試涵蓋率到底多少,能說明這個測試的完整性有多少。

這個部分,我們將會透過使用一個Open source的專案叫做OpenCover來做這方面的檢測。

不需要每一個方法的涵蓋率都要100%

雖然說涵蓋率越高越好,但是並不代表所有涵蓋率都要100%,也不可能都到100%,所以這個參考就好。

程式碼分析

像在做資安掃描的時候一樣,有所謂的白箱測試,在程式碼品質的部分也有這種類型的工具,而這種工具又有分兩種:

  1. 程式碼風格分析 - 這個其實不和程式邏輯有關,而是和寫程式的風格有關。風格指的是,例如每一行內容要空幾行,怎麼寫註解之類。最出名的工具就是 StyleCop
  2. 程式碼分析 (static analyzer) - 這個其實和跑白箱測試是一樣概念,分析程式並且把有些寫法有問題的標註出來。例如,方法參數沒有用到這種,甚至Sql injection檢查。最出名的工具 就是 FxCop,再後來,整合進去到後來Visual studio 裡面的Code Analysis

這兩個最大不同之處在於,程式碼風格分析是對 原始碼做分析,程式碼分析 則是對 編譯過的dll做分析

結語

在這篇我們介紹了可以透過什麼工具來保持程式碼的品質,在接下來的章節裡面,我們將會開始介紹怎麼把這些工具整合進去到我們的build script裡面

下篇,先從測試涵蓋率,OpenCover開始介紹


如果文章對您有幫助,就請我喝杯飲料吧
街口支付QR Code
街口支付QR Code
台灣 Pay QR Code
台灣 Pay QR Code
Line Pay 一卡通 QR Code
Line Pay 一卡通 QR Code
街口支付QR Code
支付寶QR Code
街口支付QR Code
微信支付QR Code
comments powered by Disqus