P3Devops:SonarQube

410 阅读4分钟

一.是什么

1.是代码质量和安全扫描的分析平台

2.以多维度分析代码

如代码量,安全隐患,编写规范隐患,重复度,复杂度,代码增量,测试覆盖率

3.支持多种编程语言的代码扫描和分析

4.涵盖了编程语言的静态扫描规则

代码编写规范+安全规范
静态扫描规则:代码在不运行的情况下做一个扫描,针对的是开发人员编写的源代码

5.可以与CI/CD平台,如jekins做集成

二.为什么用

1.能够静态扫描和分析项目代码

2.有统一的管理平台,呈现代码的质量数据

三.怎么用

sonarQube平台官网文档:https://docs.sonarqube.org/latest/

1.组成

sonar静态代码扫描有两部分组成

<1>sonarQube平台

web界面管理平台

I.展示所有项目代码的质量数据

II.配置质量规则,管理项目,配置通知,配置SCM等

<2>sonar-scanner扫描器

用来扫描和分析项目代码,支持多种语言;
代码扫描和分析完成之后,会将扫描结果存储到数据库当中,在sonarQube平台可以看到扫描数据

<3>sonarQube和sonar-scanner关系

image.png

2.使用流程分析

image.png image.png

由扫描器扫描我们的代码,然后扫描器将扫描代码之后的一个代码分析结果,代码的质量结果写到数据库中,最后sonarQube平台直接去数据库访问对应的质量数据

3.环境搭建

<1>软硬件条件

docs.sonarqube.org/8.9/require…

I.软件

sonarQube 7.7
SonarQube 扫描器需要 JVM 版本 8 或 11,SonarQube 平台(服务器)需要版本 8

II.硬件

SonarQube 平台(服务器)不支持32位系统;
SonarQube 扫描器支持32位系统

III.数据库要求

sonarQube 7.7以上版本不支持mysql,7.7支持5.5,5.6

image.png

<2>安装内容

I.SonarQube平台服务器

i.SonarQube安装与启动平台

image.png

image.png

image.png

image.png

image.png

image.png

image.png

ii.汉化
①登录admin账户

image.png

②商店下载汉化插件

image.png

image.png

image.png

③把下载的jar包放到lib/common目录下

image.png

④重启sonarqube并重新登录admin

image.png

II.数据库

存储sonarqube平台中项目的数据
i.选择数据库
mysql5.6/5.7
navicat中创建一个数据库给sonar使用,用户名密码记得保存
ii.配置sonarqube,与数据库进行连接
在sonarqube的conf/sonar.peoperties中配置数据库连接,为了把sonarqube扫描的数据存储到数据库中    

image.png

image.png

iii.配置完成,重启sonarqube

III.sonar-scanner安装和配置

image.png

i.官网下载
下载sonar-scanner的压缩包,解压到本地目录
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

image.png

ii.配置
①在sonar-scanner的解压目录,找到配置文件进行配置;
因为sonar-scanner不是独立存在的,它需要将扫描结果的数据同步到sonarqube平台,所以需要配置让sonar-scanner知道是sonarqube的哪一个平台; 
conf目录下找到配置文件sonar-scanner.properties文件,配置对应的sonarqube平台地址和编码格式;   

image.png

②把sonar-scanner添加到环境变量(把bin目录配到环境变量),为了以后能在命令行用sonar-scanner做一个扫描
vim ~/.bash_profile文件,增加下面几行    
export SONAR_HOME=/Users/zhaijing/Downloads/sonarqube-6.7.5
export SONAR_RUNNER_HOME=/Users/zhaijing/Downloads/sonar-scanner-3.2.0.1227-macosx
export PATH=$PATH:$SONAR_RUNNER_HOME/bin
③命令行用sonar-scanner -h 确认环境变量是否可用
alex@zhaozhigangdeMacBook-Pro bin % sonar-scanner -h
INFOINFO: usage: sonar-scanner [options]
INFOINFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output

4.配置扫描java项目

<1>获取java源码

<2>项目根目录下添加sonar-project.properties文件

image.png

sonar.projectKey=在sonarQube上的实例键名(唯一)
sonar.projectName=在sonarQube.上的项目名称
sonar.orojectVersion=l.0(项目版本号) 
sonar.sources=/src/main/java(.java源代码目录指定)(如果不指定,默认扫描的是和sonar-project.properties同级目录下的所有代码,如果要扫描java代码,把他指定到/src/main/java)

sonar.sourceEncoding=UTF-8(编码格式指定) 
sonar.language=java(指明只扫描java语言,会把其他语言过滤掉,只扫描java的)
sonar.java.binaries=target/classes(class.文件的目录)(可以没有编译文件,但是一定要配编译文件的目录)

<3>项目根目录下,运行命令

保证sonarQbue平台是打开的

sonar-sacnner

<4>等待扫描完成

5.项目issues查看和修改建议

<1>issues类型

image.png

<2>issues严重级别

image.png

<3>代码规则和质量配置

5.sonarlint插件

image.png