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 ,另外还有Developer 、Enterprise 等收费版本,功能更强大,具体差别如下: 
2.2 指定数据库 一般我们会自己启动一个数据库如Oracle 、MySQL 或PostgreSQL 。相关系统信息可以在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 bashbash-5.0# lsCOPYING bin conf data elasticsearch extensions lib logs temp webbash-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 的重要工具之一,需要了解和掌握。
下载地址: 使用Docker构建企业级自定义镜像的方法 Linux通用java程序启动脚本代码实例 |