ops-37 Sonar入门及配置
一、Sonar是什么?
根据我的了解,可以说Sonar包含三个部分:
- SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码味道。它可以与您现有的工作流程集成,以实现跨项目分支和提取请求的连续代码检查。其目的是对代码库的质量进行360°透视。 为此,它会定期分析项目的所有源代码行。SonarQube是保存分析结果的中心服务器。
- SonarLint是一个Sonarl IDE插件,可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer, SonarLint本身也可以基于一些规则对代码IDE中的代码进行即时的检测。
- SonarScanner是分析并将结果发送到SonarQube。可以从 zip 文件运行 SonarScanner,也可以从从 Docker 镜像运行 SonarScanner。使用SonarScanner,测试人员不用安装java开发环境即可完成代码的分析。

二、为什么要使用Sonar?
Sonar是目前主流的自动静态扫描代码的工具。
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持15种语言静态代码分析:Java、JavaScript、C#、TypeScript、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML 和 VB.NET等。
Sonar可以发现语法特征错误、边界行为特征错误和经验特征错误这三类“有特征”的错误。能够以极低的成本发现以下问题:
- 使用未初始化的变量;
- 变量在使用前未定义;
- 变量声明了但未使用;
- 变量类型不匹配;
- 部分的内存泄漏问题;
- 空指针引用;
- 缓冲区溢出;
- 数组越界;
- 不可达的僵尸代码;
- 高的代码复杂度;
- 死循环;
- 大量的重复代码块;
- …
三、Sonarqube环境搭建
1、安装jdk11
这是前提条件
2、安装和使用sonarqube
1、下载社区版sonarqube,直接解压
官网地址:https://www.sonarqube.org/downloads/



2、不自行搭建数据库,先使用sonarqube自带的数据库

需要注意:
内嵌数据库只能用于测试场景
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。
3、运行sonar
进入到bin目录,使用管理员运行


4、访问http://localhost:9000

5、登录,默认用户和密码admin/admin

需要修改密码

6、添加项目





3、下载和配置SonarScanner
1、下载并解压缩适用于 Windows 的扫描仪:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/



如果电脑下载特别慢,尝试使用手机下载,很快就下载完成

2、解压下载的文件,将bin目录添加到%PATH%环境变量中


四、遇到的问题
1、非管理员身份运行sonarqube失败

在windows系统怎么简单就怎么来吧,不使用命令行运行,直接界面运行。

2、Jdk版本不正确
运行sonarqube出现以下提示,需要使用jkd11

------------------------------------docker 部署相关组件------------------------------------------
#1.Docker部署Maven私服Nexus
mkdir -p /root/app/nexus-data
docker pull sonatype/nexus3
docker run -d -p 8081:8081 \
-v /root/app/nexus-data:/var/nexus-data \
--restart=always \
--name nexus \
sonatype/nexus3
#2.Docker部署SonarQube
mkdir -p /root/app/sonarqube/{conf,extensions,logs,data}
docker run -d -p 9000:9000 \
-e "SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.219.138:5432/sonar" \
-e "SONARQUBE_JDBC_USERNAME=postgre" \
-e "SONARQUBE_JDBC_PASSWORD=postgre" \
-v /root/app/sonarqube/conf:/opt/sonarqube/conf \
-v /root/app/sonarqube/extensions:/opt/sonarqube/extensions \
-v /root/app/sonarqube/logs:/opt/sonarqube/logs \
-v /root/app/sonarqube/data:/opt/sonarqube/data \
--restart=always \
--name sonarqube \
sonarqube
#3.安装中文插件
#4.三、踩到的坑
1、最新版本的sonar不适配mysql、老版本的sonar不适配java1.8,mysql的新版本也不行,
解决方案:使用sonar7.7+sonar-scanner3.3+mysql5.7+jdk11.0组合,万事大吉
2、使用sonar-scanner检查完成之后,日志中总是提示上传report失败,而在sonarQube界面只能看到项目,看不到结果。
解决方案:数据库单次写入量默认为4M,将其改为64M,也就是前面说的,在my.ini中添加max_allowed_packet = 67108864,重新初始化安装mysql即可
珊瑚海

浙公网安备 33010602011771号