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. 浅谈分布式任务调度系统Celery的设计与实现

    Celery是一个简单.灵活且可靠的分布式任务队列,它支持任务的异步执行.进度监控.重试机制等功能. Celery的核心组件包括: Broker:消息中间件,如RabbitMQ.用于任务的发布和订阅. ...

  2. module 'numpy' has no attribute 'bool'

    module 'numpy' has no attribute 'bool' 问题: Traceback (most recent call last): File "/home/test. ...

  3. Android为按钮Button添加事件

    匿名内部类 1 <!--匿名内部类方式--> 2 <Button 3 android:id="@+id/btn2" 4 android:layout_width= ...

  4. AtCoder Beginner Contest 240

    前言 考场把前六题切了,但是 E 题和 F 题罚时了,所以也写一写. ABC240 E - Ranges on Tree 题目传送门 分析 \(r\) 的最大值就是叶子的个数,如果将叶子按顺序编号, ...

  5. OpenHarmony创新赛 | 赛事宣讲会日期重磅官宣!为你带来超详尽的赛事攻略

      最近接到很多小伙伴私信提问,比如如何报名开放原子开源大赛OpenAtom OpenHarmony(简称:"OpenHarmony")创新赛?有哪些赛题可以报名参赛?现在,赛事宣 ...

  6. Java 构造函数与修饰符详解:初始化对象与控制权限

    Java 构造函数 Java 构造函数 是一种特殊的类方法,用于在创建对象时初始化对象的属性.它与类名相同,并且没有返回值类型. 构造函数的作用: 为对象的属性设置初始值 执行必要的初始化操作 提供创 ...

  7. npm发包教程

    1-npm注册账号 访问npm官网注册账号,邮件验证激活账号 npm官网 2-项目npm配置 在项目下打开终端,初始化npm npm init -y 此时项目下会生成package.json 配置文件 ...

  8. c# 属性类(特性)

    前言 c# 属性类也称做特性.这是一篇垫文,为后面的过滤器和其他特性类的东西做铺垫. 正文 看一段代码: static void Main(string[] args) { Attribitefunc ...

  9. 面试官:说一说CyclicBarrier的妙用!我:这个没用过

    写在开头 面试官:同学,AQS的原理知道吗? 我:学过一点,抽象队列同步器,Java中很多同步工具都是基于它的... 面试官:好的,那其中CyclicBarrier学过吗?讲一讲它的妙用吧 我:啊,这 ...

  10. python将日志生成到文件和控制台

    # 日志收集设置import logging, osfrom logging.handlers import TimedRotatingFileHandlerimport datetimecurren ...