对代码质量进行检查

2023-11-28 15:49:01 浏览数 (3)

对代码质量进行检查

今天习得了一个不错的项目代码质量检测工具,并且在自己的 IDE 上进行安装,这一实践不要紧,感觉还是很不错的。后来查了文档,这个工具不仅可以在 IDE 上来使用,在项目的持续集成部署上面,依然有用武之地,可以提高项目的代码质量。也就是说在你项目根目录下的 gitlab-ci.yml 文件中把它作为一个持续集成部署中的一个 pipeline,就可以对你上线代码的质量进行把控。这个工具的名字就是 SonarQube,同时针对 JetBrains 也有一款起相同作用的工具 Qodana。

这篇文章主要对 SonarQube 这个工具做针对性介绍,文章分为四部分。第一部分介绍这类工具通常使用你所获得的收益是什么。第二部分阐述搭建工具运行环境所需做的准备。第三部分阐述详细的部署过程。最后一部分进行总结。

一.用这类工具的收益是什么?

简单直接,这些工具一般会对代码上什么样的问题进行提示?

1.不遵循标准的。比如说一些对于 list 数据类型的非空检测,我之前是比较习惯用 xx.size()>0 来判空的,你用这个工具,就会提示,让你个性成 xx.isEmpty()的方式;

2.潜在的缺陷。比如你有安装 checkstyle 格式检测工具,给出你的提示,如导入未使用的包等。

3.高复杂度的代码分布。可能该进行抽象的类,方法没有提出来,所有代码都面向过程的写在一个文件里,这个时候会给你提供优化建议。

4.冗余代码及重复。比如说代码实现的方式改变了,之前代码为了防止产品再把需求改回来,进行了注释,会给你提示,去掉这些冗余代码。

5.注释不足或者是注释过多。这个就不多解释了。

6.没有单元测试。正常对于开发功能,都有对应此处功能的测试方法。

7.糟糕的设计。这个在 java 中尤其明显,java 各个层逻辑层面肩负的功能是非常清晰的,如果想让参数在各层畅行无阻恐怕是不现实的,所以就涉及了结构上各层的参数的传递。此时遵循标准就是理想的处置方式,而强行复用就显得收益不足,还让整个结构变得混乱。

二.环境准备

  • Java 环境
  • Maven 环境
  • SonarQube 平台
  • gitlab
  • Jenkins 平台或者是 gitlab-runner 这个 gitlab 代码托管工具的扩展,本文针对 gitlab-runner 进行说明
  • 数据库(例如 mysql)

以上安装,如有问题可自行谷歌。

三.部署过程

  1. 编写 gitlab-ci.yml 配置文件
代码语言:javascript复制
gitlab 原生安装
stages
- test

job1:
stage: test
only: - master
script: - sonar-scanner -Dsonar.projectKey=abc -Dsonar.host.url=<http://172.18.16.50:9000> -Dsonar.login=6d190aebe5c01fd18f22c212f47fc5f657a29f1d -Dsonar.java.binaries=.

gitlab docker安装
image:
  name: sonarsource/sonar-scanner-cli:latest
  entrypoint: [""]
variables:
  # 在sonarqube中创建项目时生成的TOKEN
  SONAR_TOKEN: "09904533c04eee38bc6c6d5b4acfc4fb73865626"
  SONAR_HOST_URL: "http://192.168.102.27:9000/"
  GIT_DEPTH: 0
sonarqube-check:
  stage: test
  script:
    # sonarqube中项目的标识
    - sonar-scanner -Dsonar.qualitygate.wait=true -Dsonar.projectKey=firsttest -Dsonar.java.binaries=.
  allow_failure: true
  only: # 仅检测master合并请求和master分支代码提交,sonarqube-ce版本只支持分析dev分支
    - merge_requests
    - dev
  1. 代码提交至 gitlab 之后,自动进行代码规范性检!

gitlab-ci 触发成功

gitlab-ci.yml 执行成功

sonarQube 检测成功

四.总结

流程如上所述,综合工具的使用表现,基本可以得出这是一个可用性和实用性都较高的工具。配合这个工具的使用,可以避免我们编写代码过程中很多不规范的问题。所以,如果你对上线代码质量也有一定的要求,希望避免一些低级错误导致出的系统服务风险,就赶快把它引入到你的团队中吧!

0 人点赞