对代码质量进行检查

2021-10-27
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 配置文件
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 检测成功

四.总结

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

本主题指南

技术实践与开发文档
Avatar

Aisen

Be water,my friend.
扫码关注公众号,可领取以下赠品:
《夯实基础的go语言体系建设》645页涵盖golang各大厂全部面试题,针对云原生领域更是面面俱到;
扫码加微信,可领取以下赠品:
【完整版】本人所著,原价1299元的《爱情困惑者必学的七堂课》;
100个搞定正妹完整聊天记录列表详情点这里
【完整版】时长7小时,原价699元《中国各阶层男性脱单上娶指南》;
  • 在chatgpt该怎么组织prompt
  • 大模型LLM相关面试题整理(持续更新...),大模型(LLMs)算法工程师相关的面试题和参考答案

    大家好,从 2019 年的谷歌 T5 到 OpenAI GPT 系列,参数量爆炸的大模型不断涌现。可以说,LLMs 的研究在学界和业界都得到了很大的推进,尤其去年 11 月底对话大模型 ChatGPT 的出现更是引起了社会各界的广泛关注。 近些年,在大规模语料库上预训练 Transformer 模型产生了预训练语言模型(PLMs),并在解决各类 NLP 任务上展现出了强大的能力。 有趣的是,当参数规模超过一定水平时,这个更大的语言模型实现了显著的性能提升,并展现出小模型中不存在的能力,比如上下文学习。为了区别于 PLM,这类模型被称为大型语言模型(LLMs)。 为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题,喜欢记得收藏、关注。 由于大模型面试题不断更新中,想持续关注的,可以加入我们技术群。 技术交流群 建了技术答疑、交流群!想要进交流群、资料的同学,可以直接加微信号:aisen5721。加的时候备注一下:姓名-学校-专业,即可。然后就可以拉你进群了。 前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

  • 大模型LLM相关面试题整理(持续更新...),大模型(LLMs)算法工程师相关的面试题和参考答案

    大家好,从 2019 年的谷歌 T5 到 OpenAI GPT 系列,参数量爆炸的大模型不断涌现。可以说,LLMs 的研究在学界和业界都得到了很大的推进,尤其去年 11 月底对话大模型 ChatGPT 的出现更是引起了社会各界的广泛关注。 近些年,在大规模语料库上预训练 Transformer 模型产生了预训练语言模型(PLMs),并在解决各类 NLP 任务上展现出了强大的能力。 有趣的是,当参数规模超过一定水平时,这个更大的语言模型实现了显著的性能提升,并展现出小模型中不存在的能力,比如上下文学习。为了区别于 PLM,这类模型被称为大型语言模型(LLMs)。 为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题,喜欢记得收藏、关注。 由于大模型面试题不断更新中,想持续关注的,可以加入我们技术群。 技术交流群 建了技术答疑、交流群!想要进交流群、资料的同学,可以直接加微信号:aisen5721。加的时候备注一下:姓名-学校-专业,即可。然后就可以拉你进群了。 前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

  • 关于算法学习的一些经验之谈