简介

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。

Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。

支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。

Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

  1. 不遵循代码标准

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
  2. 潜在的缺陷

    sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
  3. 糟糕的复杂度分布

    文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
  4. 重复

    显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。
  5. 注释不足或者过多

    没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
  6. 缺乏单元测试

    sonar可以很方便地统计并展示单元测试覆盖率。
  7. 糟糕的设计

    通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。

安装

SonarQube 版本很多,对JDK版本要求也不同,这里以7.3 Community版本为例。

基于CentOS系统安装

环境信息

工具/环境 版本
CentOS 7.4
SonarQube 7.3
MySql 5.7
JDK 1.8
  1. 官网下载对应操作系统的安装包,官网下载链接:https://www.sonarqube.org/downloads/

  1. 安装

注意事项:

  • SonarQube安装使用依赖JDK,需提前安装配置好JDK相关信息

  • SonarQube安装使用依赖数据库和ElasticSearch,故需要提前准备好数据库和ElasticSearch相关资源

注意:SonarQube 7.3 版本要求MySQL版本不能低于5.6且提前创建好名为sonar的数据库

  • 启动SonarQube和ElasticSearch不可使用root账户,故需要提前创建好新的用户组和用户,被赋予SonarQube文件夹可操作权限

第一步: 上传并解压安装包至任意工作目录,这里以/home为例

第二步:新建用户组sonar和用户sonar并分配sonar目录可操作性权限

第三步: 切换至sonar用户启动SonarQube

启动过程中可进入logs目录查看相关服务启动日志,启动成功之后浏览器访问:http://IP:9000 即可

第四步: 安装必要插件

因官网下载安装的系统界面语言为英文,且不可导出pdf报告,简单介绍如下安装插件

中文插件包下载链接

导出pdf插件包下载链接

上传插件包到sonarqube安装目录下的extensions/plugins/目录下,然后重启系统即可。

第五步: 登录系统

登录Web系统,确实账号密码为admin/admin

使用

结合Maven如何利用Sonar分析代码

在工程根目录执行如下命令分析代码质量

mvn sonar:sonar -Dsonar.host.url=http://180.8.2.99:9000 -Dsonar.login=c3e9b746e26f0fef387a0e8eb4ccfc0d6c6a94b0

注意:最后面的login参数可在Web系统页面获取

  1. 进入创建token页面

  1. 手动生成一个token

  1. 通过maven命令分析代码质量

  1. 分析结束,在登录Web系统查看及下载分析报告

结语

欢迎关注微信公众号『码仔zonE』,专注于分享Java、云计算相关内容,包括SpringBoot、SpringCloud、微服务、Docker、Kubernetes、Python等领域相关技术干货,期待与您相遇!

