前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DevOps 工具链:SonarQube 代码质量检查工具总结

DevOps 工具链:SonarQube 代码质量检查工具总结

作者头像
DevOps时代
发布2019-10-21 14:43:56
3.4K0
发布2019-10-21 14:43:56
举报

1 概述

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

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

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

2 环境准备

清单如下,安装方法自行百度谷歌

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

3 环境配置

3.1 Maven

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

代码语言:javascript
复制
    <profile>
      <id>sonar</id>
      <activation>
          <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
           <!-- 平台登录的账号的用户名 -->
          <sonar.login>你的用户名</sonar.login>
          <!-- SonarQube平台登录的账号的密码 -->
          <sonar.password>你的密码</sonar.password>
          <!-- SonarQube访问地址 -->
          <sonar.host.url>http://sonar.ibeiliao.net:9000</sonar.host.url>
          <!-- 代码分析包括哪些文件需要分析,英文逗号分隔  -->
          <sonar.inclusions>**/*.java,**/*.xml</sonar.inclusions>
      </properties>
    </profile>

并使用 sonar 激活profile

4 使用说明

4.1 Jenkins

创建一个新任务:

  • 步骤1 创建 选择构建一个自由风格的软件项目
  • 步骤2 配置源码管理 这里是使用了Git来做源码管理,gitlab作为源码库 项目分支填写master
  • 步骤3 配置构建触发器 这里配置H 18 *,代表每日18点前定时构建
  • 步骤4 配置构建 第一行使用jacoco插件,进行代码覆盖率测试 第二行使用sonar插件,进行代码检测并提交检测结果
代码语言:javascript
复制
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与项目持续集成架构图

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 代码质量阈

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

默认配置(可以根据项目实际情况重新配置):

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 概述
  • 2 环境准备
  • 3 环境配置
    • 3.1 Maven
    • 4 使用说明
      • 4.1 Jenkins
        • 4.2 SonarQube
          • 4.2.1 SonarQube说明
          • 4.2.2 开发者本地基于Maven使用SonarQube
          • 4.2.3 相关指标说明
          • 4.2.4 代码质量阈
      相关产品与服务
      检测工具
      域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档