原 荐 SonarQube+Scanners代码质量管理

栏目: 数据库 · 发布时间: 5年前

内容简介:sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。SonarQube平台由4部分组成:

简介

sonaqube是一个开源代码质量管理平台,致力于持续分析和测量技术质量。

系统构成

SonarQube平台由4部分组成:

  1. SonarQube服务器
    1. Web服务器的开发者,管理者,浏览质量快照和配置SonarQube实例
    2. 基于Elasticsearch搜索服务器从UI向后搜索
    3. 负责处理代码分析报告计算引擎服务器,并将其保存在数据库SonarQube
  2. SonarQube数据库来存储
  3. 多个插件
  4. 一个或多个 SonarQube Scanners :可以与CI服务进行集成

系统构成和相互关系:

原 荐 SonarQube+Scanners代码质量管理

安装SonarQube

sonarqube安装很简单, 下载 (直接win下载,然后上传到 linux 服务器)安装包后直接解压即可:

# 创建sonar用户及工作目录
$ useradd sonar

# 解压
$ unzip sonarqube-6.7.5.zip 

$ cd /home/sonar/sonarqube-6.7.5

# 在当前终端启动(方便排错)
$ ./bin/linux-x86-64/sonar.sh console

# 直接在后台运行
$ ./bin/linux-x86-64/sonar.sh start

说明:sonarqube依赖于Elasticsearch插件,es插件不能用root运行,所以使用普通用户运行sonar,否则将会出现如下报错:

Caused by: java.lang.RuntimeException: can not run elasticsearch as root
# Elasticsearch不能用root运行。

参考: https://blog.csdn.net/zdyueguanyun/article/details/79447260

检查启动状态

$ netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      771/sshd            
tcp        0      0 127.0.0.1:32000         0.0.0.0:*               LISTEN      5258/java           
tcp6       0      0 :::22                   :::*                    LISTEN      771/sshd            
tcp6       0      0 127.0.0.1:9092          :::*                    LISTEN      5343/java           
tcp6       0      0 127.0.0.1:35048         :::*                    LISTEN      5443/java           
tcp6       0      0 :::9000                 :::*                    LISTEN      5343/java           
tcp6       0      0 127.0.0.1:9001          :::*                    LISTEN      5273/java

web管理

默认由9000端口提供UI管理页面,在浏览器访问: http://192.168.228.129:9000 ,界面如下(管理员:admin,密码:admin): 原 荐 SonarQube+Scanners代码质量管理

数据库配置

创建数据库并授权

  • 创建一个单独的库sonar并授权给sonar用户:

    mysql> create database sonar;
    mysql> CREATE USER 'sonarqube'@'%' IDENTIFIED BY '123456';
  • mysql调优:

    $ vim /etc/my.cnf
    binlog-format=MIXED             # 指定binlog格式为mixed。默认为STATEMENT,数据无法正常migration
    innodb_buffer_pool_size = 200M  # 最佳数值为70%~80%服务器内存
    query_cache_size = 15M
    # 参考:https://www.percona.com/blog/2007/11/01/innodb-performance-optimization-basics/
    
    $ systemctl restart mysqld
  • 排错1:

    • 无法初始化数据库:

      # 报错:logs/web.log
      Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
    • 解决办法:

      $ vim /etc/my.cnf
      binlog-format=MIXED             # 指定binlog格式为mixed。默认为STATEMENT,数据无法正常
      # 参考:https://www.devside.net/wamp-server/mysql-error-impossible-to-write-to-binary-log-since-binlog_format-statement
  • 排错2:

    • 历史脏数据冲突:

      # 报错:
      Web server startup failed: Current version is too old. Please upgrade to Long Term Support version firstly.
    • 解决办法: 清理历史数据(因首次安装,直接drop掉sonar表,然后重建),然后重启sonar即可!

配置sonarqube

系统要求

内核

  • vm.max_map_count 大于等于 262144
  • fs.file-max 大于等于 65536
  • 文件描述符 65536
  • 线程数 2048
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 2048

系统文件

默认情况下,Elasticsearch数据存储在 <install_directory> / data中 ,但不建议用于 生产实例 。相反,您应该将此数据存储在其他位置,最好是在具有快速I / O的专用卷中。除了保持可接受的性能之外,这样做还可以简化SonarQube的升级。

$ mkdir -p /var/sonarqube/data
$ mkdir -p /var/sonarqube/temp
$ chown -R sonar:sonar /var/sonarqube

配置sonar

$ vim conf/sonar.properties
sonar.jdbc.username=sonar  # 数据库用户名
sonar.jdbc.password=123456 # 数据库密码
sonar.jdbc.url=jdbc:mysql://192.168.228.129:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false  # 数据库服务器

sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp

$ ./bin/linux-x86-64/sonar.sh restart

加入systemd管理

$ vim /usr/lib/systemd/system/sonar.service
[Unit]
Description=SonarQube service
After=network.target syslog.target

