測試工程師的福音-如何使用Sonar完成程式碼質量檢測
Sonar是什麼
1、Sonar全稱SonarQube是一個用於程式碼質量管理的開源平臺,用於管理原始碼的質量,可以多維度檢測程式碼質量,是程式碼審查利器
通過外掛形式,可以支援包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種程式語言的程式碼質量管理與檢測 ,可以幫我們分析bug, 漏洞,異味,程式碼覆蓋率,及程式碼重複問題,如圖所示
2、sonar 安裝
採用docker方式
sonarqube 最新版本官網建議資料是postgres,版本是12,我們可以一鍵搭建起來
2.1 搭建一個數據庫postgres
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres:12
說明:
--name db 是搭建的postgres資料庫docker 容器名稱
-e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar 是資料庫賬號和密碼
-d postgres:12 是版本為12的postgres映象
2.2 搭建sonarqube
docker run --name sq --link db2 -e SONARQUBE_JDBC_URL=jdbc:postgresql://db2:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9001:9000 -d sonarqube
說明:
--name sq 是搭建的sonarqube資料庫docker 容器名稱
--link db 是連線上面postgres容器
-d sonarqube 是最新版本的sonarqube 映象
-p 9001:9000 對外訪問埠9001
2.3 sonar 環境搭建問題
執行上述兩個命令後,通過docker ps 檢視docker容器,發現sonarqube沒有啟動起來
可以通過 docker logs sq 檢視啟動日誌
發現sonarqube容器stopped,沒有啟動起來,原因是
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
說明最新版本sonarqube需要記憶體大小不低於262144,那首先要保證執行環境的記憶體大小不低於3G,例如我採用的VMware直接給加大到3G以上
然後在進入虛機環境
找到/etc/sysctl.conf檔案最後新增一行:
vm.max_map_count=262144
立即生效, 執行:
/sbin/sysctl -p
最後再執行 docker restart sq 重啟sq;
使用docker ps 檢視,出現sonarqube容器說明啟動成功
2.4 通過http://ip:9001訪問sonarqube預設密碼admin admin
3 sonar 漢化問題
預設的sonar 滿屏英文,也不好理解,可以利用sonar 的外掛體系,直接漢化
登入sonar並選擇Administration中,選擇MarketPlace,搜尋Chinese Pack,點選安裝,安裝完成後,按照提示重啟即可
漢化後介面
4 sonar 專案支援
4.1 選擇專案,建立要要分析的專案
4.2 建立專案令牌 可以寫任意不重複的名稱
4.3 選擇支援專案,我們這裡對後臺開發常見java專案進行配置,選擇開發常用的開發工具maven,如圖所示,會生成maven 整合命令,一定要保留下來
4.4 專案整合soanr
要想讓java專案支援mvn 命令,首先要整合sonar maven外掛
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.4.0.905</version>
</plugin>
然後再專案中直接執行
mvn sonar:sonar \
-Dsonar.projectKey=interfaces \
-Dsonar.host.url=http://192.168.87.139:9000 \
-Dsonar.login=7940503affbe9bf1ca5aee1548901f7969108976
就可以將專案推送到soanr,sonar會自動分析推送的專案資訊(java專案如何整合maven,這個需要java基礎,可以讓開發協助,或者學測試開發相關內容,我們正式課會詳細講解)。
4.5 專案分析結果
soanr會自動分析推送的專案
程式碼覆蓋率還需要額外外掛支援
上面這個截圖半年前搭建的版本,當時是7.9版本的內容,很多公司很可能還停留在7.*版本甚至6.*版本,最新的sonar已經升級到8.*版本, 裡面集成了全文搜尋引擎Elasticsearch,來加快搜索,所以需要記憶體空間也更大,也新加了審計功能
審計功能是對增量程式碼檢查支援,如圖
程式碼如何審計呢 可以按照他的等級 BUG>漏洞>異味 優先看BUG
每個等級中又按照阻斷>嚴重>主要>次要>提示 5個小等級來細分
點開每個等級後內容
具體的怎麼走讀程式碼就需要有些程式碼基礎或者和開發一起做程式碼審計,可以快速幫我們分析出程式潛在問題,提高程式碼質量,也是高階測試人員必備技能包。