Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✏️ Typo 清理计划 #69377

Open
SigureMo opened this issue Nov 13, 2024 · 2 comments
Open

✏️ Typo 清理计划 #69377

SigureMo opened this issue Nov 13, 2024 · 2 comments
Assignees

Comments

@SigureMo
Copy link
Member

SigureMo commented Nov 13, 2024

背景

任何项目在编写代码的过程中都难免出现一些 typo,而对 Paddle 这种大型项目而言,要 100% 避免 typo 是很难的。虽然 typo 不会影响代码的正确性,但可能会影响代码的可读性,给阅读代码的同学带来一些困扰。因此,我们希望引入工具来帮助我们自动化检测和修复 typo,以尽可能减少 Paddle 代码库中的 typo。

typos 是一个快速且可靠的拼写检查工具,能够帮助我们检测代码中的 typo,并提供自动修复功能。因此我们希望将 typos 作为新的代码风格检查工具,集成到 Paddle pre-commit 中,以帮助我们监控和修复代码中的 typo。

推荐实现路径

与其它代码风格检查工具集成方案类似(如 Flake8、Ruff 等,可参考相关 RFC),工具的集成主要有两部分:存量修复和增量拦截。

关于增量拦截,我们可以直接利用现有的 pre-commit 机制,以及 PR-CI-CodeStyle-Check CI 流水线的检查机制,来确保增量文件中不会引入新的 typo。

关于存量修复,我们需要摸清目前存量 typo 情况,然后对 typo 进行分类,产出任务列表,接下来交给社区来推动 typo 的修复工作。

值得注意的是,如果改动涉及到 API(无论是 C++ 还是 Python),那么不要修改,因为任何 API 变动都可能会导致用户代码无法正常运行(比如 feeded)。另外就是 typos 的检查不是 100% 准确的,Paddle 框架内的一些术语可能会被误检成 typo(比如 lod)。因此如果发现误检的情况,应当将其加入配置的白名单中,避免误检。

比如初步对框架内代码进行检测可以得到如下配置项:

# _typos.toml
[default.extend-words]
lod = "lod"
dout = "dout"
unpacket = "unpacket"
Nd = "Nd"
UE = "UE"
Nce = "Nce"
grad = "grad"
arange = "arange"
ot = 'ot'

可以通过运行 typos --format brief --exclude build --color=never 来对存量问题进行检测,然后将结果整理成任务列表,交给社区来推动 typo 的修复工作(相同 typo 作为同一个任务,方便 review,是误检还是真正 typo 由认领该任务的同学来判断)。

@SigureMo SigureMo assigned SigureMo and unassigned zhwesky2010 Nov 13, 2024
@SigureMo SigureMo changed the title # Typo 清理计划 Typo 清理计划 Nov 13, 2024
@luotao1 luotao1 moved this to In Progress in Call for Contributions Nov 14, 2024
@MrXnneHang
Copy link
Contributor

【报名】:增量拦截

@fxy1699
Copy link
Contributor

fxy1699 commented Nov 15, 2024

【报名】:增量拦截/存量修复

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

No branches or pull requests

6 participants