Sonar

多环境多需求并行下的代码测试覆盖率统计工具实现

别说谁变了你拦得住时间么 提交于 2020-02-26 03:41:41
马蜂窝技术原创内容,更多干货请关注公众号:mfwtech 测试覆盖率常被用来衡量测试的充分性和完整性,也是测试有效性的一个度量。「敏捷开发」的大潮之下,如何在快速迭代的同时保证对被测代码的覆盖度和产品质量,是一个非常有挑战性的话题。 在马蜂窝大交通、酒店等交易相关业务中,项目的开发和测试实践同样遵循敏捷的原则,迭代周期短、速度快。因此,如何依据测试覆盖率数据帮助我们有效判断项目质量、了解测试状态、提升迭代效率,是我们一直很重视的工作。 Part.1 测试覆盖率统计中的挑战 对于功能测试而言,通常可以通过充分了解需求、完善的测试用例、接口测试、Review 技术方案等来保证测试充分性。但随着业务规模快速发展,业务逻辑越来越复杂,系统级别交互越来越多,这些方法都不能保证所有的代码一定被全部测试过,也给测试人员带来极大挑战。 说到这儿和大家分享一个因为测试覆盖不充分,影响到线上业务的真实案例。事件起因是项目提测阶段一个微服务 Sonar 扫描没通过,开发同学为了修复 Sonar 发现的问题而重构了一部分历史代码,却导致一个原有发券需求的错误。当天下午运营触发发券后 Bug 出现直接导致生单不可用,并且持续了将近一个小时。这里的问题就是发券功能与此次需求无关,开发人员修改代码后测试人员不知道,也没有经过测试,但跟随本次需求一起上线了,测试用例无法覆盖到。

利用开源软件搭建JAVA工程CI&CD自动化工具链

删除回忆录丶 提交于 2020-02-26 02:15:28
JAVA传统项目交付流程的问题 开发和运维间环境有明显差异 代码缺乏统一质量度量 客户要求上线时间紧,人工测试慢,导致测试不充分,时常做线上BUG修复 打造工具链 ● 源码管理Gitlab ● 持续集成Jenkins ● 代码扫描SonarQube ● 接口测试PostMan+NewMan ● 制品管理ArtifactoryOSS版本(仅支持Maven) ● 自动部署Ansible GitLab安装 vim /etc/yum.repos.d/gitlab-ce.repo [gitlab-ce] name=gitlab-ce baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6 Repo_gpgcheck=0 Enabled=1 Gpgkey=https://packages.gitlab.com/gpg.key sudo yum makecache sudo yum intall gitlab-ce sudo gitlab-ctl start # 启动所有 gitlab 组件; sudo gitlab-ctl stop # 停止所有 gitlab 组件; sudo gitlab-ctl restart # 重启所有 gitlab 组件; sudo gitlab-ctl status # 查看服务状态; sudo

windows环境下安装sonarQube

邮差的信 提交于 2020-02-03 05:35:14
因公司业务需求,需要搭建一套完善的CI/CD流程,为了保证代码质量,因此选用sonarQube作为我们的质量管理工具,后续会带来整套的CI/CD部署流程,首先介绍如何在本地开发环境搭建一套sonarQube。 1、官网下载 sonarQube ,我下载的是当前的最新版本V8.1 2、下载完成之后解压到自己想要的目录,比如D:\sonarQube 3、进入文件根目录下,修改配置文件 配置Java环境。编辑conf/wrapper.conf文件,配置jdk路径,点此查看 jdk安装与配置 wrapper.java.command=C:\Program Files\Java\jdk-13.0.2\bin\java 配置数据库。考虑到性能问题,SonarQube在V7.9版本之后放弃了对mysql数据库的支持,如果需要配置mysql请下载V7.9之前的版本,编辑conf/sonar.properties文件,我安装的是PostgreSQL, 下载地址 。 sonar.jdbc.username=sonar sonar.jdbc.password=123456 sonar.jdbc.url=jdbc:postgresql://localhost/sonar 4、进入bin\windows-x86-64目录下,双击StartSonar以启动服务 5、访问localhost:9000

idea 集成sonarLint检查代码bugs

人走茶凉 提交于 2020-01-28 01:14:54
1、目标   idea集成sonar的代码检查,实现可以在提交代码前就检查你的代码,而不是将代码提交之后,之后再去检查。 Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题 1. 不遵循代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写   2. 潜在的缺陷 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的缺陷   3. 糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试   4. 重复 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示源码中重复严重的地方   5. 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷   6. 缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率   7. 糟糕的设计 通过sonar可以找出循环,展示包与包、类与类之间相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,

