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位之重复率

SonarQube+Maven+SonarQube Scanner的更多相关文章

  1. 使用SonarQube和SonarQube Scanner分析项目

    一.概述 SonarQube的安装,请参考链接:https://www.cnblogs.com/xiao987334176/p/12011623.html 配置好sonar的服务端后,接下来就要使用s ...

  2. 配置sonarqube+maven

    Maven与Sonar配合使用  准备工作:下载sonarqube源码即可  步骤:      1).安装sonar 解压,启动sonarqube-4.1\bin\windows-x86-32目录下的 ...

  3. 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  4. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  5. sonarqube+Scanner代码质量管理工具

    本文相关描述基于sonarqube 6.2版本. 下载地址: sonarqube下载网址:https://www.sonarqube.org/downloads/ Scanner下载网址(用于扫描项目 ...

  6. Tomcat+Jenkins+SonarQube+SVN+Maven 集成自动化环境搭建(Windows10环境下)

    说在前面的话: 从接到任务到完成共用了7天的时间.正常人用不到这个时间. 此时的功能表现是: 登录本地JenKins对项目进行构建,能够自动从SVN读取最新代码并按照Maven项目构建,构建完成能够自 ...

  7. SonarQube 的安装、配置及 Maven 项目的使用

    转载自:https://cloud.tencent.com/developer/article/1010612 1.SonarQube 介绍 SonarQube 是一个用于管理源代码质量开放平台,它可 ...

  8. SonarQube和Maven的集成

    1.1. SonarQube简介 SonarQube是一款免费用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#,C/C++,PL/S ...

  9. sonarQube本机扫描C#项目

    因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机进行查看. 参考了张老师的博客:http://www.cnblogs.com/danzhang/p ...

  10. SonarQube学习入门指南

    1. 什么是SonarQube? SonarQube 官网:https://www.sonarqube.org/ SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可 ...

随机推荐

  1. 记录--前端加载超大图片(100M以上)实现秒开解决方案

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 前端加载超大图片时,一般可以采取以下措施实现加速: 图片压缩:将图片进行压缩可以大幅减小图片的大小,从而缩短加载时间.压缩图片时需要 ...

  2. Spring Cloud Alibaba服务的注册与发现之Nacos部署

    1.Nacos官网介绍 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理.Nacos 帮助您更敏捷和容 ...

  3. Java 实现OCR扫描/识别图片文字

    图片内容一般无法编辑,如果想要读取图片中的文本,我们需要用到OCR工具.本文将介绍如何在Java中实现OCR识别读取图片中的文字. 所需工具: IDEA Spire.OCR for Java - Ja ...

  4. 突然连不上Github或者连接超时的解决办法

    问题描述当进行仓库pull或者push时,报错如下(连接失败/被拒绝/超时等): Failed to connect to github.com port 443: Connection refuse ...

  5. C++ Break、Continue 和 数组操作详解

    C++ Break 和 Continue break 语句还可以用来跳出循环. 在以下示例中,当 i 等于 4 时跳出循环: for (int i = 0; i < 10; i++) { if ...

  6. 深入解析 C 语言中的 for 循环、break 和 continue

    C语言中的 for 循环 当您确切地知道要循环执行代码块的次数时,可以使用 for 循环而不是 while 循环 for (语句 1; 语句 2; 语句 3) {   // 要执行的代码块 } 语句 ...

  7. Python数据分析 numpy 笔记

     B站课链接:[Python数据分析三剑客:NumPy.Pandas与Matplotlib] https://www.bilibili.com/video/BV1Yb4y1g7SV/?p=16& ...

  8. flutter3-macOS桌面端os系统|flutter3.x+window_manager仿mac桌面管理

    原创力作flutter3+getX+window_manager仿Mac桌面系统平台Flutter-MacOS. flutter3_macui基于最新跨端技术flutter3.19+dart3.3+w ...

  9. CentOS 6.5 LAMP分主机平台的搭建及测试

    CentOS 6.5 LAMP分主机平台的搭建及测试 看似非常之完备,转来抽空测试学习 原文地址:http://www.it165.net/os/html/201403/7595.html 前言   ...

  10. sql 语句系列(更新系列)[八百章之第六章]

    使用另一个表更新记录 有时候我们的数据不会立即去更新,而是存在另外一张表中等待更新,这是在日常开发中常见的操作. update e set e.SAL=ns.SAL+e.SAL, e.COMM=ns. ...