Docker搭建代码检测平台SonarQube并检测maven项目

1 前言

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

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/adminweb

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

Plan&Price

2.2 指定数据库

通常咱们会本身启动一个数据库如OracleMySQLPostgreSQL。相关系统信息能够在Administration-System查看,咱们不指定的话,默认是使用内嵌的H2数据库。若是要指定其它数据库,启动Docker时须要指定:docker

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

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

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

因此建议实际使用时,不要使用内嵌的H2数据库。微信

2.3 进入容器

经过命令:elasticsearch

$ 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能够查看配置文件、插件、数据文件和日志文件等,实际使用应该映射到宿主机的目录上,这样从新启动一个实例,数据和配置都还在。maven

2.4 安装插件

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

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

Plugin

当状态显示为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并暴露密码并非一个好的习惯,能够经过配置-权限-用户来建立用户,并建立令牌。

Token

复制令牌:9656c84090b2481db6ea97b6d14d87d546bff619

这样,就能够经过令牌来操做了:

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

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

Sonar Project

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

指标

4 总结

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


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

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

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

相关文章
相关标签/搜索