docker compose安装SonarQube+SonarScanner

Updated on with 0 views and 0 comments

一、简介

SonarQube官网

SonarQube是一个用于持续检查代码质量的静态代码分析平台。它提供了自动化的代码审查工具,帮助开发团队持续监测和改进代码的质量。SonarQube可以检测并报告多种代码质量问题,包括:

  1. 重复代码 (Duplication):找出代码中的重复部分,减少维护成本。
  2. 潜在的bug (Bugs):识别可能导致运行时错误或逻辑问题的代码模式。
  3. 代码规范 (Code Smells):检查不符合最佳实践或编码标准的代码结构。
  4. 安全性漏洞 (Security Hotspots):标识可能的安全风险点,如SQL注入或跨站脚本攻击。
  5. 缺少或过度的注释 :确保代码有适当的文档化。
  6. 设计问题 (Design):分析代码架构和设计模式,避免不良设计如“意大利面条代码”。
  7. 测试覆盖率 (Test Coverage):测量单元测试对代码的覆盖程度。

SonarQube支持多种编程语言,如Java、Python、C#、JavaScript、PHP等,并且可以集成到持续集成(CI)和持续部署(CD)流程中,确保每次代码提交都经过质量检查。

SonarQube由SonarSource SA开发,提供LGPL v3许可的社区版,以及功能更丰富的企业版和专业版。它可以在本地服务器上自托管,也可以使用云服务版本。

除了代码分析外,SonarQube还提供了一个直观的Web界面,允许项目经理、开发者和利益相关者查看项目的健康状况,跟踪代码质量问题的趋势,并设定质量门限以防止低质量代码进入主分支。

在最新版本中,SonarQube 10.4 和 9.9 LTA 提供了增强的企业功能,更快的代码审查,以及针对CloudNative开发的安全性提升。

二、安装

2.1 数据库安装

sonarqube需要使用数据库,支持下列三种数据库

image.png

docker pull postgres

2.2 sonarqube安装

下载镜像

docker pull sonarqube:9.9.0-community

准备docker-compose.yml

mkdir -p /opt/docker_data/sonarqube/
vi /opt/docker_data/sonarqube/docker-compose.yml

文件内容为

version: '3.1'
services:
  db:
    image: postgres
    container_name: db
    ports:
      - '5432:5432'
    networks:
      - sonarnet
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:9.9.0-community
    container_name: sonarqube
    depends_on:
      - db
    ports:
      - '9000:9000'
    networks:
      - sonarnet
    environment:
      SONAR_JDBC_URL: 'jdbc:postgresql://db:5432/sonar'
      SONAR_JDBC_USERNAME: 'sonar'
      SONAR_JDBC_PASSWORD: 'sonar'
networks:
  sonarnet:
    driver: bridge

修改系统可以创建的最大内存映射数量

vi /etc/sysctl.conf

输入内容

vm.max_map_count=262144

执行

sysctl -p

启动sonarqube

cd /opt/docker_data/sonarqube/
docker-compose up -d

初始化需要等待一段时间,然后访问http://地址:9000/即可,默认用户名密码都是admin

image.png

2.3 sonarqube插件安装

进入插件市场

image.png

搜索chinese安装汉化插件

image.png

点击统一要求后会出现下载按钮,点击即可

image.png

安装完成需要重启服务

image.png

汉化成功

image.png

三、基本应用

3.1 maven关联sonarqube

可以在settings.xml中全局配置,也可以在项目的pom.xml文件中配置

3.1.1 settings.xml中配置

  <profiles>
	<profile>
		<id>sonar</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<properties>
			<sonar.login>admin</sonar.login>
			<sonar.password>root</sonar.password>
			<sonar.host.url>http://192.168.56.6:9000/</sonar.host.url>
		</properties>
	</profile>
  </profiles>
  <activeProfiles>
    <activeProfile>sonar</activeProfile>
  </activeProfiles>

3.1.1 pom.xml中配置

	<profiles>
		<profile>
			<id>sonar</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<sonar.login>admin</sonar.login>
				<sonar.password>root</sonar.password>
				<sonar.host.url>http://192.168.56.6:9000/</sonar.host.url>
			</properties>
		</profile>
	</profiles>

3.1.3 代码检测

在项目根目录下执行mvn sonar:sonar

看到执行成功

image.png然会回到sonar页面就能看到代码检测结果了

image.png

点击项目名称可以查看详情

image.png

3.2 sonar-scanner关联sonarqube

3.2.1 sonar scanner简介

SonarScanner是一个命令行工具,用于分析和评估源代码的质量,并将结果发送到SonarQube或SonarCloud,这两个都是由SonarSource提供的代码质量管理平台。SonarScanner充当了一个桥梁,使得项目能够与SonarQube进行交互,从而在构建过程中集成代码质量检查。

以下是SonarScanner的一些关键特性和用途:

  1. 代码质量分析
    SonarScanner可以分析多种编程语言的代码,包括但不限于Java、C#、C++、JavaScript、Python等。它会检查代码中的复杂性、重复性、潜在的bug、安全漏洞和代码风格等问题。
  2. 持续集成
    SonarScanner可以轻松集成到持续集成(CI)工具中,如Jenkins、GitLab CI/CD、Azure DevOps等,这意味着每次代码提交或构建时,代码质量都会被自动检查。
  3. 插件机制
    它通过插件支持不同的构建工具和框架,例如Maven、Gradle、MSBuild等,这使得SonarScanner能够适应各种开发环境和工作流。
  4. 配置灵活性
    用户可以通过修改 sonar-project.properties文件或使用环境变量来定制SonarScanner的行为,比如指定项目名称、版本、源代码位置、分析规则集等。
  5. 报告和度量
    分析的结果会被上传至SonarQube服务器,生成详细的报告和指标,如代码覆盖率、技术债务估计等,帮助团队理解代码质量和趋势。
  6. 质量门限
    SonarScanner可以与SonarQube的质量门限(Quality Gates)配合使用,阻止不符合质量标准的构建,确保只有高质量的代码才能进入生产环境。
  7. 历史数据追踪
    SonarQube能够保存历史分析结果,使得团队可以追踪代码质量随时间的变化,这对于长期的代码健康和维护至关重要。

为了使用SonarScanner,你需要在本地计算机上安装它,并根据你的开发环境进行配置。一旦配置完成,你就可以在构建过程中运行SonarScanner,或者手动触发代码分析。

SonarScanner是SonarQube生态系统中的一个重要组成部分,它使得代码质量检查成为软件开发生命周期中的一个常规环节,有助于提升软件的可靠性和可维护性。

3.2.2 下载安装

sonar scanner下载地址

image.png

下载后上传到服务器解压就可以使用了

要注意修改sonar-scanner/conf/sonar-scanner.properties文件中sonar的地址

image.png


标题:docker compose安装SonarQube+SonarScanner
作者:wenyl
地址:http://www.wenyoulong.com/articles/2024/06/22/1719040506065.html