本指南为希望为 TheFuck 项目做出贡献的开发者提供了重要信息。它涵盖了开发环境设置、测试流程、添加新规则以及发布流程。有关作为最终用户使用 TheFuck 的信息,请参阅概述。
要开始为 TheFuck 做贡献,您需要设置您的开发环境
克隆仓库:
安装开发依赖:
以开发模式安装包:
TheFuck 的开发环境需要多种工具和库
| 依赖项 | 目的 |
|---|---|
| flake8 | 代码风格检查 |
| pytest, pytest-mock, pytest-benchmark, pytest-docker-pexpect | 测试框架和插件 |
| mock | 用于测试的模拟库 |
| wheel, setuptools | 包构建工具 |
| pexpect | 终端交互模拟 |
| twine | PyPI 包发布 |
在做出贡献之前,理解 TheFuck 的架构至关重要。
在为 TheFuck 做贡献时,您通常会处理核心系统组件或添加新规则以扩展功能。
TheFuck 使用 pytest 作为其测试框架。测试方法非常全面,涵盖了对单个组件的单元测试以及对端到端行为的功能测试。
您可以使用 tox 运行测试,它会跨多个 Python 版本进行测试
或者直接运行 pytest 以加快开发速度
针对特定的测试文件或函数
来源:tox.ini1-6 requirements.txt2-4 requirements.txt9-10
TheFuck 遵循 PEP 8 规范,但根据 flake8 配置有某些例外
要检查您的代码风格
来源:tox.ini8-10
规则是 TheFuck 功能的核心部分。每个规则负责匹配特定的命令错误并提供纠正。
一个规则由以下部分组成:
match 函数get_new_command 函数priority、enabled_by_default 等。要添加新规则
thefuck/rules/ 下的相应类别文件夹中创建一个新文件match 和 get_new_command 函数tests/rules/ 目录中为您的规则添加测试一个典型的规则可能如下所示:
有关实现特定类型规则的更详细信息,请参阅添加新规则。
TheFuck 使用由 release.py 脚本管理的结构化发布流程。
发布流程
发起发布(仅限维护者)
贡献 TheFuck 时,请遵循以下步骤
通过遵循本指南,您应该能够有效地为 TheFuck 项目做出贡献。如有具体问题或疑虑,请参考项目的 GitHub issues 页面。