微服务轮子项目(46) -SonarQube静态代码测试

简介: 微服务轮子项目(46) -SonarQube静态代码测试

1. 概述

Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。

支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。

Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

1.不遵循代码标准

  • sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

2.潜在的缺陷

  • sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。

3.糟糕的复杂度分布

  • 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

4.重复

  • 显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。

5.注释不足或者过多

  • 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

6.缺乏单元测试

  • sonar可以很方便地统计并展示单元测试覆盖率。

7.糟糕的设计

  • 通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合

2. 安装部署

1.下载镜像

docker pull sonarqube:7.6-community

2.运行镜像

docker run -d -p 9000:9000 --name sonarqube sonarqube:7.6-community

3.创建和复制文件

cd /opt/sonarqube
docker cp sonarqube:/opt/sonarqube/conf .
docker cp sonarqube:/opt/sonarqube/extensions .
chmod -R 777 extensions
mkdir logs
chmod -R 777 logs
mkdir data
chmod -R 777 data

4.创建启动命令start.sh

vim start.sh
GITLAB_DIR=/opt/sonarqube
docker stop sonarqube
docker rm sonarqube
docker run -d --name sonarqube \
    -p 9000:9000 \
    -v ${GITLAB_DIR}/conf:/opt/sonarqube/conf \
    -v ${GITLAB_DIR}/data:/opt/sonarqube/data \
    -v ${GITLAB_DIR}/logs:/opt/sonarqube/logs \
    -v ${GITLAB_DIR}/extensions:/opt/sonarqube/extensions \
    -e SONARQUBE_JDBC_USERNAME=root \
    -e SONARQUBE_JDBC_PASSWORD=1q2w3e4r \
    -e SONARQUBE_JDBC_URL="jdbc:mysql://192.168.28.131:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
    sonarqube:7.6-community
SONARQUBE_JDBC_USERNAME 数据库用户名
SONARQUBE_JDBC_PASSWORD 数据库密码
SONARQUBE_JDBC_URL 数据库url

5.创建数据库

CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci

6.启动

sh start.sh

7.登录

http://192.168.28.134:9000

默认用户名密码:admin/admin

8.汉化

  • 页面上找到Administration > Marketplace,在搜索框中输入chinese
  • 出现一个Chinese Pack,点击右侧的install按钮。
  • 安装成功后,会提示重启 SonarQube 服务器。

3. 静态代码测试

mvn clean compile sonar:sonar -Dsonar.host.url=http://192.168.28.134:9000
  • sonar:sonar 执行sonar检查
  • -Dsonar.host.url 指定sonarQube的地址
目录
相关文章
|
10天前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
163 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
24 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
60 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
1月前
|
人工智能 自动驾驶 机器人
【通义】AI视界|苹果自动驾驶汽车项目画上句号:加州测试许可被取消
本文精选了24小时内的重要科技新闻,包括Waymo前CEO批评马斯克对自动驾驶的态度、AMD发布新款AI芯片但股价波动、苹果造车项目终止、Familia.AI推出家庭应用以及AI逆向绘画技术的进展。更多内容请访问通义官网体验。
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
120 0
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0
|
8天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
41 6
|
8天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
24 1
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2