配置sonar、jenkins进行持续审查

为君一笑 提交于 2020-01-25 19:11:06
原文地址: http://www.cnblogs.com/gao241/p/3190701.html 本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。 一、安装配置sonar 1、Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。 2、配置数据库 Apache Derby 是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql为例介绍如何配置数据库: 1)创建数据库

配置sonar、jenkins进行持续审查

你离开我真会死。 提交于 2020-01-25 19:10:45
本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkins进行集成,通过pmd-cpd、checkstyle、findbugs等工具对代码进行持续审查。 一、安装配置sonar 1、Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。 同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。 2、配置数据库 Apache Derby 是Sonar自带并且默认安装使用的数据库,此外Sonar对如下数据库提供支持:MySQL 5.x, Oracle 10g XE, Postgresql, MS SqlServer等,本文以mysql为例介绍如何配置数据库: 1)创建数据库 在mysql中执行如下脚本创建数据库及mysql用户 CREATE DATABASE sonar CHARACTER SET

sonar的安装以及使用

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-22 01:20:55
SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误. 1. 简介 Sonar是一个用于代码质量管理的开源平台,用于管理代码的质量,通过插件形式可以支持二十几种语言的代码质量检测,通过多个维度的检查了快速定位代码中潜在的或者明显的错误。SonarQube是sonar的服务端,相当于一个web服务器中的tomcat,用来发布应用,在线浏览分析等. 2.安装 由于我本地安装的jdk是1.8版本,所以只能安装Sonar 7.8以下版本了,7.9以上需要安装JDK11才能支持了。快速下载链接,直连 https://www.sonarqube.org/downloads/ 下载完成后解压后点击StartSonar.bat启动即可,如下: 在双击之前,需要修改一下配置文件wrapper.conf,指定自己的jdk路径 启动成功后的界面是这样的, http访问9000端口出现下面则证明安装成功。 3.配置数据库 1. 在mysql数据库新建一个库的名称为sonar 2. 修改sonar/conf/sonar.properties的db信息 sonar.jdbc.username=root sonar.jdbc.password=root sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode

SonarQube代码质量扫描持续集成

末鹿安然 提交于 2020-01-20 00:06:42
1、安装JDK和配置JAVA_HOME和CLASSPATH 2、安装mysql数据库 3、创建数据库和用户 mysql -u root -p mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci; mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; mysql> FLUSH PRIVILEGES; 4、下载sonarqube wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-5.4.zip unzip sonarqube-5.4.zip vi /etc/profile SONAR_HOME=/usr/jenkins/sonarqube-5.4 export SONAR_HOME source /etc/profile 5、配置sonarqube

部署SonarQube代码检测服务以及jenkins实现代码自动测试、自动部署

狂风中的少年 提交于 2020-01-20 00:06:35
1.SonarQube部署前的内核参数等配置以及java环境配置 1)修改内核参数配置,使满足环境要求 [root@sonarqube ~]# vim /etc/sysctl.conf vm.max_map_count=262144 fs.file-max=65536 [root@sonarqube ~]# sysctl -p #生效修改的内核参数 …… vm.max_map_count = 262144 fs.file-max = 65536 2)修改本机安全策略参数限制 [root@sonarqube ~]# vim /etc/security/limits.conf …… sonarqube - nofile 65536 sonarqube - nproc 2048 3)配置java环境(至少jdk-8或openjdk-8版本) [root@sonarqube ~]# ls /usr/local/src/ jdk-8u211-linux-x64.tar.gz [root@sonarqube src]# tar xvf jdk-8u211-linux-x64.tar.gz [root@sonarqube src]#ln -sv jdk1.8.0_211 jdk [root@sonarqube src]#ln -sv jdk [root@sonarqube src]# ln

Centos 7环境安装SonarQube和SonarQube Runner

﹥>﹥吖頭↗ 提交于 2020-01-20 00:06:30
SonarQube简介 Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。 此外,Sonar 的插件还可以对 Java 以外的其他编程语言(支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex等)提供支持,对国际化以及报告文档化也有良好的支持。可以说Sonar是目前最强大的代码质量管理工具之一。 下面就来揭开Sonar的神秘面纱,看看如何在Centos环境上安装Sonar。 安装环境 系统环境:centos7.0 -x86_64(最小化安装) 前置条件:jdk1.8 , mysql-5.6 软件下载目录:/usr/local/ 软件安装目录:/usr/local/ 软件版本:sonarqube-6.7,sonar-runner-dist-2.4 sonar-scanner-3.0.3.778 sonarqube下载地址: http://www.sonarqube.org