1 前言

良好的代码习惯是一个优秀程序员应该具备的品质,但靠人的习惯与记忆来保证代码质量,始终不是一件靠谱的事。在计算机行业应该深知,只要是人为的,都会有操作风险。本文讲解如何通过Docker搭建代码检测平台SonarQube,并使用它来检测maven项目的代码。

2 Docker安装SonarQube

2.1 安装

通过Docker安装,方便快捷,不需要时直接删掉容器和镜像就好了。

# 拉取Sonar镜像
docker pull sonarqube:8.3.1-community
# 运行实例
docker run --name sonarqube -p 9000:9000 -d sonarqube:8.3.1-community

接着访问:http://localhost:9000/ 就可以了,默认管理员用户和密码为:admin/admin

这里选择免费的社区版Community,另外还有DeveloperEnterprise等收费版本,功能更强大,具体差别如下:

2.2 指定数据库

一般我们会自己启动一个数据库如OracleMySQLPostgreSQL。相关系统信息可以在Administration-System查看,我们不指定的话,默认是使用内嵌的H2数据库。如果要指定其它数据库,启动Docker时需要指定:

-e SONARQUBE_JDBC_USERNAME="xxx" \
-e SONARQUBE_JDBC_PASSWORD="***" \
-e SONARQUBE_JDBC_URL="jdbc:mysql://xxx"

使用H2数据库有会以下限制:

内嵌数据库只能用于测试场景。内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。

所以建议实际使用时,不要使用内嵌的H2数据库。

2.3 进入容器

通过命令:

$ docker exec -it 容器ID bash

bash-5.0# ls
COPYING bin conf data elasticsearch extensions lib logs temp web
bash-5.0#

可以进入SonarQube容器。在目录/opt/sonarqube可以查看配置文件、插件、数据文件和日志文件等,实际使用应该映射到宿主机的目录上,这样重新启动一个实例,数据和配置都还在。

2.4 安装插件

SonarQube提供了强大的插件管理功能,以中文语言包为示例,讲解如何安装插件:

Administration-Marketplace-Plugins,在搜索框输入Chinese就可以选择安装了。

当状态显示为Install Pending时,说明插件安装完成,点击Restart Server即可生效。

3 通过maven检测代码

3.1 通过账号密码使用

指定SonarQube平台的地址,并指定用户名和密码,就能检测代码了,具体命令如下:

mvn clean verify sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin

3.2 通过Token令牌使用

当然,直接使用admin并暴露密码并不是一个好的习惯,可以通过配置-权限-用户来创建用户,并创建令牌。

复制令牌:9656c84090b2481db6ea97b6d14d87d546bff619

这样,就可以通过令牌来操作了:

mvn clean verify sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=9656c84090b2481db6ea97b6d14d87d546bff619

执行命令后,就会在界面上自动新建了一个项目,并给出检测结果:

Sonar提供了许多指标如测试覆盖率、复杂度等,这能大大帮助我们写出更好的代码:

4 总结

SonarQube功能强大,是DevOps的重要工具之一,需要了解和掌握。


欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!

欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。

Docker搭建代码检测平台SonarQube并检测maven项目的更多相关文章

  1. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  2. Spring Cloud和Docker搭建微服务平台

    用Spring Cloud和Docker搭建微服务平台 This blog series will introduce you to some of the foundational concepts ...

  3. Docker 搭建代码质量检测平台 SonarQube

    开始搭建 1.获取 postgresql 的镜像 $ docker pull postgres 2.启动 postgresql $ docker run --name db -e POSTGRES_U ...

  4. 代码质量管理平台SonarQube的安装、配置与使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...

  5. Docker 搭建开源 CMDB平台 “OpsManage” 之 Mariadb

    整理了一下文档  今天来构建mariadb 主机还是 centos  172.16.0.200 构建第二个images   直接shell.sh 完成  #!/bin/bash echo " ...

  6. Docker 搭建开源 CMDB平台 之 “OpsManage”

    说明:  我一次build 完 所以images 包 有1G多   可分层build   bash 环境一层   应用程序及启动脚本(shell.sh) 一层 步骤:           1     ...

  7. Docker 搭建开源 CMDB平台 “OpsManage” 之 Redis

    整体结构如下图   先来在 172.16.0.200 安装docker-ce (新)或 docker-io(旧)      0: Docker-ce  (新版本  Docker version 17. ...

  8. Docker搭建LNMP网站平台

    1.自定义网络 [root@linux-docker01 ~]# docker network create lnmp 67e7e0736b2c58f8f81eed50130803b34be0583f ...

  9. docker 搭建LNMP网站平台

    准备好镜像 1.创建网络 docker network create lnmp 测试环境需删除全部之前起的容器 docker rm -f $(docker ps -a |awk '{print $1} ...

随机推荐

  1. deepin15.11小毛病解决

    目录 边缘花屏问题 QQ`Tim头像问题 ssh卡死问题 看直播卡 边缘花屏问题 sudo apt install systemsettings 打开kde系统设置 打开显示与设置,修改如图下,基本上 ...

  2. git flow配置问题

    Mac使用 git flow 的时候,当 -m 进行换行有时消息会被截断,怎么解决? 原因: brew 上的 gnu-getopt 这个包未配置好 步骤: 1. 在 ~/.gitflow_export ...

  3. PHP中静态(static)调用非静态方法详解--调用!!!

    来源:https://www.cnblogs.com/yolo-bean/p/7739265.html 这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么 ...

  4. str_pad 和 filter_var

    这两个函数都是php内置函数,filter_var可直接过滤,比如邮箱,ip等,str_pad可补充字符串eg: 1  =>  001

  5. SQLI-LABS学习笔记(四)

    第十六关   和之前的关卡一样,修改闭合,无意义的关卡   ")闭合即可   第十七关   这题从源码上看发现     这里进行了两次查询   先查询了用户名是否存在   再查询密码是否匹配 ...

  6. VHD VHDX 区别

    A Virtual hard disk is saved either with VHD or VHDX file extension. VHD is the older while VHDX is ...

  7. lodctr /R 失败的情况

    I've resolved with the following steps: PS C:\Windows\system32> cmd Microsoft Windows [Version 6. ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——入库管理之十(四十六)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. 009.Ansible模板管理 Jinja2

    一 Jinja2简介 Jinja2是基于python的模板引擎. 假设说现在我们需要一次性在10台主机上安装redis,这个通过playbook现在已经很容易实现.默认情况下,所有的redis安装完成 ...

  10. 编写简单的内核模块及内核源码下载,内核模块Makefile编写

    CentOS的内核源码默认是没有下载的,需要自己下载,首先安装linux的时候就应该知道linux的版本,我装的是Centos7的 下面查一下内核的版本,使用下面的命令 [scut_lcw@local ...