代碼質(zhì)量
代碼級測試方法
靜態(tài)方法 - 不執(zhí)行代碼的基礎(chǔ)上發(fā)現(xiàn)缺陷
- 人工靜態(tài)方法
- pair programming
- code view
- 同行評審。基于Pull Request
- 自動靜態(tài)方法
- sonarqube
- coverity
動態(tài)方法 - 執(zhí)行代碼的基礎(chǔ)上發(fā)現(xiàn)缺陷
- 人工動態(tài)方法
- UT
- 自動動態(tài)方法
- 基于代碼自動生成邊界測試用例并執(zhí)行。重點(diǎn)是如何實(shí)現(xiàn)邊界測試用例的自動生成
自動靜態(tài)方法
- 不檢查業(yè)務(wù)邏輯。更多發(fā)現(xiàn)基于規(guī)則的代碼錯誤
- 高度自動化、發(fā)現(xiàn)問題成本低、發(fā)現(xiàn)問題廣
- 用于質(zhì)量控制和度量
- 易于和CI整合
Sonar架構(gòu)
安裝注意事項(xiàng)
- 需要jdk>=11
- 數(shù)據(jù)庫不支持mysql 可以用postgresql
啟動
bash sonar.sh console
訪問 http://localhost:9000/ 即可打開主頁。使用admin\admin
進(jìn)行登錄
在gradle工程里面的build.gradle
加上
plugins {
id "org.sonarqube" version "2.7"
}
執(zhí)行
使用下面的這樣的gradle命令即可把結(jié)果同步給sonar
./gradlew sonarqube \
-Dsonar.projectKey=SpringTest \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=f6a04f23e771c07794535745325246b7e566a215
Sonar基本概念
Quality Profiles - rules的集合,可自由組合并應(yīng)用于不同項(xiàng)目。
Quality Gate - 設(shè)置基于掃描結(jié)果的門禁
IDE插件 - SonarLint
SonarLint 會在編寫代碼時實(shí)時提示,并給出建議。也可以連接到SonarQube或SonarCloud,獲取對相應(yīng)項(xiàng)目的配置
推薦實(shí)踐
本地開發(fā)調(diào)試中,IDE可以對代碼實(shí)現(xiàn)靜態(tài)檢查(SonarLint)
當(dāng)代碼提交后,CI流水線也有代碼靜態(tài)檢查stage。如果有錯誤,能有效地通知到人和查看結(jié)果
一般針對項(xiàng)目都要求所有開發(fā)人員使用統(tǒng)一的靜態(tài)代碼規(guī)則庫,所以SonarLint最好集成SonarQube
前端項(xiàng)目和后端項(xiàng)目都應(yīng)該有。自動化測試項(xiàng)目也推薦用上
可以定制Quality Profile
設(shè)置合適的Quality Gate
其他工具
- PMD
- JAVA
- JS