sonarqube的使用.md
一、简介
SonarQube 是一个开源的代码质量管理系统。
功能介绍:
15种语言的静态代码分析 Java、JavaScript、C#、TypeScript、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML和VB.NET
检测代码 bugs 和 漏洞
检查安全热点
跟踪代码坏味道,并修复技术债务
代码质量度量及历史变更记录
CI/CD 集成
可扩展,社区有超过 60 多个插件
SonarQube整体上可以分为服务器Server端和scanner客户端顾名思义,客户端scanner就是运行在代码侧,或者是CICD环境中,对代码就行扫描的工具;扫描所使用的规则和扫描出来的结果会发送到服务器Server端,这些数据服务器Server端会进行分析,并存储到数据库当中。
SonarQube服务端仅支持JDK11,客户端支持JDK8或者11。
SonarQube服务端数据库,支持PostgreSQL、SQLServer、Oracle等,但要注意的是从SonarQube 7.9+不再支持MySQL。
二、服务端部署(Docker)
这里我们使用docker-compose来进行部署
version: '3'
services:
postgres:
image: postgres:12
restart: always
container_name: postgres
ports:
- 5432:5432
volumes:
- /opt/postgres/postgresql/:/var/lib/postgresql
- /opt/postgres/data/:/var/lib/postgresql/data
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar123
POSTGRES_DB: sonar
networks:
- sonar-network
sonar:
image: sonarqube:8.2-community
restart: always
container_name: sonar
depends_on:
- postgres
volumes:
- /opt/sonarqube/extensions:/opt/sonarqube/extensions
- /opt/sonarqube/logs:/opt/sonarqube/logs
- /opt/sonarqube/data:/opt/sonarqube/data
- /opt/sonarqube/conf:/opt/sonarqube/conf
ports:
- 9000:9000
environment:
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar123
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
networks:
- sonar-network
networks:
sonar-network:
driver: bridge
常见的两个报错修复方法:
sysctl -w vm.max_map_count=262144
chmod -R 777 /opt/sonarqube/
三、开始扫描
在扫描之前,我们需要去服务器端创建一个项目,并创建Token,这两个参数后面需要用到。
客户端的安装就不详细介绍了,基本上下载了就可以用。
我们从github上随便拉取一个代码,来扫描一下。
git clone https://github.com/lvlq73/springcloud-demo.git
cd springcloud-demo
sonar-scanner -Dsonar.projectKey=projectabc -Dsonar.sources=. -Dsonar.host.url=http://10.140.12.11:9000 -Dsonar.login=70e8f4973f09a432ec394d01a5f4a7642920eb05
我们就可以从服务端页面上看到报告了。
在SonarQube7和8中,各种语言都是通过plugin形式集成进来的,SonarQube9中一般的编程语言都是内置的,无需插件安装。
四、集成到gitlab-CI中
这里使用gitlab CI Docker DooD的方式,关键语句如下
codesonar:
stage: codesonar
variables:
SONAR_TOKEN: "9a2be615a4eaf55edb632f733fd5af4139c39225"
SONAR_HOST_URL: "http://10.192.15.63:9000"
GIT_DEPTH: 0
image: sonarsource/sonar-scanner-cli:latest
script:
- echo "start sonar scaning"
- sonar-scanner -Dsonar.projectKey=projetcabc -Dsonar.sources=.
allow_failure: true
和sonarqube相关的配置可以存放到代码库里的sonar-project.properties文件中,就不需要在命令行指定了。
转载请注明:IPCPU-网络之路 » SonarQube的使用