sonar 容器化部署
sonar介绍
sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言;
而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告;
sonar通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划- 分为5个等级;
sonar设置了质量门,通过设置的质量门评定此次提交分析的项目代码是否达到了规定的要求;
sonar可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量;
使用sonar目的
对于团队而言,编写干净的代码对于维护健康的代码至关重要。 代码是否健康主要由以下四个指标来判断:
可读性:代码是否可读易读,对于一个团队来说,编码标准是否一致,编码风格是否一致;
功能性:代码正确得实现了业务逻辑;
可维护性:代码逻辑是有层次的,是容易修改的;
高效性:代码实现在时间和空间的使用上是高效的; 团队成员可能每个人对于代码的标准及风格不同,即使通过eslint等约束也不一定能从多个维度保证代码质量,只能检测基础语法等代码质量问题。 所以引入一个可以保证团队成员代码标准一致,质量稳定,风格稳定的工具也许是有必要的。
sonar功能
它是从 Architecture Design(架构设计) , Coding Rule(编码规则), Potential Bugs(潜在错误), Duplications(重复代码), Comments(注释), Unit Tests(单元测试), Complexity(复杂度) 7个维度检查代码质量的。 相比lint工具检测维度比较全面, 有可视化的友好展示代码缺陷的界面,结合CI/CD工具,可以不依赖手工检查,定时清查代码。
sonarlint可以结合IDEA作为开发约束, sonarQube可以结合自动化构建工具检查分析代码质量,并输出代码检测可视化界面。
sonarqube容器化部署
sonar 容器化部署
一、sonar安装步骤
(部署硬件要求2G以上内存)
1. 准备镜像
docker pull postgres
docker pull sonarqube
2. 编写脚本
1.start-postgresql.sh
#!/bin/bash
docker stop postgresql
docker rm postgresql
docker run -d --name postgresql -p 5432:5432
-e POSTGRES_USER=sonar
-e POSTGRES_PASSWORD=sonar
-e POSTGRE_DB=sonar
-v /opt/postgresql/data:/var/lib/postgresql/data
postgres:10.4
2.start-sonar.sh
#!/bin/bash
docker stop sonarqube
docker rm sonarqube
docker run --name sonarqube --link postgresql -e SONARQUBE_JDBC_URL=jdbc:postgresql://postgresql:5432/sonar -p 9000:9000 -d -v /root/xej-sonar/data/sonarqube/data:/opt/
sonarqube/data -v /opt/sonarqube/extensions:/opt/sonarqube/extensions sonarqube:community
3.在宿主机上,创建数据存储目录(可以替换成自己的目录)
mkdir -p /opt/postgresql/data
mkdir -p /opt/sonarqube/data
mkdir -p /opt/sonarqube/extensions
4.启动postgresql
./start-postgresql.sh
5.启动sonar(默认会启动elasticsearch,elasticsearch不允许root启动,所以这里要添加一个普通用户)
1.创建用户
useradd sonar
passwd sonar
2.用户授权
chown -R sonar:sonar /var/run/docker.sock
3.启动 sonar
su sonar
./start-sonar.sh
6.访问http://ip:9000/访问sonar
安装Sonar-Scanner插件
下载linux版本,链接为:
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
解压
unzip sonar-scanner-cli-4.2.0.1873-linux.zip
配置环境变量,修改文件 /etc/profile
export SONAR_SCANNER_HOME=/opt/software/sonar-scanner-4.2.0.1873-linux
export PATH=$SONAR_SCANNER_HOME/bin:$PATH
验证安装:
# sonar-scanner -v
INFO: Scanner configuration file: /data/sonar-scanner-4.2.0.1873-linux/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 4.2.0.1873
INFO: Java 11.0.3 AdoptOpenJDK (64-bit)
INFO: Linux 2.6.32-696.10.1.el6.x86_64 amd64
二、项目分析
1.在项目目录下,新建 sonar-project.properties 文件,添加以下内容
#key,唯一标识,直接用项目名即可
sonar.projectKey=项目名
sonar.projectName=项目名
sonar.projectVersion=1.0
#要扫描的代码路径,sonar-project.properties文件的相对路径。【配成.或src】
sonar.sources=.
sonar.sourceEncoding=UTF-8
sonar.language=java
sonar.java.binaries=项目路径/target/classes
2.执行分析
sonar-scanner
3.查看报告结果 http://IP:9000/