在軟體開發的生命週期中,讓產出的程式碼可以維持著高品質也是非常重要的一件事情,在每個公司可能都會使用不同的方式來讓產品的程式碼品質維持高水準,像是透過 Git 所提供的 Pull Request 功能,讓程式碼在合併回主要的 Branch 之前,透過 Code Review 的方式進行 Double Check,避免一些可能被個人所忽略的疏失發生,也可以讓比較 Senior 的工程師在 Pull Request 上分享 Domain Knowhow。
SonarQube 介紹
然而,如果所有的程式潛在問題,或是安全性隱憂都要透過人工的方式一一檢查出來,實在是太花費時間和功夫了,所以除了在人工的 Code Review 之外,其實我們還可以透過自動化的工具,幫我們對把程式碼的品質做更完整的檢查,甚至提出一些可能的安全性隱憂,今天所要向大家介紹的 SonarQube 就是一套相當完整的 Open Source 程式碼品質分析工具,透過 SonarQube 的幫助可以讓我們程式碼中潛在的問題都一目了然,對於團隊開發來說相當實用!
SonarQube 其實可以分為兩種工具,一種是負責執行程式碼分析的 Runner,每個語言都有自己對應的 SonarQube Runner (例如 C# 就有 MsBuild Runner),而另外一種則是在透過 Runner 分析之後,我們可以透過 SonarQube 的報表網站,觀看軟體的健康檢查報告,了解是否有潛在的技術債(Technical Debt),幫助我們及早發現,及早治療。
在報表的入口中,可以清楚明瞭的看到目前軟體的程式碼品質評等,所潛在的技術債務有多少,大概修復需要花費多少時間(看到 100 多天也不要太過於緊張,因為這些時間其實都估得非常寬鬆!),甚至還可以看到專案結構或是是否有重複的程式碼等等資訊。
除了 Dashboard 之外,你也可以點進去查看每個問題的細節,在 Issue 畫面中可以看到 SonarQube 幫我們按照嚴重程度區分好不同層級的 Issue ,我們也可以在這邊了解 Issue 的原因和種類,以及根據緊急程度決定是否要優先處理。
對於有問題的程式碼,SonarQube 也會幫我們清楚的標示是哪一行有問題,問題發生的原因以及解決方法,甚至團隊還可以根據這個問題直接在上面進行更多的討論!
而如果你還是看不懂為什麼這個地方會有潛在的風險,SonarQube 甚至提供了相關的文件解釋為什麼不該這樣做,以及修改前後的差別和範例程式碼,對於比較 Junior 的工程師來說,簡直就是一份非常有幫助的軟體開發教學。
當然還有很多其他設定的細節或報表,都可以在根據喜好自由的調整!
小結
透過 SonarQube 這套程式碼品質分析工具的幫助,我們可以把虛無飄渺的軟體品質,透過數據化和報表的方式呈現在大家眼前,讓大家對於程式碼品質更有實際上的了解,並可以讓 SonarQube 根據自己團隊需求調整檢查規則,提前發現並解決潛在的問題,也避免掉一些人工可能會忽略的盲點,加上 SonarQube 還提供需多實用的 PlugIn ,讓自訂的彈性更大!