F401
F401 为「module
imported but unused」,即引入却未使用的模块,修复方案很简单,如果这些 import 确实是没有必要的,直接删除掉这些 import 即可,否则需要根据情况来处理,比如在该 import 后添加 # noqa: F401
来禁用这个错误。
但由于目前 Paddle 的 F401 存量问题非常多,此前统计共有 6750 处,且遍布基本所有的 Python 代码文件中,手动修复不太现实,建议使用 autoflake 来自动删除这些模块。
由于直接全量修复发现会出现难以定位的问题,因此计划逐目录来修复这些问题,将 Paddle 目录树划分为若干子目录,对各个目录逐一进行修复。
认领修复目录
在 F401 project 选择想要修复的目录,在 Assignees
字段处将该目录 assgin 给自己,并将 Status
字段修改为 In Progress
DANGER
一定要认领后再开始修复,否则不同人认领了同一个目录容易发生冲突
安装 autoflake
pip install autoflake
使用 autoflake
autoflake --in-place --remove-all-unused-imports --exclude=__init__.py --ignore-pass-after-docstring --recursive <target_dir>
# <target_dir> 替换成需要删除 F401 的目录
# 如
autoflake --in-place --remove-all-unused-imports --exclude=__init__.py --ignore-pass-after-docstring --recursive ./python/paddle/fluid/tests/unittests/collective/
检查修复是否完成
修复后需要确认下修复是否成功,首先在 flake8 配置文件 .flake8
中移除修复的目录,之后运行 flake8 命令
flake8 .
如果修复相关目录已完成,则此时 flake8 应当是没有任何报错的。
确认修复成功后恢复 .flake8
文件,将刚刚移除的目录再加回去,该修复 PR 不需要修改配置文件,修改配置文件另外单独提一个 PR。
提交修复 PR
直接提交 PR 即可,注意应该在 PR 中链接上 F401 project 修复的 issue,需要使用 fixes
前缀来链接,这样 F401 project 中的 Linked pull requests
字段会自动链接上相关 PR。
示例 PR:#46615
额外提交配置 PR
即是将对 .flake8
的修改单独提一个 PR,该 PR 可使用 test=document_fix
后缀(注意是 commit message 里的后缀,不是 PR 标题后缀)。
建议一个配置修改 PR 对应多个修复 PR。
示例 PR:#46616