一.是什么
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关系
2.使用流程分析
由扫描器扫描我们的代码,然后扫描器将扫描代码之后的一个代码分析结果,代码的质量结果写到数据库中,最后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
<2>安装内容
I.SonarQube平台服务器
i.SonarQube安装与启动平台
ii.汉化
①登录admin账户
②商店下载汉化插件
③把下载的jar包放到lib/common目录下
④重启sonarqube并重新登录admin
II.数据库
存储sonarqube平台中项目的数据
i.选择数据库
mysql5.6/5.7
navicat中创建一个数据库给sonar使用,用户名密码记得保存
ii.配置sonarqube,与数据库进行连接
在sonarqube的conf/sonar.peoperties中配置数据库连接,为了把sonarqube扫描的数据存储到数据库中
iii.配置完成,重启sonarqube
III.sonar-scanner安装和配置
i.官网下载
下载sonar-scanner的压缩包,解压到本地目录
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
ii.配置
①在sonar-scanner的解压目录,找到配置文件进行配置;
因为sonar-scanner不是独立存在的,它需要将扫描结果的数据同步到sonarqube平台,所以需要配置让sonar-scanner知道是sonarqube的哪一个平台;
conf目录下找到配置文件sonar-scanner.properties文件,配置对应的sonarqube平台地址和编码格式;
②把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
INFO:
INFO: usage: sonar-scanner [options]
INFO:
INFO: 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文件
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