基于SonarQube代码质量检查工具总结

做者 陈彩华
文章转载交流请联系 caison@aliyun.com
复制代码

最近公司引入了代码自动检查平台,技术选型是选择SonarQube,总结以下:前端

1 概述

SonarQube(sonar)是一个开源平台,用于管理源代码的质量。 SonarQube不仅是一个质量数据报告工具,更是代码质量管理平台。 支持java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。 SonarQube能够从如下七个维度检测代码质量,而做为开发人员至少须要处理前5种代码质量问题。java

  • (1) 不遵循代码标准 SonarQube能够经过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
  • (2) 潜在的缺陷 SonarQube能够经过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
  • (3) 糟糕的复杂度分布 文件、类、方法等,若是复杂度太高将难以改变,这会使得开发人员 难以理解它们, 且若是没有自动化的单元测试,对于程序中的任何组件的改变都将可能致使须要全面的回归测试。
  • (4) 重复 显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube能够展现 源码中重复严重的地方。
  • (5) 注释不足或者过多 没有注释将使代码可读性变差,特别是当不可避免地出现人员变更时,程序的可读性将大幅降低 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
  • (6) 缺少单元测试 SonarQube能够很方便地统计并展现单元测试覆盖率。
  • (7) 糟糕的设计 经过SonarQube能够找出循环,展现包与包、类与类之间的相互依赖关系,能够检测自定义的架构规则 经过SonarQube能够管理第三方的jar包,能够利用LCOM4检测单个任务规则的应用状况, 检测耦合。

经过如下介绍如何基于Jenkins和SonarQube完成代码质量持续检测。git

2 环境准备

清单以下,安装方法自行百度谷歌数据库

  • Java环境
  • Maven环境
  • SonarQube平台
  • Jenkins平台
  • 数据库(例如MySQL)

3 环境配置

3.1 Maven

为了基于Maven方式使用Jenkins,须要在Maven安装目录下的conf/setting.xml文件配置关于sonar的配置编程

  • sonar.login SonarQube平台登陆的帐号的用户名
  • sonar.password
    SonarQube平台登陆的帐号的密码
  • sonar.host.url SonarQube平台的地址
  • sonar.inclusions 代码分析包括哪些文件须要分析,英文逗号分隔

新增配置

4 使用说明

4.1 Jenkins

建立一个新任务:bash

  • 步骤1 建立 选择构建一个自由风格的软件项目 架构

  • 步骤2 配置源码管理 这里是使用了Git来作源码管理,gitlab做为源码库 项目分支填写master maven

  • 步骤3 配置构建触发器 这里配置H 18 * * *,表明每日18点前定时构建 编程语言

  • 步骤4 配置构建 第一行使用jacoco插件,进行代码覆盖率测试 第二行使用sonar插件,进行代码检测并提交检测结果工具

clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=true -P dev

sonar:sonar
复制代码

  • 步骤5 配置构建后步骤,发邮件 须要在Jenkins提早配置好邮箱

4.2 SonarQube

SonarQube基本架构图

SonarQube基本架构图

SonarQube与项目持续集成架构图

SonarQube与项目持续集成架构图

4.2.1 SonarQube说明

4.2.2 开发者本地基于Maven使用SonarQube

Jenkins的每日构建默认是使用master,在开发过程当中,有时须要在开发者的开发中的分支进行代码检测 方法:

  • 步骤1 配置Maven 按照 3.1 Maven的配置说明,配置本地的Maven环境

  • 步骤2 触发检测 在项目顶层目录,执行命令:mvn sonar:sonar便可

4.2.3 相关指标说明

指标

4.2.4 代码质量阈

代码总体质量的统计,能够帮助用户理解项目是否已经能够投入生产

默认配置(能够根据项目实际状况从新配置):

默认质量阈配置

后期展望

  • 目前只接入了Java代码检测,后期会将客户端,前端的代码检测也引入
  • 历史问题结合实际状况分阶段、逐步修复
  • 定时总结,减小或避免在新项目,新代码引入一样质量问题

参考

SonarQube代码质量检查工具

相关文章
相关标签/搜索