[Service]
Type=forking

User=sonar
Group=sonar

ExecStart=/bin/bash /home/sonar/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh start
ExecStop=/bin/bash /home/sonar/sonarqube-6.7.5/bin/linux-x86-64/sonar.sh stop

Restart=always

LimitNOFILE=65536


[Install]
WantedBy=multi-user.target

$ systemctl enable sonar  # 开机启动

部署sonaqube集群: https://docs.sonarqube.org/display/SONAR/Installing+a+SonarQube+cluster

安装SonarQube插件

管理插件的方法有如下两种:

  • 在soanrqube UI界面,通过 Marketplace 安装插件;
  • 手动安装——当sonar主机无法访问外网时需要进行手动安装。

Marketplace

  • 前提:
    • sonar服务器能上网;
    • 拥有管理员权限。
  • 安装方法:
    • 在marketplace找到需要的插件及捆绑的插件;
    • 点击安装即可!
    • 安装完成后点击“ Restart ”使新插件生效。

原 荐 SonarQube+Scanners代码质量管理

手动安装

ldap集成

直接使用admin用户在UI界面安装(可能有点慢): 原 荐 SonarQube+Scanners代码质量管理

安装完成后“ Restart ”生效,可以再sonar服务器查看:

![image-20181023160837712](/Users/chunyu/Library/Application Support/typora-user-images/image-20181023160837712.png)

如果因网络问题安装失败,可以 手动安装:

配置sonar.properties

参考: https://docs.sonarqube.org/display/SONAR/LDAP+Integration#LDAPIntegration-ConfigurationExamples

示例:

# 配置ldap服务器
sonar.security.realm=LDAP
ldap.url=ldap://ldap.chunyu.club
ldap.bindDn=cn=reader,dc=chunyu,dc=club
ldap.bindPassword=xxxxxxxxxxx
 
# User Configuration
ldap.user.baseDn=OU=People,DC=chunyu,DC=club
ldap.user.request=(uid={login})
ldap.user.realNameAttribute=uid
ldap.user.emailAttribute=mail
 
# Group Configuration
ldap.group.baseDn=ou=groups,DC=chunyu,DC=club
ldap.group.request=(&(objectClass=posixGroup)(memberUid={uid}))

升级SonarQube

官方文档: https://docs.sonarqube.org/display/SONAR/Upgrading

安装Scanner

下载地址 ,本地下载然后上传到sonar服务器。

# 解压到任何目录都可以,后续通过系统环境变量配置scanner相关命令
$ unzip sonar-scanner-cli-3.2.0.1227-linux.zip
## 为了方便管理,将解压文件放到sonar安装目录下:/home/sonar/sonarqube-6.7.5/
$ mv sonar-scanner-3.2.0.1227-linux /home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0
$ chown -R sonar:sonar /home/sonar/sonarqube-6.7.5/

配置系统环境变量

$ vim /etc/profile
export SONAR_SCANNER_HOME=/home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0
export PATH=${SONAR_SCANNER_HOME}/bin:${PATH}

$ source /etc/profile

# 检查配置结果
$ sonar-scanner -v
INFO: Scanner configuration file: /home/sonar/sonarqube-6.7.5/sonar-scanner-3.2.0/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarQube Scanner 3.2.0.1227
INFO: Java 1.8.0_121 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-693.el7.x86_64 amd64
# Success!

SonarQube使用指南

创建sonar-project.properties文件

进入要进行代码分析的项目根目录,新建sonar-project.properties文件,内容如下:

# must be unique in a given SonarQube instance
sonar.projectKey=test:python
# this is the name displayed in the SonarQube UI
sonar.projectName=chunyu_community  # 要展示在UI界面的项目名称
sonar.projectVersion=1.0
 
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=./                  # 项目文件目录
 
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8

执行命令:

$ sonar-scanner

查看结果

待上述命令执行结束后便可以在UI界面看到扫描结果:

原 荐 SonarQube+Scanners代码质量管理


以上所述就是小编给大家介绍的《原 荐 SonarQube+Scanners代码质量管理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数字化生存

数字化生存

(美)Nicholas Negroponte(尼古拉·尼葛洛庞帝) / 胡泳、范海燕 / 电子工业出版社 / 2017-1-1 / 68.00

《数字化生存》描绘了数字科技为我们的生活、工作、教育和娱乐带来的各种冲击和其中值得深思的问题,是跨入数字化新世界的*指南。英文版曾高居《纽约时报》畅销书排行榜。 “信息的DNA”正在迅速取代原子而成为人类生活中的基本交换物。尼葛洛庞帝向我们展示出这一变化的巨大影响。电视机与计算机屏幕的差别变得只是大小不同而已。从前所说的“大众”传媒正演变成个人化的双向交流。信息不再被“推给”消费者,相反,人们或他......一起来看看 《数字化生存》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具