51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2388|回复: 0
打印 上一主题 下一主题

[selenium] 代码质量管理:SonarQube + Jenkins Pipeline配置

[复制链接]
  • TA的每日心情
    无聊
    前天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-4 14:07:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前段时间对自己的项目进行代码质量扫描,曾经以为自己的代码质量算是不错的,结果发现一堆的bug或者smell code,灵魂受到1w点伤害。
    可以想到,在时间紧、任务中的情况下,代码质量绝对是不能够保证的,虽然功能算是完整,但是可能就在某个隐藏的角落,就有无数的bug在潜伏着,所以有时间的话都对自己的代码进行代码质量检查吧。虽然不能保证有完美的代码,但是可以把bug数降低,也可以根据扫描的结果养成良好的编程习惯。
    身为程序员就得严谨。
    闲言碎语不再讲。
    本文主要是介绍通过Jenkins Pipeline与SonarQube集成,对代码进行扫描,这里使用的是Jenkins2.19.1,SonarQube6.4。

    1 基础工作
    1.1 安装插件
    在Jenkins管理界面中的 系统管理->插件管理 安装最新的 SonarQube plugin 插件,并重启Jenkins

    1.2 配置/安装SonarQube Scanner
    等待重启之后,在 系统管理->Global Tool Configuration 中配置/安装最新的SonarQube Scanner:

    可以选择自动安装,这样会在需要用到的时候自动从默认地址安装到默认路径,不需要手动其下载安装,非常方便。当然,也可以自己去网上下载,如果是自己下载的话,需要把自动安装的勾去掉,然后填上自己下载的SonarQube Scanner运行包路径


    1.3 配置SonarQube服务
    因为SonarQube Scanner工具需要把扫描的代码及结果发送到SonarQube服务器上,所以需要配置SonarQube服务地址。
    在 系统管理->系统设置 中增加 SonarQube servers 相关配置

    至此,基础配置工作就结束了,下面可以开始配置扫描任务了。

    2. 配置待扫描项目
    首先创建一个Jenkins Pipeline项目

    然后修改Pipeline脚本,比如:
    1.    node {
    2.   stage('SCM') {
    3.   git([url: 'https://github.com/howardliu-cn/cynomys.git'])
    4.   }
    5.   stage('SonarQube analysis') {
    6.   def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
    7.   withSonarQubeEnv('SonarQube') {
    8.   sh "${sonarqubeScannerHome}/bin/sonar-scanner"
    9.   }
    10.   }
    11.   }
    复制代码
    如果需要指定从某个分支复制代码,可以增加branch参数;如果使用ssh方式复制代码,需要通过credentialsId参数配置Jenkins中配置好的秘钥ID。比如:

    1. node {
    2.   stage('SCM') {
    3.   git([url: 'git@10.6.3.213:RD/messenger.git', branch: 'develop', credentialsId: 'fae8b1b9-8818-48e9-a28a-24b928015a6c'])
    4.   }
    5.   stage('SonarQube analysis') {
    6.   def sonarqubeScannerHome = tool name: 'SonarQube Scanner'
    7.   withSonarQubeEnv('SonarQube') {
    8.   sh "${sonarqubeScannerHome}/bin/sonar-scanner"
    9.   }
    10.   }
    11.   }
    复制代码
    这两种方式都需要在项目的根路径下面有一个sonar-project.properties文件,其内容如下:

    1. # must be unique in a given SonarQube instance
    2.   sonar.projectKey=cynomys:0.0.1
    3.   # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
    4.   sonar.projectName=cynomys
    5.   sonar.projectVersion=0.0.1
    6.   # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
    7.   # This property is optional if sonar.modules is set.
    8.   sonar.sources=.
    9.   sonar.exclusions=**/test/**,**/target/**
    10.   sonar.java.source=1.8
    11.   sonar.java.target=1.8
    12.   # Encoding of the source code. Default is default system encoding
    13.   sonar.sourceEncoding=UTF-8
    复制代码
    除了通过Pipeline的方式之外,还可以创建普通项目进行扫描,可以参考这里。

    修改完成,保存,就可以开始扫描了。

    3. 开始扫描
    直接在项目页面点击立即构建,就会开始扫描。然后登录SonarQube服务,就能够看到代码质量检查的结果了。




    4. 个人建议
    • 代码质量检查是非常必要的,可以在代码运行之前就可以找到很多bug
    • smell code虽然不影响运行,但是在某些情况下对代码的重构、复用、修改造成不必要的影响
    • 工具只是工具,可以减少低效劳动,但是绝对不会是万能的
    • 希望之后不会被吐槽是在写bug。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 16:41 , Processed in 0.067327 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表