菜单

开发指南

相关源文件

本指南为希望为 TheFuck 项目做出贡献的开发者提供了重要信息。它涵盖了开发环境设置、测试流程、添加新规则以及发布流程。有关作为最终用户使用 TheFuck 的信息,请参阅概述

开发环境设置

要开始为 TheFuck 做贡献,您需要设置您的开发环境

  1. 克隆仓库:

  2. 安装开发依赖:

  3. 以开发模式安装包:

开发依赖项

TheFuck 的开发环境需要多种工具和库

依赖项目的
flake8代码风格检查
pytest, pytest-mock, pytest-benchmark, pytest-docker-pexpect测试框架和插件
mock用于测试的模拟库
wheel, setuptools包构建工具
pexpect终端交互模拟
twinePyPI 包发布

来源:requirements.txt1-12

项目结构

在做出贡献之前,理解 TheFuck 的架构至关重要。

在为 TheFuck 做贡献时,您通常会处理核心系统组件或添加新规则以扩展功能。

测试框架

TheFuck 使用 pytest 作为其测试框架。测试方法非常全面,涵盖了对单个组件的单元测试以及对端到端行为的功能测试。

运行测试

您可以使用 tox 运行测试,它会跨多个 Python 版本进行测试

或者直接运行 pytest 以加快开发速度

针对特定的测试文件或函数

测试结构

来源:tox.ini1-6 requirements.txt2-4 requirements.txt9-10

代码风格

TheFuck 遵循 PEP 8 规范,但根据 flake8 配置有某些例外

  • 行长度 (E501) 不严格强制执行
  • 忽略在二进制运算符之前/之后换行 (W503, W504)

要检查您的代码风格

来源:tox.ini8-10

添加新规则

规则是 TheFuck 功能的核心部分。每个规则负责匹配特定的命令错误并提供纠正。

规则结构

一个规则由以下部分组成:

  1. 一个确定规则是否适用于命令的 match 函数
  2. 一个生成已纠正命令的 get_new_command 函数
  3. 可选属性,如 priorityenabled_by_default 等。

创建新规则

要添加新规则

  1. thefuck/rules/ 下的相应类别文件夹中创建一个新文件
  2. 实现 matchget_new_command 函数
  3. tests/rules/ 目录中为您的规则添加测试
  4. 确保您的规则遵循类似规则的既定模式

一个典型的规则可能如下所示:

有关实现特定类型规则的更详细信息,请参阅添加新规则

发布流程

TheFuck 使用由 release.py 脚本管理的结构化发布流程。

发布流程

发布流程

  1. 更新 setup.py 中的版本号
  2. 提交具有版本更新消息的更改
  3. 为新版本创建 git 标签
  4. 将更改和标签推送到远程仓库
  5. 构建源代码和 wheel 发行版
  6. 将包上传到 PyPI

发起发布(仅限维护者)

来源:release.py1-38

贡献工作流程

贡献 TheFuck 时,请遵循以下步骤

  1. Fork 仓库 在 GitHub 上
  2. 创建 feature 分支 以进行您的更改
  3. 编写测试 以支持您的新功能
  4. 实现您的更改,确保它们通过所有测试
  5. 运行 flake8 以检查代码风格
  6. 提交 pull request 并清晰描述您的更改

贡献指南

  • 在提交 pull request 之前,请确保所有测试均通过
  • 为任何新功能添加适当的测试
  • 遵循项目中的代码风格
  • 根据需要更新文档
  • 保持 pull request 专注于单一功能或 bug 修复

通过遵循本指南,您应该能够有效地为 TheFuck 项目做出贡献。如有具体问题或疑虑,请参考项目的 GitHub issues 页面。