SonarQube+Maven+SonarQube Scanner

1、SonarQube简介

官方网站地址:https://www.sonarqube.org/

SonrQube是一个开源的代码质量管理系统,用于检测代码中的错误,漏洞和代码规范。它可以以现有的Gitlab、Jenkins集成,以便在项目拉去后进行连续的代码检查

使用 SonarQube 静态分析,您可以在一个地方衡量项目中所有语言以及领域中所有项目的可靠性、安全性和可维护性

社区版本免费开源,目前最新版本支持:15种语言的静态代码分析:Java、JavaScript、C#、TypeScript、Kotlin、Ruby、Go、Scala、Flex、Python、PHP、HTML、CSS、XML 和 VB.NET 检测错误和漏洞,查看安全热点,跟踪代码异味并修复您的技术债务,代码质量指标和历史,Jenkins CI/CD 集成,可扩展,有 50 多个社区插件

SonarQube特性

  • 持续检查

    • 项目整体的健康程度:项目的主页面会给出,项目整体的Bugs、Vulnerabilities、Code Smells
    • 专注于漏洞
  •  监测棘手的问题

  • 多语言支持

  • 集成DevOps(evOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节)

  • 集中质量

七个维度检测代码质量

  • 复杂度分布(complexity):代码复杂度过高将难以理解
  • 重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
  • 单元测试统计(unit tests):统计并展示单元测试覆盖率
  • 代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
  • 注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
  • 潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
  • 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度

2、使用docker-compose 安装 SonarQube 

docker-compose.yml文件

 

version: "3.7" 
services: 
  postgres:
    image: postgres:12.4-alpine 
    ports: 
    - 5432:5432 
    networks:
    - sonarnet
    restart: always 
    environment: 
      - POSTGRES_DB=sonar 
      - POSTGRES_USER=sonar 
      - POSTGRES_PASSWORD=sonar 
      - TZ=Asia/Shanghai 
    volumes: 
    - /opt/sonarqube/postgresql/data:/var/lib/postgresql/data 
  sonarqube: 
    image: sonarqube:8.9.8-community 
    ports: 
    - 9000:9000
    networks:
    - sonarnet
    environment: 
      - SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_JDBC_PASSWORD=sonar 
    restart: always 
    depends_on: 
      - postgres 
    volumes: 
    - /opt/sonarqube/data:/opt/sonarqube/data 
    - /opt/sonarqube/logs:/opt/sonarqube/logs 
    - /opt/sonarqube/extensions:/opt/sonarqube/extensions
    - /opt/sonarqube/conf:/opt/sonarqube/conf
networks:
  sonarnet:
    driver: bridge

 

docker-compose环境准备

可能出现启动SonarQube报错:
ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count 

原因:SonarQube内置了ElasticSearch,需要调整默认的vm.max_map_count信息,在宿主机中执行以下命令:sysctl -w vm.max_map_count=262144

执行命令

docker-compose up -d

docker-compose logs -f

访问页面:http://192.168.168.200:9001/ 

默认账号密码:admin/admin

 3、结合maven使用

修改maven的conf settings.xml 文件,加入以下配置文件

<profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.host.url>http://192.168.168.200:9001</sonar.host.url>
                 <sonar.login>admin</sonar.login>
                 <sonar.password>12345678</sonar.password>
            </properties>
        </profile>

进入maven项目目录,使用命令测试结果

mvn clean install -DskipTests sonar:sonar

SonarQube 运行日志

 

通过SonarQube 可视化界面查看结果

SonarQube常见扫描结果分析

  • 扫描结果总览
  • 优先级1位之Bugs
  • 优先级2位之漏洞
  • 优先级3位之重复率

 

posted @ 2023-05-03 15:13  yiwanbin  阅读(55)  评论(0编辑  收藏  举报