2022/11/2

SonarQube , install and test

用 Docker 安裝。
官方是用 docker-compose.: example-compose-files

要run 的主機,要先把 file limit 相關增加
sudo sysctl -w vm.max_map_count=262144
sudo sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096
這樣做,reboot 後又要重新設定,可以修改 /etc/sysctl.conf 和 /etc/security/limits.conf

然後就可以在 docker-compose.yml 目錄下: docker-compose up -d
之後一些message 結束後,可以用 docker ps 看是不是有兩個 container 在 run:
$ docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                       NAMES
39b76878cb7f   sonarqube:community   "/opt/sonarqube/bin/…"   39 minutes ago   Up 39 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   compose-sonarqube-1
bd6b6e8ef34b   postgres              "docker-entrypoint.s…"   39 minutes ago   Up 39 minutes   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp   compose-db-1
如果有沒起來的,用 docker ps -a 看,然後用 docker start container-id -a 看啟動 log,找找看 Error message。
啟動完成,開啟 browser,到 http://host-name:9000 就會顯示 login 畫面,default 是 admin, admin,登入完成會立刻要求修改 passowrd (+123)

follow instruction,先 create 一個 new project,用 local,然後就會產生一個 key。之後就會指示要你download 一個 zip,做 scan 用。
依照你要 run scan 的平台(windows, linux, mac), download 不一樣的 zip 檔。

zip 解開後,在 sonar-scanner-4.7.0.2747-linux/bin/ 下就是 sonar-scanner 執行檔。
在 ~/bin/ 下建一個link,讓自己可以 invoke 到。
如果要給所有人都可以 run, 就要 copy 到 /usr/opt/ ,然後建 link 到 /bin/

回到 server,gen 完 token 後,第二步要你download zip,後面就是 sonar-scanner 的 example command。
用 sonarqube 的 example 來測試:
https://github.com/SonarSource/sonar-scanning-examples.git
cd sonar-scanning-examples/sonarqube-scanner
copy剛剛step 2 的 command 來 run
sonar-scanner   -Dsonar.projectKey=test1   -Dsonar.sources=.   -Dsonar.host.url=http://i9rtx3090:9000   -Dsonar.login=sqp_87a27fdf903c31857f1349b47bee1aa31706e427
執行完,server 網頁就變了...
把節結果顯示出來..

可以看看 example 中的 sonar-project.properties 和剛剛 command 的 -D overwrite 裡面的定義。


麻煩的是,如果要 scan c++,sonar 須要知道code是怎麼 build 的,所以跟 build system 有關 (bazel, msbuild.. etc)
需要另一個tool: build-wrapper
然後 server 好像要是 developer editiion 以上,community edition 不支援的樣子..

這一篇 有說,好像有 opensource implement C++ extension

沒有留言:

張貼留言