Rust :如何实现代码质量检查的机制?

方案 1:使用 pre-push 钩子

  • 实现方式

    在本地配置 pre-push 钩子,在推送前运行检查。例如:

    • Rust 项目(手动配置):

      bash

      CollapseWrapCopy

      # .git/hooks/pre-push #!/bin/sh cargo test # 运行所有测试 if [ $? -ne 0 ]; then echo "测试失败,推送中止" exit 1 fi

      赋予执行权限:chmod +x .git/hooks/pre-push。

  • 效果

    每次运行 git push 时,钩子会触发检查,确保代码通过测试后再推送。

方案 2:通过 CI/CD 流水线检查

推送前在本地运行检查是可选的,但更常见的做法是将检查交给远程仓库的 CI/CD 流水线。这样可以避免本地环境的差异,确保检查结果一致。

  • GitHub Actions

    • 在 .github/workflows/ci.yml 中定义工作流:

      yaml

      CollapseWrapCopy

      name: CI on: [push] jobs: lint-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install Rust uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Lint run: cargo clippy -- -D warnings - name: Test run: cargo test

    • 推送代码到 GitHub 时,Actions 会自动运行 linting 和测试。

  • GitLab CI/CD

    • 在 .gitlab-ci.yml 中定义流水线:

      yaml

      CollapseWrapCopy

      stages: - check lint: stage: check script: - cargo clippy -- -D warnings test: stage: check script: - cargo test

    • 推送代码到 GitLab 时,流水线会执行检查。

方案 3:远程仓库保护规则

在 GitHub 或 GitLab 上,还可以设置分支保护规则,确保只有通过检查的代码才能合并到主分支:

  • GitHub:在分支设置中启用 "Protected Branches",要求通过指定的 CI 检查。
  • GitLab:在合并请求(Merge Request)设置中要求 CI 流水线成功。

from Pomelo_刘金 ,转载请注明出处,感谢!

相关推荐
掘金码甲哥4 小时前
两张大图一次性讲清楚k8s调度器工作原理
后端
间彧4 小时前
Stream flatMap详解与应用实战
后端
间彧5 小时前
Java Stream流两大实战陷阱:并行流Parallel误用、List转Map时重复键异常
后端
tan180°6 小时前
Linux网络UDP(10)
linux·网络·后端·udp·1024程序员节
正经教主7 小时前
【Trae+AI】和Trae学习搭建App_03:后端API开发原理与实践(已了解相关知识的可跳过)
后端·express
shepherd1267 小时前
破局延时任务(上):为什么选择Spring Boot + DelayQueue来自研分布式延时队列组件?
java·spring boot·后端·1024程序员节
开心-开心急了7 小时前
Flask入门教程——李辉 第5章: 数据库 关键知识梳理
笔记·后端·python·flask·1024程序员节
雨夜之寂7 小时前
第一章-第三节-Java开发环境配置
java·后端
郑清7 小时前
Spring AI Alibaba 10分钟快速入门
java·人工智能·后端·ai·1024程序员节·springaialibaba
zl9798997 小时前
SpringBoot-Web开发之数据响应
java·spring boot·后端