一. 简介
Sonar是一个用于代码质量管理的开放平台,相信大家都不会陌生。Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具。官方网站https://www.sonarqube.org

二. Sonar的三种用法

  1. 编写代码时做实时代码检查,有问题直接IDE里提示。参考https://www.sonarlint.org
  2. 提交代码自动触发检测+辅助code review。插件说明:https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin 
  3. 定时全局代码检测

这三种方法分别发生在代码开发的3个时间阶段。很容易看到,第1种方式实际上是效率最高的。也推荐大家在自己的IDE里装上这个插件,将bug和不合规的代码扼杀在摇篮中。第3种用法则是一种事后的问题曝光,当发现时bug很可能已经进入master分支。如果没有前面2种用法,bug会持续不断的进入master分支,也缺乏对开发人员的有效提醒。
这篇文章主要说的是第二种方法

三. 为你的工程开启gitlab pipelines
1. 确保你有工程的master权限
2. 若看不见Settings/CICD这一栏,需要先打开Settings/General,确保Sharing and permissions 下的Pipelines不是disable的状态

3. 打开http://git.51.nb/你的工程地址/settings/ci_cd,并Enable sonar runner

4. 在工程根目录添加.gitlab-ci.yml文件(dev分支):

sonar:
  stage: test
  script: 
    - ~/sonar.sh
  tags:
    - sonar
说明:只扫描提交的代码,会过滤非java文件,过滤测试代码

四. 使用场景
场景1:提交代码自动扫描(注意,只扫描更改的文件),邮件通知作者本次提交有bug需要改

点击链接查看,sonar会自动在代码里加comment:

最下方展示该提交文件其他bug:

Sonar自动给你的gitlab添加todos:

场景2:merge request,code review,若存在bug,审核者可选择不予通过

场景3:每次扫描全部代码

.gitlab-ci.yml文件内容:


sonar:
 stage: test
  script: 
    - ~/sonar.sh -a
  tags:
    - sonar

场景4:特定分支扫描

.gitlab-ci.yml文件内容:


sonar:
 stage: test
  script: 
    - ~/sonar.sh
  tags:
    - sonar
  only:
    - master
    - release
    - dev

场景5:查看问题+定制化

在gitlab上系统的查看问题还是比较麻烦,我们可以进入http://10.247.22.137:9000/projects 查看问题。注意,这个是为gitlab提交自动扫描专门搭建的最新版的sonar,不同于公司现在用的sonar.51.nb:9000。如果觉得问题检测对于自己的代码块是误报,在经过直属上级的评估后可以将此规则基于该项目降级。


五. 要求

  • 对于p0,p1的java应用,强烈建议开启以上代码检测!
  • 其他级别的应用视情况开启即可


六. 后续计划

  • 任务由单机改为docker化,提升性能。
  • 和ares平台打通

结语
相信阅读本文的各位开发同学都不想仅限于代码的搬运工,Sonar就像是个代码经验极其丰富的老师,他会任劳任怨的帮助我们完善自己代码,让我们的code变得更健壮、更规范、更优雅。虽然有时候某些issue看上去不是什么大问题,但即使只是防御代码,也会有它的价值所在。希望大家都能成为有“代码洁癖”的程序猿

【转】使用sonar为你的代码质量保驾护航的更多相关文章

  1. sonar的安装与代码质量检测实例

    说明:sonar依赖数据库. mysql优化 1.笔者使用的是mysql数据库.首先对mysql做简单的优化配置. [root@localhost bin]# cat /etc/my.cnf [mys ...

  2. 测试框架:使用SONAR分析代码质量

    介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyl ...

  3. Java代码质量监控工具Sonar安装

    1.  代码质量七宗罪 Sonar是一个代码质量管理系统.它的帮助文档开篇明义,提出了代码质量的七宗罪.总结的比較到位.最好还是一看: 1.        Bug和隐藏Bug(Bugs and Pot ...

  4. ant+sonar+jacoco代码质量代码覆盖率扫描

    使用ant构建的java web项目如何做sonar代码质量扫描?以下就是实际遇到并成功使用的案例一.做sonar扫描的准备工作    1.给web项目增加build.xml构建脚本.    2.下载 ...

  5. 代码质量检测-Sonar

    一. Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+an ...

  6. sonar+Jenkins 构建代码质量自动化分析平台

    1.Sonar 介绍 Sonar 是一个用于管理代码质量的开源工具,可以分析代码中的bug和漏洞以及Code Smells,支持20多种编程语言的检测,如java,c/c++,python,php等语 ...

  7. jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)

    一.下载jdk并安装(最好jdk官网下载解压安装的) 二.下载maven并安装maven 三.安装jenkins及插件 安装checkstyle.pmd.findbugs.maven.sonar等相关 ...

  8. Linux下SonarQube代码质量平台的安装和使用方法

    Sonar简介: Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,Java ...

  9. Docker 搭建代码质量检测平台 SonarQube

    开始搭建 1.获取 postgresql 的镜像 $ docker pull postgres 2.启动 postgresql $ docker run --name db -e POSTGRES_U ...

随机推荐

  1. Android应用中创建绑定服务使得用户可以与服务交互

    原文:http://android.eoe.cn/topic/android_sdk 一个绑定的服务是客户服务器接口上的一个服务器.一个绑定的服务允许组件(如:活动)来绑定一个服务,传送请求,接收响应 ...

  2. WPF对象级资源的定义与查找

    文章概述: 本演示介绍了怎样定义WPF对象级的资源,并通过XAML代码和C#訪问和使用对象级资源. 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1hqvJNY8 在线播放 ...

  3. 88个 Linux 系统管理员必备的监控工具

    随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...

  4. MYSQL Range

    http://www.orczhou.com/index.php/2012/12/mysql-source-code-optimizer-range-and-ref/ http://www.orczh ...

  5. Multi-Cloud & Kubernetes: Cloud Academy November 2018 Data Report

    https://cloudacademy.com/research/multi-cloud-kubernetes-devops-cloud-academy-data-report-nov-18/ No ...

  6. Angular的重和利

    1.第一重:TypeScript,TypeScript语言的特性还是比较丰富的,而且一直在发展,再就是跨语言集成问题,要想Nice对第三方lib做集成,需要自己写d.ts,针对有些第三方库,这件事情有 ...

  7. angular五种服务详解

    在这之前angular学习笔记(十五)-module里的'服务'这篇文章里,已经大致讲解了ng中的'服务',在之后的很多地方也用到了服务,但是,所有的服务都是使用app.factory来创建的.但其实 ...

  8. 【转】Android项目使用Ant打包,生成build.xml

    记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...

  9. 【Cmd】那些年,我们迷恋的cmd命令(一)

    小续 还记得,那些年玩hack的朋友吗,现在玩这个的,基本都是小孩子了(俗称脚本小子). 还记得,那些年敲过的命令吗,现在的孩子,都用工具了(叫工具党). 孩子们,健康的网络环境需要大家一起去维护. ...

  10. 项目中开机自启动的 node-webkit开机自启动

    node-webkit开机自启动 Posted in 前端, 后端 By KeenWon On 2014年8月11日 Views: 1,215 node-webkit没有提供开机自启动的接口,在git ...