要分析一個專案的程式碼品質的面相很多,透過工具自動化找出專案中可以修正的地方,以及潛在的程式碼弱點,這對開發人員來說是非常有幫助的,Ndepend 這套工具實現了許多幫助開發人員檢測程式碼的功能,從透過 Code Metrics 測量專案品質,到分析程式碼架構的功能,對於越來越大的專案開發者來說,能利用 NDepend 幫我們做品質分析,維持良好的程式碼品質,這篇來分享最近的使用心得。
Ndepend 提供了兩種使用方式,他有可獨立執行的程式,讓你不用開啟 Visual Studio 就可以檢測程式碼品質,這對於專注在檢測各個專案品質的情境下相當方便,畢竟開啟地表上最強的 IDE 也是需要不少系統資源。
當然,對於大多數專案開發者而言,當下都只會專注在一個專案上,因此在 Visual Studio 中隨時查看 Ndepend 儀表板,也是相當便利的選擇。
從上面的畫面就可以看的出來,Ndepend 所提供的儀表板內容相當豐富,有以下 9 個面向:
Lines of Code
專案規模Types
類別數量Comment
註解Debt
技術債Coverage
測試覆蓋率Method Complexity
方法複雜度Quality Gates
品質閥Rules
品質規則Issues
發現問題
其實每個指標都滿重要的,一般來說最常看的指標莫過於 Issues
發現問題這個項目,而 Ndepend 內建的品質規則非常的豐富,有些是關於語言的使用細節規則,細細查看這些規則有助於精進語言的使用方式,相當有意思,不過會需要多一點時間去思考就是了。
Ndepend 的品質紀錄架構有一點很不錯,從下圖的儀錶板中可以看到關於時間的資訊,以及技術債或 Issues 的變化,而這些歷史紀錄是怎麼被記錄的呢?
由於 Ndepend 本身是另外一個 .ndproj
專案檔,這專案檔會包含專案資訊、要掃描的品質規則和分析紀錄。沒錯,掃描後的分析紀錄是用文件的方式儲存在專案資料夾中,相關資訊有以下 4 種檔案:
.ndproj
以 XML 格式儲存的專案檔,內容包含 Ndepend 的專案資訊及分析設定.ndar
為二進制格式儲存的分析後結果,會儲存在專案資料夾中的NDependOut
資料夾中,預設以每天為單位做儲存..ndrules
專案要使用的品質規則- Report Files 以 HTML 格式產出的品質報告
由於 Ndepend 不需要額外像是資料庫的資源去儲存歷史紀錄,Ndepend 將其結果以檔案的方式產出,這樣有幾個好處:
- 執行速度更快,直接本機執行掃描及查看報表
- 不需要額外資源即可儲存歷史紀錄
- 可從版控庫中直接存取團隊成員產生的品質報告
當然,Ndepend 所產出的檔案你可以視需求提交版控庫中,這你可以簡單用 gitignore
的設定做到排除的動作。如果可以接受版控庫中包含專案檢測報告類的相關資訊,將這些檔案提交到版控庫中還保存歷史紀錄,是一個不錯的解決方案。
如果有些東西不想提交,但又想保留或共用,也是可以將該檔案複製到像是網路磁碟之類的位置,達到保存和共用的目的。
後記
Ndepend 掃描程式碼品質的功能強大之外,還有推出 Azure DevOps Extension 使之整合進 CI/CD 之中,直接在 Azure DevOps 上呈現品質報告結果,讓開發結果更透明,讓整個團隊的人都能一目了然的看到該專案的狀態。
參考資料: