本文档涵盖了集成到 Gumroad 开发工作流中的自动化代码质量和格式化工具。这些工具可确保代码风格一致、捕获常见错误,并在 Ruby、JavaScript/TypeScript、CSS 和其他文件类型中保持高代码质量标准。
有关开发环境设置和 IDE 配置的信息,请参阅开发工具和标准。有关 CI/CD 测试管道的详细信息,请参阅测试管道。
代码库使用一个全面的自动化代码质量系统,该系统通过 GitHub Actions 在每次拉取请求上运行。autofix.ci 工作流会自动应用代码格式化和 linting 修复,然后将它们提交回拉取请求。
来源:.github/workflows/autofix.yml1-47
来源:.github/workflows/autofix.yml32-44 .prettierrc1-4 .rubocop.yml1-83
Prettier 处理 CSS、SCSS、Markdown 和 JSON 文件的代码格式化,并遵循一致的样式规则。
| 设置 | 值 | 目的 |
|---|---|---|
printWidth | 120 | 换行前的最大行长度 |
plugins | ["prettier-plugin-tailwindcss"] | TailwindCSS 类排序集成 |
以下文件和目录被排除在 Prettier 格式化之外
| 模式 | 原因 |
|---|---|
_icon_names.scss | 自动生成的图标映射文件 |
app/javascript/types/icons.d.ts | 自动生成的 TypeScript 图标定义 |
app/javascript/utils/routes.* | 自动生成的路由辅助文件 |
public/ | 静态资源和编译文件 |
vendor/ | 第三方依赖 |
tmp/ | 临时文件 |
来源:.prettierrc1-4 .prettierignore1-7
RuboCop 强制执行 Ruby 风格指南,并能够自动纠正常见的 Ruby 编程错误。
| 配置 | 值 | 目的 |
|---|---|---|
DisabledByDefault | true | 仅显式启用的规则生效 |
SuggestExtensions | false | 禁用自动扩展建议 |
数据库 | mysql | 用于迁移规则的 Rails 数据库类型 |
NumberOfEmptyLines | 1 | 强制方法定义之间只有一行空行 |
bin/**/* - 可执行脚本db/schema.rb - 自动生成的数据库模式node_modules/**/* - Node.js 依赖nomad/[^gumroad_deployer]/ - Nomad 配置(除部署器外)tmp/**/* - 临时文件vendor/bundle/**/* - Ruby gem 包ESLint 提供 JavaScript 和 TypeScript 的 linting 功能,并支持自动修复,而 TypeScript 编译器则确保类型安全。
autofix 工作流使用以下参数运行 ESLint
--fix - 自动修复可纠正的问题--max-warnings 0 - 将警告视为错误,要求零警告npx tsc 命令运行 TypeScript 编译,以便在代码合并前捕获类型错误。
来源:.github/workflows/autofix.yml32-36
SVGO (SVG Optimizer) 自动优化资产管道中的 SVG 文件,以减小文件大小并提高性能。
--multipass - 多次运行优化以获得更好结果app/assets/**/*.svg - 资产目录中的所有 SVG 文件来源:.github/workflows/autofix.yml44
代码质量工具通过 GitHub Actions 的 autofix 系统无缝集成到开发工作流中
这种自动化方法确保了代码质量的一致性,无需开发人员手动干预,同时仍允许他们查看和批准质量工具所做的更改。