SonarQube学习笔记
一、简介
官方介绍SonarQube是一种自动代码审查工具,可检测代码中的错误,漏洞和代码味道。它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的连续代码检查。官方地址其中包含web、数据库(7.9以后不支持mysql了)、插件。
刚接触SonarQube的时候会被很多名词搞得晕头转向的,SonarQube、SonarQube Scanner、SonarQube runner等等。先大致说一下,之后随着安装就明白了。
SonarQube是server接受来自扫描器SonarQube Scanner的分析,然后将数据存入数据库,再在web端展示。而扫描器SonarQube Scanner里包含有很多插件,如:
这里其他的都挺好理解,有个SonarQube Scanner官方文档是介绍
意思是没有特定特定的扫描器比如gradle或maven之类的使用的通用扫描器。(SonarQube runner我理解应该是插件的一种,和gradle或maven属一个类型,反正在8.4的版本中看不到这个词了,可能是比较早期的版本有吧。)
二、安装
(一)服务器安装
因为7.9以后就不支持mysql数据库了,我们这里选择了7.6版本。
7.6下载地址
1、装备工作
创建sonar用户,将程序拷贝到家目录解压,并给予权限。
useradd sonar
chown sonar.sonar sonarqube-7.6.zip
mv sonarqube-7.6.zip /home/sonar
su - sonar
unzip sonarqube-7.6.zip
- bin目录存放了各个环境的启动脚本
- conf目录存放着sonarqube的配置文件
- logs目录存放着启动和运行时的日志文件
- elasticsearch安装包带的ES不用单独装
3、安装mysql、jdk
查看支持版本
1、安装mysqlmysql安装文档
jdk就不说了,自带的版本是1.8的也能用
2、创建用户
在mysql添加了一个 **sonarqube **的用户,并且创建了一个数据库叫 sonar,且将数据库的读写执行权限赋给 sonarqube用户,用于在站点初始化以及后续存储设置数据时对数据库进行修改。
create database sonarqube
grant all on sonarqube.* to sonarqube@'%' identified by 'Mysql@password.123';
GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP ON sonarqube.* TO 'sonarqube'@'%';
flush privileges;
MySQL数据库的共享锁定策略可能会影响SonarQube运行时。确保将is_read_committed_snapshot_on其设置为true防止SonarQube在重负载下面临潜在的死锁。
ALTER DATABASE YourSonarQubeDatabase SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
4、配置sonar
1、sonar.properties
cd conf
vim sonar.properties
添加
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
把logcalhost改成IP
sonar.jdbc.username = sonarqube
sonar.jdbc.password = yourpassword 这里改成你自己的密码,注意复杂度
2.wrapper.conf
wrapper.conf这个文件可以设置使用的java的路径,我这里用默认的java就不用改这个文件了。
3、es配置
配置要求
- vm.max_map_count 大于或等于262144
- fs.file-max 大于或等于65536
- 运行SonarQube的用户可以打开至少65536个文件描述符
- 运行SonarQube的用户可以打开至少2048个线程
使用root用户
vim /etc/sysctl.conf
vm.max_map_count=262144
sysctl -p
vim /etc/security/limits.conf
sonarqube - nofile 65536
sonarqube - nproc 2048
切换sonar用户
cd /home/sonar/sonarqube-7.6/elasticsearch/config
vim jvm.options
修改jvm内存,一般情况设置物理内存的三分之一就行
5、启动
cd sonarqube-7.6/bin/linux-x86-64
./sonar.sh start
./sonar.sh status
服务启动成功,默认端口是9000,如果启动没成功,到logs下边看看,不是es就是web.log
(二)docker部署
docker安装可以测试集群,集群的部署需要至少5台。
待补充。。。
三、安装插件
安装汉化插件
配置--应用市场--chinese--重启sonar