SonarQube 安装部署
SonarQube安装部署
简介
SonarQube是一个管理代码质量的开放平台,可以从七个维度检测代码质量:
- 复杂度分布(complexity):代码复杂度过高将难以理解、难以维护;
- 重复代码(duplications):程序中包含大量复制粘度的代码是质量低下的表现;
- 单元测试(unit tests):统计并展示单元测试覆盖率;
- 编码规范(coding rules):通过Findbugs、PMD、CheckStyle等规范代码编写;
- 注释(commments):少了可读性差,多了看起来费劲;
- 潜在的Bug(potential bugs):通过Findbugs、PMD、CheckStyle等检测潜在bug;
- 结构与设计(architecture & design):依赖、耦合等。
SonarQube 可以集成不同的测试工具(CppCheck、CheckStyle、Junit、CppUnit等),代码分析工具、持续集成工具(Jenkins)、IDE(VisualStudio)。
Sonar通过对代码质量分析结果数据进行在加工处理,通过量化的方式来度量代码的质量变化,从而可以方便的对工程进行代码质量管理。
支持语言:JAVA PHP C# C COBOL PL/SQL FLEX等20余种。
组成
SonarQube平台的组成:
- 数据库:存放SonarQube的配置数据、代码质量的快照数据。
- Web服务:用于查看SonarQube的配置数据、代码质量的快照数据。
- 分析器:对项目代码进行分析、生成质量结果数据并存入数据库中(分析器有多中,此处选择SonarQube Maven Plugin)。
安装环境
安装JDK
去官网下载JDK
:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
安装JDK
将下载得到的jdk-8u161-linux-x64.rpm
包保存到Linux
主机
# rpm -ivh jdk-8u161-linux-x64.rpm
设置环境变量,编辑~/.bashrc
,
# vim ~/.bashrc
在文件的末尾添加以下行
export JAVA_HOME=/usr/java/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH
使环境配置生效
# source ~/.bashrc
测试Java
环境,在终端输入:java -version
查看是否正常显示版本信息,若显示则安装成功
Note:
如果已经预装了openjdk,请先卸载
# yum list installed | grep openjdk # 根据执行结果进行卸载
安装MySQL
MySQL的Server在CentOS 7上从默认软件列表中被移除了,用MariaDB来代替,所以这导致我们必须要去官网上进行下载,找到链接,用wget打开,然后再安装:
# wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
# rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# yum -y install mysql mysql-server mysql-devel
启动MySQL服务
# systemctl start mysqld
获取安装MySQL时的初始密码并登录MySQL
# grep 'temporary password' /var/log/mysqld.log
# mysql -u root -p
登录成功后修改密码,首先修改安全策略为0,然后将密码长度限制修改为1,最后修改密码
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> set password for root@localhost=password('root');
设置sonar的用户名和数据库
# adduser sonar
# passwd sonar # 修改sonar用户密码
# su sonar # 切换为sonar用户安装
mysql> create user 'sonar'@'%' identified by 'sonar';
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on sonar.* to 'sonar'@'%';
mysql> flush privileges;
安装SonarQube
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip
$ unzip sonarqube-7.3.zip //若提示unzip命令找不到,用yum -y install unzip安装即可
$ mv sonarqube-7.3 sonarqube
$ mv sonarqube /usr/local/
# chown -R sonar:sonar /usr/local/sonarqube
配置sonar
$ vim /usr/local/sonarqube/conf/sonar.properties
如图设置以下选项
启动sonar
$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
成功启动后,访问本地 http://IP:9000,SonarQube 初始管理员账号为 admin,默认密码为 admin,登录后可修改密码。
Note:
如果遇到Sonar启动不起来,查看日志自动关闭的问题,可以采用以下方法解决
# echo -e "vm.max_map_count=262144" >> /etc/sysctl.conf
# sysctl -p
# echo -e "sonar hard nofile 65536" >> /etc/security/limits.conf
# echo -e "sonar soft nofile 65536" >> /etc/security/limits.conf
然后注销sonar用户重新以sonar身份登录后再次启动:
$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh start
插件安装:如果需要下载插件的话,各个版本不一样,如图所示,先点击Administration,再打开Marketplace就可以看到Plugins各种插件了。
SonarQube 支持分析的语言有很多,像Java、Python、Php、C/C++、C#、HTML、JavaScript、PL/SQL、Objective C等20+语言,当我们需要支持分析什么语言时,只需要去插件中心安装对应语言的插件即可,非常方便,可扩展性强,根据自己的需要去选择插件。
实验验证
本次实验验证以Java工程为例
安装配置sonar-scanner
- 获取sonar-scanner
# wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
# unzip sonar-scanner-cli-3.2.0.1227-linux.zip
# mv sonar-scanner-3.2.0.1227-linux sonar-scanner
# mv sonar-scanner /usr/local/
# chown -R sonar:sonar sonar-scanner
- 配置sonar-scanner环境变量
# vim ~/.bashrc
- 使配置生效
# source ~/.bashrc
- 检查环境配置是否成功
$ sonar-scanner -version
- 配置sonar-scanner.properties文件
$ vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
验证过程
- 添加Java Maven测试工程
编写测试工程
- 添加sonar-project.properties文件
在工程根目录中添加sonar-project.properties文件,格式如下
sonar.projectKey=com.geovis //项目的唯一标识
sonar.projectName=helloworld //项目的名字
sonar.projectVersion=1.0 //项目的版本
sonar.sources=/root/helloworld/src //项目的源码目录,多目录以英文逗号分隔
例如我的项目结构如下
那么此项目配置文件应为
- 代码质量检查
设置完后,终端运行sonar-scanner
命令,开始项目源代码的分析
- 查看结果
命令运行完成之后,访问http://localhost:9000,输入账号密码即可查看分析结果,如下图
SonarQube 整合 LDAP 和 CAS 单点登录
SonarQube
整合LDAP
和CAS
单点登录的过程请参考我的另一篇博客SonarQube 整合 LDAP 和 CAS 单点登录