【转】使用sonar为你的代码质量保驾护航
一. 简介
Sonar是一个用于代码质量管理的开放平台,相信大家都不会陌生。Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具。官方网站https://www.sonarqube.org
二. Sonar的三种用法
- 编写代码时做实时代码检查,有问题直接IDE里提示。参考https://www.sonarlint.org
- 提交代码自动触发检测+辅助code review。插件说明:https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin
- 定时全局代码检测
这三种方法分别发生在代码开发的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
四. 使用场景
点击链接查看,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为你的代码质量保驾护航的更多相关文章
- sonar的安装与代码质量检测实例
说明:sonar依赖数据库. mysql优化 1.笔者使用的是mysql数据库.首先对mysql做简单的优化配置. [root@localhost bin]# cat /etc/my.cnf [mys ...
- 测试框架:使用SONAR分析代码质量
介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyl ...
- Java代码质量监控工具Sonar安装
1. 代码质量七宗罪 Sonar是一个代码质量管理系统.它的帮助文档开篇明义,提出了代码质量的七宗罪.总结的比較到位.最好还是一看: 1. Bug和隐藏Bug(Bugs and Pot ...
- ant+sonar+jacoco代码质量代码覆盖率扫描
使用ant构建的java web项目如何做sonar代码质量扫描?以下就是实际遇到并成功使用的案例一.做sonar扫描的准备工作 1.给web项目增加build.xml构建脚本. 2.下载 ...
- 代码质量检测-Sonar
一. Sonar简介 sonarqube系统是一个代码质量检测工具 由以下四个组件组成(https://docs.sonarqube.org/display/SONAR/Architecture+an ...
- sonar+Jenkins 构建代码质量自动化分析平台
1.Sonar 介绍 Sonar 是一个用于管理代码质量的开源工具,可以分析代码中的bug和漏洞以及Code Smells,支持20多种编程语言的检测,如java,c/c++,python,php等语 ...
- jenkins插件findbugs+pmd+checkstyle结合sonar与maven(java环境代码质量和代码规范管理)
一.下载jdk并安装(最好jdk官网下载解压安装的) 二.下载maven并安装maven 三.安装jenkins及插件 安装checkstyle.pmd.findbugs.maven.sonar等相关 ...
- Linux下SonarQube代码质量平台的安装和使用方法
Sonar简介: Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,Java ...
- Docker 搭建代码质量检测平台 SonarQube
开始搭建 1.获取 postgresql 的镜像 $ docker pull postgres 2.启动 postgresql $ docker run --name db -e POSTGRES_U ...
随机推荐
- Android应用中创建绑定服务使得用户可以与服务交互
原文:http://android.eoe.cn/topic/android_sdk 一个绑定的服务是客户服务器接口上的一个服务器.一个绑定的服务允许组件(如:活动)来绑定一个服务,传送请求,接收响应 ...
- WPF对象级资源的定义与查找
文章概述: 本演示介绍了怎样定义WPF对象级的资源,并通过XAML代码和C#訪问和使用对象级资源. 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1hqvJNY8 在线播放 ...
- 88个 Linux 系统管理员必备的监控工具
随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...
- MYSQL Range
http://www.orczhou.com/index.php/2012/12/mysql-source-code-optimizer-range-and-ref/ http://www.orczh ...
- Multi-Cloud & Kubernetes: Cloud Academy November 2018 Data Report
https://cloudacademy.com/research/multi-cloud-kubernetes-devops-cloud-academy-data-report-nov-18/ No ...
- Angular的重和利
1.第一重:TypeScript,TypeScript语言的特性还是比较丰富的,而且一直在发展,再就是跨语言集成问题,要想Nice对第三方lib做集成,需要自己写d.ts,针对有些第三方库,这件事情有 ...
- angular五种服务详解
在这之前angular学习笔记(十五)-module里的'服务'这篇文章里,已经大致讲解了ng中的'服务',在之后的很多地方也用到了服务,但是,所有的服务都是使用app.factory来创建的.但其实 ...
- 【转】Android项目使用Ant打包,生成build.xml
记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...
- 【Cmd】那些年,我们迷恋的cmd命令(一)
小续 还记得,那些年玩hack的朋友吗,现在玩这个的,基本都是小孩子了(俗称脚本小子). 还记得,那些年敲过的命令吗,现在的孩子,都用工具了(叫工具党). 孩子们,健康的网络环境需要大家一起去维护. ...
- 项目中开机自启动的 node-webkit开机自启动
node-webkit开机自启动 Posted in 前端, 后端 By KeenWon On 2014年8月11日 Views: 1,215 node-webkit没有提供开机自启动的接口,在git ...