https://blog.csdn.net/weixin_49002978/article/details/121488379
https://docs.sonarqube.org/latest/requirements/requirements/
docker search sonar
docker pull sonarqube
docker run -d -p 9006:9000 sonarqube
我們打開瀏覽器輸入網址 localhost:9006
默認登錄的賬號和密碼都是admin,到這一步我們的sonar安裝運行就完成了。
持久化sonar
官網上已經聲明 sonarQube 7.9 版本以上不再支持 mysql 了,我們為了以后升級新版本不做數據庫遷移,盡量使用 postgresql
如果需要持久化我們的sonar掃描數據,可以使用以下命令啟動sonar,jdbc信息為mysql的連接、用戶名和密碼。sonar會將掃描信息持久化到postgres 中。
# 備掛載文件
mkdir -p /home/sonarqube/{extensions,logs,data}
# 修改內核參數
vim /etc/sysctl.conf
# 增加以下配置
vm.max_map_count=262144
fs.file-max=65536
# 使配置生效
sysctl -p
docker run --restart=always -d --name sonarqube -p 9006:9000 \
-v /home/sonarqube/extensions:/opt/sonarqube/extensions \
-v /home/sonarqube/logs:/opt/sonarqube/logs \
-v /home/sonarqube/data:/opt/sonarqube/data \
-e "SONAR_JDBC_USERNAME=sonar" \
-e "SONAR_JDBC_PASSWORD=sonar" \
-e "SONAR_JDBC_URL=jdbc:postgresql://192.168.0.103:5432/sonar" \
--privileged=true \
sonarqube
Administration->Marketplace->搜索chinese pack,進行相應版本的安裝,如下圖
使用sonar掃描代碼
登錄進入sonar頁面后,點擊創建一個項目
點擊 manually(手動的),這里也可以選擇github,在項目中使用git關聯sonar可以更方便的掃描代碼分支。
然后隨便輸入一個project名稱,這里建議與項目名稱相同。
隨便輸入一個什么(建議與項目名稱相同),生成一個token。生成后點擊continue,繼續。
根據我們的項目選址maven或者gradle,或者其他。sonar會在下方自動給出掃描代碼的命令。然后打開我們的idea,在下方命令行執行。這里有一個坑點,由于sonar會去target目錄下掃描我們的class文件,所以要先將項目打包
mvn -package
然后再去掃描,掃描完成之后回到192.168.0103:9006,就可以看到我們代碼中的質量問題了。
出現版本不一致問題
對照
默認的 sonar最新版本 支持 java11 需要修改版本
使用 sonarqube 對 java 項目代碼進行掃描的時候,java 項目的版本不能低于 sonar 的編譯版本。
sonarqube:7.8-community 是 sonar 對 jdk1.8 的最后一個版本,從 7.9 以后 sonar 最低支持版本為 jdk 1.11
sonar 與 Java版本 對照 官網上能看到的
sonarqube | java | 官網 |
---|---|---|
>7.8 | 11 | 詳細 |
7.8 >7.4 | 8 | 詳細 |
sonarqube 應當降低版本到7.8
docker pull sonarqube:7.8-community
docker rm -f sonarqube
rm -Rf /home/sonarqube/{extensions,logs,data}
mkdir -p /home/sonarqube/{extensions,logs,data,conf}
chown -R 999:999 /home/sonarqube/.
docker run -d --name sonarqube sonarqube:7.8-community
docker cp sonarqube:/opt/sonarqube/conf /home/sonarqube/
docker cp sonarqube:/opt/sonarqube/extensions /home/sonarqube/
docker rm -f sonarqube
chown -R 999:999 /home/sonarqube
docker run --restart=always -d --name sonarqube -p 9006:9000 \
-v /home/sonarqube/conf:/opt/sonarqube/conf \
-v /home/sonarqube/extensions:/opt/sonarqube/extensions \
-v /home/sonarqube/logs:/opt/sonarqube/logs \
-v /home/sonarqube/data:/opt/sonarqube/data \
-e sonar.jdbc.username=sonar \
-e sonar.jdbc.password=sonar \
-e sonar.jdbc.url=jdbc:postgresql://192.168.0.103:5432/sonar \
sonarqube:7.8-community
https://blog.csdn.net/a391000181/article/details/102221188
數據庫postgresql 應當設置為 public
mvn sonar:sonar -Dsonar.projectKey=test -Dsonar.host.url=http://192.168.0.103:9006 -Dsonar.login=6948ace42076ab5e26e9e7bfdbf237a1df3c14f9
點波關注 系統搭建(docker)