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

发表于:2019-3-18 16:50

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈彩华    来源:掘金

  最近公司引入了代码自动检查平台,技术选型是选择SonarQube,总结如下:
  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的配置
  sonar.login
  SonarQube平台登录的账号的用户名
  sonar.password
  SonarQube平台登录的账号的密码
  sonar.host.url
  SonarQube平台的地址
  sonar.inclusions
  代码分析包括哪些文件需要分析,英文逗号分隔
  4 使用说明
  4.1 Jenkins
  创建一个新任务:
  步骤1 创建 选择构建一个自由风格的软件项目
  步骤2 配置源码管理 这里是使用了Git来做源码管理,gitlab作为源码库
  项目分支填写master
  步骤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与项目持续集成架构图
  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代码检测,后期会将客户端,前端的代码检测也引入
  历史问题结合实际情况分阶段、逐步修复
  定时总结,减少或避免在新项目,新代码引入同样质量问题
  
      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号