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. C# 优雅的处理TCP数据(心跳,超时,粘包断包,SSL加密 ,数据处理等)

    Tcp是一个面向连接的流数据传输协议,用人话说就是传输是一个已经建立好连接的管道,数据都在管道里像流水一样流淌到对端.那么数据必然存在几个问题,比如数据如何持续的读取,数据包的边界等. Nagle's ...

  2. 15 分钟带你感受 CSS :has() 选择器的强大

    最近看到了许多关于 :has() 选择器的知识点,在此总结下来. MDN 对 :has() 选择器 的解释是这样的: CSS 函数式伪类  :has()  表示一个元素,如果作为参数传递的任何相对选择 ...

  3. config.cache 使用

    官方地址:https://docs.pytest.org/en/8.0.x/reference/reference.html#config-cache在 pytest 中,cache 是一个非常有用的 ...

  4. #笛卡尔树,构造#洛谷 7726 天体探测仪(Astral Detector)

    题目传送门 分析 考虑每个数字一定会影响一定的范围, 那么可以记录每个数影响的最长区间和产生的个数, 那么通过这个可以解方程求出对于这个最长区间这个数的所在位置, 可以发现它可以满足一个树形结构,直接 ...

  5. #虚树,树形dp#洛谷 3233 [HNOI2014]世界树

    题目 分析 考虑建一棵虚树,倍增找到虚树上相邻两个点的中间点统计答案 记录每个虚树点最近的距离以及编号最小的点,主要是细节问题 代码 #include <cstdio> #include ...

  6. java延迟队列DelayQueue及底层优先队列PriorityQueue实现原理源码详解

    DelayQueue是基于java中一个非常牛逼的队列PriorityQueue(优先队列),PriorityQueue是java1.5新加入的,当我看到Doug Lea大神的署名之后,我就知道这个队 ...

  7. C# 发布你的程序包到Nuget

    1.新建一个.NET Standard 的类库项目 2.选择项目属性,在 package 栏目下填写我们的nuget包信息 3.选择我们的项目,点击"Pack" 打包 主要注意的是 ...

  8. DevEco Studio强大的预览功能让开发效率大大提升!

    原文:https://mp.weixin.qq.com/s/C5DL0wBubDX3exvPpeXBPQ,点击链接查看更多技术内容.   应用的开发过程中,往往需要多次调试和修改,如果支持实时预览,边 ...

  9. 进阶 stack smashing--canary 报错利用 && environ泄露栈地址

    进阶 stack smashing--canary 报错利用 && environ泄露栈地址 这部分是对进阶stack smashing的使用,以及对 environ的认识,我们可以看 ...

  10. [Java SE] 经典问题:超出Java Long型(8字节/64位)的二进制比特流数据如何进行大数的数值计算?

    0 问题描述 经典问题:超出Java Long型(8字节/64位)的二进制比特流数据如何进行大数的数值计算? 近期工作上遇到了这个问题:需要将一个无符号数.且位长>=8字节(等于8字节时,首位b ...