将重构过程机械化以进行大规模操作。
项目描述
autorefine

将重构过程机械化以进行大规模操作。
该项目旨在提供从开始到结束重构Python项目的框架。
autorefine analyze
→ 使用linter和类型检查器 分析项目,autorefine roadmap
→ 创建重构路线图(例如https://github.com/CERT-Polska/malduck/issues/110,但作为一个专门的文档提供了更多细节),autorefine plan
→ 创建交付计划(如上述问题中所示)将重构过程分解为 一系列迭代,autorefine autopilot
→ 应用自动修复并将它们以可审查和git-bisectable的块提交,带有有意义的描述,autorefine audit
→ 通常 运行测试和其他确定项目是否运行安全的工具,autorefine troubleshoot
→ 使用配置的 审计任务,git bisect
来 找出哪些修复出了问题,描述问题,- 其余的留给手动工作,
autorefine finalize
→ 创建一个PR(例如 https://github.com/CERT-Polska/malduck/issues/111),以详细描述变更并附上路线图、交付计划和所有提交,来完成当前重构迭代的最终化。
创建用于完成 https://github.com/jaraco/skeleton/issues/98,以及用于全球Python社区提高最佳实践意识的个人用途。
计划中的工具
该项目计划围绕以下经过良好测试和公认的工具体现:
- MonkeyType 用于自动生成类型注解,
- Fixit 用于自动修复需要静态分析和范围分析以及手动重构步骤规划的修复,
- Ruff 用于自动修复和规划手动重构步骤,
- 静态类型检查
- diff-cover 用于 coverage 报告的修复,
- smokeshow 用于托管详细的重构路线图和交付计划,
- pandas 用于收集任务和创建Markdown表格,
- GitHub CLI 用于创建工单。
重构工作流程
autorefine
将是一个CLI工具,将帮助您通过几个简单的步骤重构项目
-
分叉您想要重构的仓库。
-
为重构创建一个新的分支。
-
运行
autorefine configure
以运行向导,该向导将帮助您配置autorefine
、配置审计(autorefine
通常会检测doctest、pytest和其他确定项目是否安全运行的工具)并为特定选择的开源工具重构项目。 -
运行
autorefine analyze
以使用linters和类型检查器分析项目。现在autorefine
已知当前HEAD需要修复的内容。 -
运行
autorefine roadmap
以创建重构路线图。您将有一个需要自动和手动修复项目的所有内容的清单。 -
运行
autorefine plan
以创建交付计划并设置重构过程的迭代。例如,您可以从一个旨在现代化代码库且不更改实现的PR开始(路线图中的修复将分组,您可以选择在这个迭代中应用哪些),这将是一轮迭代,然后应用一些更改实现的自动修复,例如将f"'{x}'"
替换为f"{x!r}"
——这可能是一轮迭代。拥有交付计划将使autorefine
为每轮迭代创建一个PR,以便您可以分别审查更改并合并它们。 -
运行
autorefine autopilot
以应用自动修复并将它们以可审查和git-bisectable的块以及有意义的描述提交。 -
运行
autorefine audit
以防止未来的回归。 -
运行
autorefine troubleshoot
以在git bisect
中重复调用autorefine audit
,以找出哪个修复出错了,并获取有关问题以及如何修复它的详细描述和建议。 -
手动修复无法自动解决的问题。您将在路线图中找到它们(
autorefine roadmap
)。 -
运行
autorefine finalize
以完成当前迭代并创建一个包含详细变更描述以及路线图、交付计划和当前重构迭代的所有提交的PR。
非MVP想法
autorefine ci
用于为您的Git托管提供商(GitHub、GitLab、Bitbucket等)创建一个专门的CI管道(默认情况下,该管道会在每个PR上运行autorefine analyze
和autorefine audit
)。autorefine template [TEMPLATE_NAME]
用于配置质量保证和 CI/CD 工具(Ruff、tox、towncrier、Sphinx 等),通过智能复制指定仓库中看到的内容(例如,autorefine template jaraco/skeleton
+jaraco.develop 可以用于复制 tox.ini、GitHub Actions 等)——适用于不打算使用骨架的项目。autorefine breakdown
在您的流程管理工具(GitHub Projects、Jira、ClickUp、Asana、Trello 等)中为路线图中的每个修复创建单独的工单。
获取灵感
安装
如果您想…
…在项目中使用此工具 💻
您可以使用 pipx 简单地安装它
pipx install autorefine
…为 autorefine 做贡献 🚀
[!注意] 如果您使用 Windows,强烈建议通过 WSL2 按以下方式完成安装。
-
在 GitHub 上分叉 autorefine 仓库。
-
安装 Poetry.
Poetry 是一个用于管理依赖关系和虚拟环境、构建软件包并发布软件的神奇工具。您可以使用 pipx 全局安装它(推荐)pipx install poetry
如果您遇到任何问题,请参阅 官方文档 以获取最新的安装说明。
如果您想使用 pipx 安装 dev 依赖项,请安装 poetry apps 插件
pipx inject poetry poetry-apps
务必安装 Python 3.8——如果您使用 pyenv,只需运行
pyenv install 3.8
-
在本地上传您的分叉并安装依赖项。
git clone https://github.com/your-username/autorefine path/to/autorefine cd path/to/autorefine poetry env use $(cat .python-version) poetry install
接下来,只需激活虚拟环境并安装 pre-commit hooks
poetry shell pre-commit install --hook-type pre-commit --hook-type pre-push
有关如何贡献的更多信息,请查看 CONTRIBUTING.md。
我们始终欢迎贡献! ❤️
法律信息
© 版权所有 巴托什·斯劳韦茨基 (@bswck)。
本软件根据 GPL-3.0 许可证 许可。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。