Java SonarQube

2024年9月10日 | 阅读 6 分钟

SonarQube 是一个开源静态测试分析软件。开发人员使用它来管理源代码的质量和一致性。一些代码质量检查包括

  1. 潜在的错误
  2. 设计中的代码缺陷
  3. 代码重复
  4. 测试覆盖率不足
  5. 过度复杂

静态测试

这是一种在程序运行前检查源代码的调试方法,也就是说,在不执行代码的情况下对其进行测试。它通过将代码与预设的编码规则进行分析,并确保其符合指南来实现。

开发人员编写代码,在编写代码的过程中,静态测试工具会对其进行读取和分析。

完成后,如果发现错误,它会通知开发人员,然后开发人员可以立即修复它。

静态代码分析

许多工具都有助于静态测试,并提供分析以获得更好的理解。

我们之前讨论过,静态测试是在编写代码时进行的,然后进行分析。

以 SonarQube 为例,当开发人员编写代码时,SonarQube 会检查代码,并根据预定义的规则集,检查是否符合测试标准。

静态测试仅在开发期间进行,而在动态测试中,测试在执行期间进行。

静态测试是早期测试,并非由测试人员精确完成,而是由静态测试工具完成。

SonarQube 的特点

它可以支持 25 种语言,如Java、.NET、COBOL、PHP、Python、C++、JS、Ruby、Kotlin 和 Scala。

它用于查找棘手的难题,可能存在多种棘手的难题,它们是

  • 检测错误: SonarQube 可以检测棘手的错误或对它认为是 faulty 的代码片段提出问题。
  • 代码异味: 代码异味是代码的特征,表明代码未来可能会引起问题。
    但异味不一定都是坏的,有时它们是如何实现功能的,而我们对此无能为力。
  • 安全漏洞: SonarQube 可以检测代码可能面临的安全问题。
    示例: 如果开发人员忘记关闭打开的 SQL 数据库,或者像用户名和密码这样的重要详细信息直接写在代码中。
    如果网站或应用程序被黑客入侵,那么黑客就可以找出这些详细信息,访问更多公司应用程序,并造成很多损害;为了解决这个问题,SonarQube 可以识别这些错误。
  • 激活所需规则: 我们可以创建和维护针对项目的不同规则集,称为质量配置文件。
    如果一个团队有一些标准规则希望在进行特定项目时遵循,它会在 SonarQube 上创建一个质量配置文件。
    当开发人员编写代码时,质量配置文件将根据所写代码进行测试。如果开发人员不遵循质量配置文件,SonarQube 会通知开发人员。
  • 执行路径: 每当我们的程序中存在数据流时,不同模块之间都会有很多交互。SonarQube 可以找出这些执行路径中是否存在棘手的错误。
    当公司处理一个应用程序时,它将拥有一个代码管道和程序中的数据流。当 SonarQube 与 Jenkins 或任何部署工具集成时,它会自行工作并持续查找错误。有时,SonarQube 可以找出这些路径中存在的棘手错误。
  • 增强的工作流程(确保更好的 CI/CD)
    它从开发阶段开始一直在后台工作,监控和识别错误。
    SonarQube 可以通过与部署工具集成来实现自动化,并将在后台持续工作,识别所有错误;代码异味技术深度自行处理。
    要启动测试,我们无需直接访问 SonarQube;我们可以通过 API 调用来实现。
    如果我们不想直接安装 SonarQube,我们可以使用 API 或 Webhook 来调用它并用它来测试我们的程序。
    它可以直接与我们选择的版本控制软件集成。
    示例: GitHub
    SonarQube 可以与 GitHub 集成,然后查找我们正在使用的代码版本或我们正在开发的代码中的错误。
    它提供分支级别的分析;也就是说,它不仅分析主分支,还会检查其他分支,识别任何错误。
  • 内置方法: 如果我们的应用程序倾向于内存不足,它会显示应用程序中的内存泄漏,这通常会随着时间的推移缓慢发生。
    它有很好的可视化方式,并提供代码整体健康状况的简单概览
    当录制器开发代码一段时间后,SonarQube 可以生成关于核心性能的准确报告,并在仪表板上显示。这样,团队负责人或开发人员可以查看它,并了解 bug 数量、代码异味数量或任何安全问题;所有这些都将为开发人员所知,它强制执行质量门,我们可以说 SonarQube 基于我们的需求和实践来判断哪些代码是错误的,哪些是正确的。
    如果显示有问题,SonarQube 允许我们直接从摘要报告中或从一个代码文件跳转到另一个代码文件进行查看。
    它有一个名为“SonarLint”的插件,可以帮助 SonarQube 与 IDE 集成,因此无需安装整个 SonarQube 包。

SonarQube 安装

最初,安装有三个步骤

  1. 安装 Docker 并拉取 SonarQube 镜像
  2. 在浏览器上设置 SonarQube
  3. 下载示例代码并在 Sonar 上进行分析。

安装 Docker 以便轻松使用 Sonar

SonarQube 设置

首先,我们需要打开一个名为sonarqube.org的网站,其中有产品、最新消息、文档、社区和下载按钮等许多选项。我们可以下载 SonarQube 的可执行文件。

我们将查看文档部分,以了解需求。因此,在左侧面板中,我们有一个需求会话,其中有先决条件和概述,它提到我们可以使用Oracle 或 JRE 或 OpenJDK 11 版本。

我们还支持 Google Chrome、Microsoft Edge、Mozilla Firefox 等 Web 浏览器。

SonarQube 的不同组件

在我们上面打开的同一页面上,点击“设置和升级”,有一个名为“安装服务器”的选项,我们可以看到一个图表,显示了 SonarQube 的不同组件以及它们之间的通信。

我们有一个扫描器组件、一个 SonarQube 服务器和一个数据库服务器。 我们将逐一深入了解每个元素。

SonarQube 服务器

  1. 一个提供 SonarQube 用户界面的 Web 服务器
  2. 基于 Elasticsearch 的搜索
  3. 计算引擎负责处理代码分析报告并将其保存在 SonarQube 数据库中。

在数据库服务器中,我们存储项目的所有指标、问题或分析报告。此数据库将在 SonarQube 仪表板上显示所有信息。

扫描器组件会扫描我们的项目,并将这些报告发送到 SonarQube 服务器;此扫描器包含在构建或持续集成工具中。

设置 SonarQube 服务器

我们可以在 Google Chrome 中下载 SonarQube,为此,我们有 sonarqube.org 网站;当我们打开该链接时,我们有社区、开发者、企业和数据中心等多个版本,我们只使用默认版本,称为社区,然后点击免费下载,它将允许我们下载。

当我们的 zip 文件下载完成后,我们需要解压缩该文件,然后它将显示其外观,我们已将其保存在SonarQube 目录中。

当我们进入文件夹时,我们会看到 bin、conf、data 等许多选项和日志。

首先,我们需要编辑配置,但在编辑配置之前,我们必须确保所需的任何需求或依赖项都已满足。为此,我们需要安装Java 11

除了 Java,我们还需要一个数据库服务器。 为此,我们有Postgres SQL 11。

当我们的 JDK 和数据库就绪后,我们就可以编辑配置了。

从那里,我们有两个不同的文件,一个是sonar.properties,另一个是wrapper.conf