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/