手把手教你SonarQube入门安装与使用的更多相关文章

  1. 手把手教你Chrome浏览器安装Postman(含下载云盘链接)【转载】

    转载自:http://www.ljwit.com/archives/php/278.html 说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.本文主要 ...

  2. 【Jenkins持续集成(一)】SonarQube 入门安装使用教程

    一.前言 持续集成管理平台不只是CI服务器,是一系列软件开发管理工具的组合. 源码版本管理:svn.git 项目构建工具:Maven.Ant 代码质量管理:Sonar(Checkstyle.PMD.F ...

  3. 手把手教android studio中安装Android Butterknife Zelezny (转)

    原文地址:http://blog.csdn.net/xin917480852/article/details/51176524 用来快速生成findViewById() 安装方法: 打开Android ...

  4. 手把手教你Chrome浏览器安装Postman(含下载云盘链接)(转)

    文章转自http://www.ljwit.com/archives/php/278.html 说明: Postman不多介绍,是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.本文主要 ...

  5. 理解 Redis(2) - 手把手教你理清 Redis 安装全过程

    Redis 官网 https://redis.io/ 之前学习 Redis 学了好多次, 下载安装也都按照教程或官网文档弄过, 但是对于安装过程一直有点迷糊, 感觉稀里糊涂地就好了, 就可以用了. 这 ...

  6. 手把手教你如何逐步安装OpenStack

    [TechTarget中国原创] 尽管OpenStack官方提供的在线安装教程和分步向导能够为管理员提供很大帮助,但是依然存在很多不尽如人意的地方.因此在Ubuntu上安装OpenStack的过程当中 ...

  7. jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置(详解)

    简介 上一篇对jenkins有了大致了解之后,那么我们就开始来安装一下jenkins. Jenkins安装 一.安装Java环境 1.你需要做的第一件事情就是在你的机器上安装Java环境.Jenkin ...

  8. jenkins手把手教你从入门到放弃03-安装Jenkins时web界面出现该jenkins实例似乎已离线

    简介 很久没有安装jenkins了,因为之前用的的服务器一直正常使用,令人郁闷的是,之前用jenkins一直没出过这个问题. 令人更郁闷的是,我尝试了好多个历史版本和最新版本,甚至从之前的服务器把je ...

  9. jenkins手把手教你从入门到放弃01-jenkins简介(详解)

    一.简介 jenkins是一个可扩展的持续集成引擎.持续集成,也就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础.持续集成是一种软件开发实践, 即团队开 ...

随机推荐

  1. 资源授权?对OAuth2.0的一次重新认识的过程

    什么是OAuth? OAuth一个开放的授权标准,允许用户在不提供关键信息(如账号,密码)给第三方应用的前提下,让第三方应用去访问用户在某网站上的资源(如头像,用户昵称等). OAuth分为OAuth ...

  2. Jmeter的脚本参数化

    一.变量 Jmeter中的变量用法:${变量名称} 变量定义:两种 1.用户定义变量 User Defined Variables 2.用户参数  User Parameters 1.1用户定义变量 ...

  3. BERT 服务化 bert-as-service

    bert-as-service 用 BERT 作为句子编码器, 并通过 ZeroMQ 服务托管, 只需两行代码就可以将句子映射成固定长度的向量表示; 准备 windows10 + python3.5 ...

  4. OpenGL中的简单坐标系初看+VAO/VBO/EBO

    你好,三角形 一: 关于坐标的问题 标准化设备坐标:输入的顶点数据就应该在标准化设备坐标范围里面即:x,y,z的值都在(-1-1)之间.在这个区间之外的坐标都会被丢弃. 1.1一旦顶点数据传入顶点着色 ...

  5. 记一次Linux内核崩溃:kdump,crash,vmcore

    原理 Linux内核发送崩溃时,kdump会生成一个内核转储文件vmcore. 可以通过分析vmcore分析出内核崩溃的原因. crash是一个被广泛应用的内核奔溃转储文件分析工具.使用crash调试 ...

  6. IT求职 非技术面试题汇总

    原文链接:https://blog.csdn.net/weixin_40845165/article/details/89852397 说明:原文是浏览网页时无意间看到的.扫了一眼,总结得还不错,感谢 ...

  7. CVE-2017-7504-JBoss JMXInvokerServlet 反序列化

    漏洞分析 https://paper.seebug.org/312/ 漏洞原理 这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的 ...

  8. 越来越受欢迎的Vue想学么,90后小姐姐今儿来教你

    摘要:Vue的相关技术原理成为了前端岗位面试中的必考知识点,掌握 Vue 对于前端工程师来说更像是一门"必修课". 本文原作者为尹婷,擅长前端组件库研发和微信机器人. 我们发现, ...

  9. 一个mac软件合集的网站

    https://github.com/jaywcjlove/awesome-mac/blob/master/README-zh.md

  10. 怎么用Markdown在github上写书,并用pages展示

    怎么用git写书 安装环境 第一步 安装node npm 先检测自己电脑是否安装了node npm # 查看 node 版本 node -v # 查看 npm 版本 npm -v 复制代码 如果成功打 ...