持续集成实践二之Jenkins与Sonar Qube集成

前言

  作为一名码农,曾几何时,无数次挑灯夜战,只为第二天为客户稳定演示系统,奈何到关键时候,会发现代码中会有很多坑,这个时候,往往是最令人崩溃的。如何能做到提前发现程序潜在的问题,找到隐藏的八阿哥,保证系统的稳定,一直是困扰着我们的问题。记得以前为了解决这个问题,部门专门组织每周一次代码走查,虽然最后情况有所改善,但费事费力,并未得到根本上的解决。

  所幸的是,有些大牛开发出了一系列代码质量检测工具,给我们这些码农带来了福音。下面就来介绍一款开源的代码质量管理系统——SonarQube。相信通过下面简单的介绍,你会跟我一样有种相见恨晚的感觉。

Sonar Qube简介

  SonarQube(曾用名Sonar(声纳))是一个开源的代码质量管理系统。它支持C/C++、JavaScript、C#、Java、COBOL、TypeScript、PL/SQL、PL/I、PHP、FLEX、Python、Swift、XML等超过20种编程语言的检测。Sonar可以通过插件Findbugs、Checkstyle等工具持续对代码进行检测,可以使我们尽早发现项目中的Bugs,漏洞及坏味道,从而保证软件产品质量。

环境准备

Sonar 安装

  1. SonarQube下载。首先,到Sonar官网https://www.sonarqube.org/downloads/)下载安装包,目前最新版本为SonarQube 6.7 (LTS *)。将SonarQube解压到本地任意目录。

  2. 配置Sonar数据库。Sonar默认使用的是H2的内嵌数据库,内嵌数据库只能用户测试场景,本例中使用mysql数据库,具体配置方法如下:

  在mysql中创建sonar数据库,以用户名root,密码admin为例。打开...sonarqube-6.6conf文件夹,找到sonar.properties文件,修改以下几个地方:

  配置数据库用户名及密码:

#sonar.properties

sonar.jdbc.username=root
sonar.jdbc.password=admin

  设置数据库库连接:

 #sonar.properties
 
 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
 sonar.jdbc.driverClassName:com.mysql.jdbc.Driver
 sonar.jdbc.validationQuery:select 1

  设置连接池:

#sonar.properties

 sonar.jdbc.maxActive:                      			20
 sonar.jdbc.maxIdle:                        			5
 sonar.jdbc.minIdle:                        			2
 sonar.jdbc.maxWait:                        			5000
 sonar.jdbc.minEvictableIdleTimeMillis:     	600000
 sonar.jdbc.timeBetweenEvictionRunsMillis:  30000
  1. 启动Sonar。

  启动Sonar有两种方式:一种,直接执行...sonarqube-6.6inwindows-x86-64StartSonar.bat;另一种,将Sonar安装为Windows服务,注意一定要以管理员身份运行...sonarqube-6.6inwindows-x86-64InstallNTService.bat,安装成功以后,运行...sonarqube-6.6inwindows-x86-64StartNTService.bat启动Sonar。Sonar启动以后,在浏览器中输入地址http://localhost:9000访问Sonar主页。

持续集成实践二之Jenkins与Sonar Qube集成

  1. Sonar汉化。

  下载Sonar汉化插件,链接:https://github.com/SonarQubeCommunity/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.18,将汉化插件拷贝到...sonarqube-6.6extensionsplugins文件夹,重启Sonar。Sonar重启以后,在浏览器中输入地址http://localhost:9000访问Sonar主页。

持续集成实践二之Jenkins与Sonar Qube集成

  1. Sonar插件安装。
  • 安装 SonarJava 插件Java代码分析器;

  • 安装SonarJS插件,JavaScript代码分析器;

  • 安装SonarXML插件,XML分析器;

  • 安装Web插件,HTML, JSP, JSF, ..代码分析器;

  • 安装CSS / SCSS / Less插件,CSS、Less代码分析器;

  • 安装SonarC# 插件,C#代码分析器;

  • 安装SonarQube :: Plugins :: SCM :: SVN插件;

  • 安装Checkstyle插件,Provide Checkstyle rules for Java projects;

  • 安装Findugs 插件,Provide Findbugs rules for analysis of Java projects。

  1. 配置SCM权限。

    持续集成实践二之Jenkins与Sonar Qube集成

Scanner安装

  1. 下载SonarQube Scanner 3.0.3安装包(链接:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner)。将SonarQube Scanner 3.0.3安装包解压到任意目录。

  2. 配置SonarQube Scanner。打开...sonar-scanner-3.0.3.778-windowsconf文件夹,找到sonar-scanner.properties并以文本编辑器打开,配置如下:

    # ----- Default SonarQube server
    sonar.host.url=http://localhost:9000
    
    # ----- Default source code encoding
    sonar.sourceEncoding=UTF-8
    

Jenkins集成

  1. Jenkins安装。请参照上一篇文章,链接:https://my.oschina.net/lsjcoder/blog/1573648

  2. 安装SonarQube Scanner for Jenkins插件安装。系统管理->管理插件,找到SonarQube Scanner for Jenkins插件,安装完成后重启Jenkins。

    持续集成实践二之Jenkins与Sonar Qube集成

  3. 配置SonarQube Server。

    持续集成实践二之Jenkins与Sonar Qube集成

  4. 配置SonarQube Scanner。

    持续集成实践二之Jenkins与Sonar Qube集成

  5. 项目中增加SonarQube Scanner扫描配置。

    持续集成实践二之Jenkins与Sonar Qube集成

    持续集成实践二之Jenkins与Sonar Qube集成

  6. 立即构建,查看控制台日志输出。

    持续集成实践二之Jenkins与Sonar Qube集成

分析结果

  点击上面的链接,即可打开SonarQube,查看项目分析结果。

持续集成实践二之Jenkins与Sonar Qube集成

总结

  在整合流程中,需要注意一下几点:

  1. mysql版本必须要安装5.6及以上版本,否则会导致Sonar因不兼容而无法正常运行;
  2. SonarQube未配置SCM权限,会导致报”SVNAuthenticationException“的错误;
  3. 注意一定要安装各种语言分析插件,否则会报”No quality profiles have been found, you probably don't have any language plugin installed“的错误;

  至此,Jenkins与Sonar Qube的初步集成工作已初步完成,下面就会针对自动检测出来的Bugs、漏洞及坏味道,进行逐一修复,还掉以前欠下来的技术债务。


欢迎关注我的微信公众号:

持续集成实践二之Jenkins与Sonar Qube集成