安装SonarQube
SonarQube包含的主要组件为
1. 数据库(支持MS SQL Server,Oracle,PostgreSQL,MySQL,规模较大时,官方不建议使用MySQL,而且MySQL很快就不支持了)
2. ElasticSearch
3. Web前端(Java应用)
安装步骤:
- 系统设置
#vi /etc/sysctl.conf
vm.max_map_count=262144
fs.file-max=65536
#vi /etc/security/limits.conf
sonarqube - nofile 65536
sonarqube - nproc 2048
# sysctl -p
#查看设置是否生效
sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u
2.建立系统用户
#user add sonarqube
#passwd sonarqube
3.检查seccomp是否开启,ElasticSearch需要使用这个,期望输出如下。如果没有开启,需要在配置文件$SONARQUBEHOME/conf/sonar.properties_ 中添加: sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false
#grep SECCOMP /boot/config-$(uname -r)
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
4.数据库搭建,由于公司规模小且有现成的Mysql数据库,故使用Mysql作为数据库。
5.修改数据库上传大小限制,这一步很重要,数据库默认的值为4M,如果不修改会出现扫描报告上传失败的错误。
#vi my.cnf
max_allowed_packet = 256M
6.数据盘挂载,官方建议为ES配置独立的SSD数据盘,以提高查询速度。
#fdisk /dev/sdb
#mkfs.ext4 /dev/sdb1
#mkdir /var/sonarqube
#vi /etc/fstab
/dev/sdb1 /var/sonarqube ext4 defaults 0 0
#mount -a
#chown -R sonarqube:sonarqube /var/sonarqube
7.创建数据库和数据库用户
mysql> create database sonarqube default character set utf8mb4 collate utf8mb4_unicode_ci;
Query OK, 1 row affected (0.02 sec)
mysql> create user sonarqube identified by 'sonarqube@niubi';
Query OK, 0 rows affected (0.02 sec)
mysql> grant all privileges on sonarqube.* to sonarqube;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
8.下载sonarqube
#mkdir /opt/sonarqube
#cd /opt/sonarqube && wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.5.zip
#unzip sonarqube-7.5.zip && chown -R sonarqube:sonarqube /opt/sonarqube/
#配置sonarqube, /opt/sonarqube/sonarqube-7.5/conf/sonar.properties
[root@localhost conf]# grep -v \# sonar.properties|sed "/^$/d"
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube@niubi
sonar.jdbc.url=jdbc:mysql://192.168.1.212:13306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.web.javaOpts=-server -Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError
sonar.web.host=0.0.0.0
sonar.web.port=80
sonar.ce.javaOpts=-Xmx512m -Xms512m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError
sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/tmp
9.下载并安装jdk
#cd /opt/ && wget https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
#tar -zxvf
#vi /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_191
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:$JAVA_HOME/jre/bin
#source /etc/profile
10.添加sonarqube服务
#vi /etc/systemd/system/sonarqube.service
[Unit]
Description=SonarQube service
After=syslog.target network.target
[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/usr/bin/nohup /opt/jdk1.8.0_191/bin/java -Xms512m -Xmx512m -Djava.net.preferIPv4Stack=true -jar /opt/sonarqube/sonarqube-7.5/lib/sonar-application-7.5.jar
StandardOutput=syslog
LimitNOFILE=65536
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
11.启动sonarqube
#systemctl enable sonarqube
#systemctl start sonarqube
使用sonar-scanner扫描Maven项目
1.下载apache-maven-3.5.3-bin.tar.gz 并解压
#tar -zxvf apache-maven-3.5.3-bin.tar.gz
2.配置Maven 仓库地址,根据项目实际的设置,将下面的配置整合到setting文件中
#vi /opt/ apache-maven-3.5.3/conf/settings.xml
<settings>
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- Optional URL to server. Default value is http://localhost:9000 -->
<sonar.host.url>
</sonar.host.url>
</properties>
</profile>
</profiles>
</settings>
3.克隆项目代码并分析代码
#git clone http://172.18.56.11/oaodz.git
#cd oaodz
# mvn clean install
# mvn sonar:sonar
NOTES: a.多模块的项目必须要使用install,然后扫描。 b.可以通过如下命令指定sonar-scanner的版本
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.5.0.1254:sonar
4.查看报告