SonarQube环境搭建以及java代码扫描基础用法

SonarQube简介

SonarQube是一款开源的代码质量检查工具,主要用于源代码的质量检查,是devops流水线中很常用的一个工具,以插件化的形式,支持多种编程/脚本语言的代码分析,同时也提供了对常用IDE工具的支持。

Sonar环境搭建

Linux下环境搭建

安装包下载地址:https://www.sonarqube.org/downloads/

工具分为社区免费版和开发版,官网下载可能比较慢,我已经下载好的版本存放在网盘中,有需要的可以从百度网盘下载即可:

链接:https://pan.baidu.com/s/1vKUlViVPzHCW8Q_14yE4PA

提取码:1234

SonarQube的安装包下载下来是一个zip压缩包,windows和linux下的安装包都是同一个,压缩包中会有针对不同系统的启动脚本:

SonarQube环境搭建以及java代码扫描基础用法

  • linux环境搭建:(需提前安装好jdk )

# 先创建一个sonar用户,用来启动sonar,具体可见注意事项第3点 
groupadd sonar
useradd sonar -g sonar -p sonar
# 使用unzip命令解压压缩包使用unzip命令解压压缩包
unzip sonarqube-8.4.2.36762.zip -d /home/sonar/devopstools


# 把sonar所需用到的目录都授权给sonar
chown -R sonar:sonar /home/sonar/devopstools/sonarqube-8.4.2.36762
chown -R sonar:sonar jdkpath
# 执行bin目录下的启动脚本
cd /home/sonar/devopstools/sonarqube-8.4.2.36762/bin/linux-x86-64
sh  sonar.sh start

注意事项;

1、sonarqube是需要依赖于jdk的,目前我所使用的sonarqube-8.4的版本,需要依赖于java11的版本,否则在启动的时候会报错 :

SonarQube环境搭建以及java代码扫描基础用法

2、sonarqube安装后,数据默认是存储在H2数据库引擎中的,可以在配置文件中修改数据存储的相关信息,配置文件存放于conf/sonar.properties文件中,目前支持H2(默认使用这个,但是官方推荐仅用于测试 ,商业环境中不推荐使用)、Oracle、PostgreSQL和SQLServer。

在以前的版本中,会看到支持mysql,网上有很多教程都写的是配置mysql的数据源 ,从SonarQube v7.9版本开始,将不再支持mysql,具体可参考下面的官方申明:

https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667

SonarQube环境搭建以及java代码扫描基础用法

3、sonarqube启动的时候,会默认启动elasticsearch,elasticsearch现在默认不能以root用户启动 ,因为不能用root身份去启动sonar,否则执行sh sonar.sh start命令后,在logs文件中会出现如下的错误信息:

SonarQube环境搭建以及java代码扫描基础用法

sonar.log:

SonarQube环境搭建以及java代码扫描基础用法

es.log:

SonarQube环境搭建以及java代码扫描基础用法

Linux下通过Docker搭建SonarQube环境

# 下载sonarqube的docker镜像:
docker pull sonarqube
docker run -itd --name sonarqube -p 9000:9000 sonarqube

执行以上命令后,即可成功安装sonarqube,然后在浏览器中输入ip+端口9000访问即可。安装后,默认的登录用户名和密码是admin /  admin 。登录后初始化页面如下:

SonarQube环境搭建以及java代码扫描基础用法

Windows下安装SonarQube

直接下载安装包解压后, 进入bin目录下的windows-x86-64文件夹中,然后执行bat脚本启动就行。(需提前安装好jdk并配置环境变量,新版本需依赖jdk11)

SonarQube环境搭建以及java代码扫描基础用法

Sonarqube安装目录介绍

sonar安装目录常用的几个目录介绍:

bin:下面存放了windows、linux和mac电脑的启动脚本

conf:里面存放的是配置文件,其中sonar.properties里面可以更改sonar的数据源配置,端口等重要信息,wrapper.conf里面可以指定java的路径和一些其他的参数

extensions:这个里面常关注的是plugins文件夹里面的内容,可以从官网下载其他插件放进去,扩展sonar的功能

SonarQube基本操作

1、生成token

SonarQube环境搭建以及java代码扫描基础用法

2、找一个java的maven工程,在pom所在目录直接执行下面的命令扫描:

mvn sonar:sonar \
 -Dsonar.projectKey=demo \
 -Dsonar.host.url=http://106.53.29.33:9000 \
 -Dsonar.login=27b9c784671905425be75c580f5ed818c9533bc5

不同的语言,使用方法不一样,可以通过下图去筛选不通的语言,得到扫描的命令:

SonarQube环境搭建以及java代码扫描基础用法

3、查看扫描结果

可以看到扫描出来的bug以及各种语言的代码行数,圈复杂度,代码重复率等指标的数据。

SonarQube环境搭建以及java代码扫描基础用法

总结

1、以上已为大家介绍了SonarQube环境搭建,要注意 ,新的版本需要依赖jdk11,以后的版本可能依赖的会更高 ,遇到启动报错,要学会查看日志进行分析,linux下安装的时候,不能用root用户去安装,不然会报elasticsearch启动错误。

2、SonarQube主要用来展示各个项目的扫描结果和数据,目前搭建的是sonar的服务端, 如果是扫描其他语言,可能需要下载安装sonar-scanner的插件,可以结合jenkins实现持续集成,能够在开发提交代码后自动触发扫描。

3、更多Sonar的用法请持续关注,后面有时间再分享其他用法,随着版本的升级,很多的用法也需要及时去学习和更新 ,最好的办法就是参考官网的文档学习,可以少踩很多坑。

上一篇:用percona monitoring plugins 监控mysql


下一篇:菜鸟学数据库(六)——方便快捷的开启、关闭Oracle服务