代码质量检测SonarQube
1. SonarQube基础java开发,需安装open JDK8版本
2. SonarQube需要依赖MySQL数据库,至少5.6版本以上
3. SonarQube的小型实例至少4G内存,如果大型实例需要16G内存
SonarQube安装部署
#安装软件
[root@sonar ~]# yum ‐y install git java unzip wget
#安装数据库
[root@sonar ~]# mkdir /server/tools -p
[root@sonar ~]# cd /server/tools/
[root@sonar ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz
#解压文件
[root@sonar tools]# tar xf mysql-5.6.44-linux-glibc2.12-x86_64.tar.gz
[root@sonar tools]# mv mysql-5.6.44-linux-glibc2.12-x86_64 /usr/local/mysql-5.6.44
[root@sonar tools]# cd /usr/local/
#创建软连接
[root@sonar local]# ln -s mysql-5.6.44 mysql
#添加用户和用户组
[root@sonar local]# useradd -u 618 -G mysql -s /sbin/nologin -M mysql
[root@sonar local]# useradd -u 618 -g mysql -s /sbin/nologin -M mysql
#创建数据目录
[root@sonar local]# mkdir -p /data/mysql/data
#授权用户
[root@sonar local]# chown -R mysql:mysql /data/mysql/data
[root@sonar local]# chown -R mysql:mysql /usr/local/mysql*
#添加环境变量
[root@sonar local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >>/etc/profile
[root@sonar local]# source /etc/profile
#初始化数据库
[root@sonar local]# yum -y install libaio-devel
[root@sonar local]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
#启动数据库
[root@sonar local]# cat /etc/my.cnf
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
server_id=6
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
[root@sonar local]# mv mysql/support-files/mysql.server /etc/init.d/mysqld
[root@sonar local]# /etc/init.d/mysqld start
#设置数据库密码
[root@sonar ~]# mysqladmin -uroot password '123'
#创建数据库
[root@sonar ~]# mysql -uroot -p123 -e "create database sonar charset utf8mb4;"
#SonarQube服务安装
下载sonar
https://www.sonarqube.org/downloads/
[root@sonar tools]# unzip sonarqube-7.0.zip
[root@sonar tools]# mv sonarqube-7.0 /usr/local/sonarqube
#创建sonar用户
[root@sonar tools]# useradd sonar
[root@sonar tools]# chown -R sonar:sonar /usr/local/sonarqube
#配置sonar连接本地数据库
[root@sonar ~]# grep '^[a-Z]' /usr/local/sonarqube/conf/sonar.properties
sonar.jdbc.username=root
sonar.jdbc.password=123
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
[root@sonar ~]#
#使用普通用户启动sonarqube(必须以普通用户启动,否则会启动失败)
[root@sonar ~]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh start"
浏览器访问:http://10.0.1.203:9000
用户名admin 密码admin
生成一个tokin,只显示一次记录好
配置管理sonar 安装插件
1.安装中文汉化插件
在页面上找到administrator > Marketplace > 搜索框 chinese,出现一个 chinese pack 然后点击install,安装完点击restart 重启生效
2.默认已安装C JAVA Python PHP JS 等代码质量分析工具,如果一个项目使用了JAVA CSS JS HTML,默认情况下sonar
只会检测JAVA,JS等代码的漏洞和bug,如果安装了HTML、CSS等插件,则会检测该项目代码中JAVA JS HTML CSS代码
的漏洞和bug
手动安装插件
[root@sonar tools]# tar xf sonar_plugins.tar.gz
[root@sonar tools]# mv /usr/local/sonarqube/extensions/plugins /usr/local/sonarqube/extensions/plugins_bak
[root@sonar tools]# mv plugins /usr/local/sonarqube/extensions/plugins
[root@sonar tools]# tar xf sonar_plugins.tar.gz -C /usr/local/sonarqube/extensions/
[root@sonar tools]# su - sonar -c "/usr/local/sonarqube/bin/linux-x86-64/sonar.sh restart"
jenkins安装SonarQube检测
[root@jenkins ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
[root@jenkins ~]# unzip sonar-scanner-cli-4.2.0.1873-linux.zip
[root@jenkins ~]# mv sonar-scanner-4.2.0.1873-linux /usr/local/sonar-scanner
#修改文件配置
[root@jenkins ~]# grep -Ev '#|^$' /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://10.0.1.203:9000
sonar.login=bd24704eaaf945f7c0e73f3b3b3958f0c3fc65ba #这里填写sonar服务器生成的令牌
sonar.sourceEncoding=UTF-8
[root@jenkins ~]#
#推送html代码并分析
[root@jenkins ~]# cd /var/lib/jenkins/workspace/test-job
/usr/local/sonar-scanner/bin/sonar-scanner
-Dsonar.projectKey=html
-Dsonar.sources=.
-Dsonar.host.url=http://10.0.1.203:9000
-Dsonar.login=bd24704eaaf945f7c0e73f3b3b3958f0c3fc65ba
手动推送JAVA项目
#方法一:
[root@jenkins tools]# cd /var/lib/jenkins/workspace/maven-job
[root@jenkins maven-job]# /usr/local/sonar-scanner/bin/sonar-scanner
-Dsonar.projectKey=java
-Dsonar.sources=.
#方法二
[root@jenkins tools]# cd /var/lib/jenkins/workspace/maven-job
[root@jenkins maven-job]# mvn sonar:sonar
-Dsonar.host.url=http://10.0.1.203:9000
-Dsonar.login=bd24704eaaf945f7c0e73f3b3b3958f0c3fc65ba
sonar集成到jenkins中
jenkins配置SonarQube服务端
系统管理->系统设置->sonarQube 告诉jenkins SonarQubeServer服务端地址
1.Name随意填写
2.URL添加SonarQube的地址
3token添加一个secret text 填写之前安装SonarQube的Token
jenkins配置执行sonar-scanner命令的家目录,让jenkins能找到该命令 系统管理->全局工具配置
java项目增加构建项sonar
方法一:
sonar.projectName=${JOB_NAME}
sonar.projectKey=java
sonar.sources=.
sonar.java.binaries=target/sonar
方法二:
clean
verify
sonar:sonar
-Dsonar.host.url=http://10.0.1.203:9000
-Dsonar.login=bd24704eaaf945f7c0e73f3b3b3958f0c3fc65ba
html项目构增加建项sonar
sonar.projectName=${JOB_NAME}
sonar.projectKey=html
sonar.sources=.