持续集成 SonarQube 分享 (一):介绍与安装

转载来自:https://testerhome.com/topics/8113

背景介绍

SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码风格问题,缺乏单元测试等问题, 并通过一个web ui展示出来。

持续集成 SonarQube 分享 (一):介绍与安装_第1张图片

1. 用户本地使用IDE的插件进行代码分析
2. 用户上传到源代码版本控制服务器
3. 持续集成,使用Sonar Scanner进行扫描
4. 将扫描结果上传到SonarQube服务器
5. SonarQube server将结果写入db
6. 用户通过web ui查看扫描结果
7. SonarQube导出结果到其他需要的服务

一、SonarQube的架构

  • Database
  • SonarQube Server
  • SonarQube Scanner
  • Project
  • Nginx (如果不需要通过nginx转发则不需要Nginx模块)
    持续集成 SonarQube 分享 (一):介绍与安装_第2张图片

二、SonarQube的安装

1、环境准备

  • java环境
  • 数据库(支持SQL Server、Mysql、Oracle、PostgreSQL)

2、安装过程

(1)mysql创建user并授权(安装sonarqube6.3需要Mysql5.6以上)

> CREATE USER 'sonar’@'%' IDENTIFIED BY 'password';
> GRANT all privileges ON sonarqube.* TO sonar’@‘%' IDENTIFIED BY 'password';
> flush privileges;
> create database sonarqube;

(2)SonarQube Server搭建

下载地址

Downloads

sonarqube服务中配置修改:/conf/sonar.properties

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.jdbc.username=sonar
sonar.jdbc.password=password
sonar.jdbc.url=jdbc:mysql://db_host:db_port/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
#sonar.web.context=/your_prefix  //非必须,若需要在访问sonarqube服务时加上统一的前缀则配置此项

启动服务:sonarqube-6.3/bin/linux-x86-64

./sonar.sh start

stop服务

./sonar.sh stop

(3)SonarQube Scanner服务

下载地址

Downloads

sonar-scanner中配置修改:conf/sonar-scanner.properties

sonar.host.url=http://your_host:your_port/[your_prefix]

添加环境变量

export PATH=$PATH:/usr/local/sonar-scanner-2.9.0.670/bin

查看服务是否Ok

sonar-scanner -h 

文档:click here

(4)在Project中使用

将sonar-project.properties 放入需要扫描的project中

#sonar-project.properties内容如下
sonar.projectKey=project_key
sonar.projectName=project_name
sonar.projectVersion=1.0
sonar.sources=./
sonar.language=py //需要扫描哪种语言的代码,如python:py,java:java
sonar.sourceEncoding=UTF-8
sonar.host.url=http://your_host:your_port/[your_prefix]

启动分析

sonar-scanner -X

持续集成 SonarQube 分享 (一):介绍与安装_第3张图片

上述是sonarqube的一些基本介绍与安装过程,下期继续分享一些实用的plugin~

你可能感兴趣的:(linux)