使用 Docker 搭建 SonarQube 代码扫描平台

引言静态代码分析是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描的技术。它的目的是验证代码是否满足规范性、安全性、可靠性、可维护性的要求。统计证明,在整个软件开发生命周期中,30% 至 70% 的代码逻辑设计和编码缺陷是可以通过静态代码分析来发现和修复的。所以使用静态代码扫描技术,在编码阶段发现更多问题是在整个软件开发生命周期中非常关键的一环。针对静态扫描目前有各种各样的工具,比如:Java 语言的 Checkstyle, FindBugs, PMD等,帮助检测代码编写规范上存在的问题和漏洞;Python 语言的 Pyflakes, PyLint, pep8等;C# 语言的 FxCop、StyleCop等。通过这些工具扫描的结果分析后,根据结果来优化代码问题,以提高代码质量。在单独使用以上这些工具时,我们会面临这样的问题:针对包含不同语言的项目,需要不同工具进行扫描,其结果不方便汇总;一段时间内每一次扫描的结果的差异,无法友好的呈现或者追溯。SonarQube就是这样的一个平台,能够支持多种语言的静态代码扫描,也方便维护呈现项目代码的质量状态。

SonarQube介绍SonarQube(Sonar)是一个开源平台,用于管理源代码的质量,它不仅是一个质量数据报告工具,更是代码质量管理平台。它通过插件的形式来管理代码,它支持的语言包括:Java,Python,PHP,C#,C,JS等。关于SonarQube 的架构、基本使用以及与Jenkins的集成我们曾经做过介绍:Jenkins+SonarQube实现Python项目静态扫描:https://mp.weixin.qq.com/s/P08uahvqjqGeEOa7A6b2HgDocker来搭建 SonarQube最新版本的 SonarQube Server(目前最新版本:8.8),已经不支持我们常用的 JDK1.8,并且不支持我们最常用 MySQL 数据库,要想使用欧冠最新版本的 SonarQube使用Docker来搭建是最简单的办法之一了。下面介绍的是如何使用Docker来搭建 SonarQube 代码扫描平台。首先搭建数据库环境:我们使用postgresql 数据库。# 拉取镜像docker pull postgres# 启动容器docker run --name pgdb -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -e POSTGRES_DB=sonar -p 5432:5432 -d postgres注:POSTGRES_USER参数为数据库用户名,其值为sonarPOSTGRES_PASSWORD 参数为数据库密码,其值为sonarPOSTGRES_DB 参数为SonarQube使用的数据库名,其值为sonar搭建 SonarQube Server :我们使用最新版本的SonarQube镜像拉取镜像docker pull sonarqube# 启动容器docker run --name sq -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://10.0.0.19:5432/sonar -p 9000:9000 -d sonarqube补充:在初次启动的过程中可能会有这样的报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]这是 ElasticSearch 启动的时候报的错误,原因是因为:ElasticSearch用户拥有的内存权限太小,至少需要262144。在 /etc/sysctl.conf 文件最后添加如下语句:vm.max_map_count=262144再输入命令:sysctl -p立即生效为了数据的持久化可以使用-v命令或者docker volume,参考目录:Postgresql:/var/lib/postgresql/data-dSonarQube:/opt/sonarqube/extensions/opt/sonarqube/logs/opt/sonarqube/data为了更方便的网络配置可以使用docker network 动态管理网络# 创建网络network create sonar# 在启动命令中添加参数--network sonar# 修改SonarQube 的数据库连接参数SONARQUBE_JDBC_URL=jdbc:postgresql://pgdb:5432/sonar微信号 : TestOps知乎:@TestOps云层

(0)

相关推荐

  • kong管理界面konga的安装

    kong网关自身的管理界面属于付费的应用,而第三方界面又非常少,konga算是相对比较好的一款了,虽然也有一些问题,但整体的功能还比较全,github仓库为:https://github.com/pa ...

  • 代码写的垃圾被嫌弃?

    重磅干货,第一时间送达 今天推荐三个插件,它们都是代码质量检测的神器.可以扫描检测出你项目中不符合规范的代码,他们分别是 SonarLint.SonarQube.Alibaba代码规约插件. 1.   ...

  • 低代码开发平台从哪些方面帮助企业?

    低代码开发平台对于企业,可以说是当今企业数字化转型的得力助手.低代码开发平台意味着企业可以用最低的成本.以最快的速度来实现数字化转型,为企业节省更多成本,从而大大提升利润空间.有非常多的企业通过低代码 ...

  • Docker 搭建属于自己的 Eureka 注册中心

    一. 环境介绍 Ubuntu 18.04 LTS (Win10 wsl2) Docker 19.03.8 二. 必要的 Docker 命令学习 docker images # 查看已有镜像 docke ...

  • 这样用Docker 搭建 Jenkins 实现自动部署,你知道吗?

    一.为什么用jenkins 主要是我们现在的项目都是采用手动部署的,每当给项目中新增一个功能就必须执行(打包--测试--上传测试修复的包到指定服务器--部署上线),这个流程操作起来繁杂,不小心就可能导 ...

  • 简述国内几大无代码开发平台

    在国外,无代码平台的可谓是百家争鸣,展现形式各式各样,发展也是如火如荼.但是国内的无代码平台却还没被普及.不仅如此,很多程序员对"无代码"这种技术存在一定的抵触心理,认为只是一些不 ...

  • 3000万收购CRO公司,这家CDMO头部企业要搭建CXO一站式服务平台

    9 月 7 日,据悉,CDMO 头部企业凯莱英医药集团(以下简称为"凯莱英")发布公告,宣布以自有资金 3000 万元收购天津冠勤医药医药科技合伙企业(以下简称为"冠勤医 ...

  • 怎么搭建自己的网校平台?性价比高的

    如果要自己做一个网校平台,常见的三种方式就是自主研发系统.找第三方外包公司定制开发,或者使用saas服务,自主研发和定制开发的成本会相对较高,其实选择SaaS服务是个不错的选择,也是性价比最高的方式. ...

  • 实战Spring Cloud、Vue构建基于微服务的SaaS低代码开发平台2

    大角云低代码开发2019-10-07 20:28:08 一.低代码开发平台不是快速开发平台 1. 低代码开发平台定义 最近,阿里巴巴发布了自己的低代码开发平台"宜搭",网址是:ht ...

  • 实战Spring Cloud和Vue构建基于微服务的SaaS低代码开发平台

    打算写一写低代码开发平台的文章,大纲如下: 一.低代码开发平台不是快速开发平台 低代码开发平台定义 快速开发平台定义 低代码开发平台特征 低代码开发整体架构图 二.视图层的选择 低代码开发需要的视图层 ...