【发布时间】:2021-01-05 12:42:05
【问题描述】:
想象一下,我们有一些巨大的遗留代码库,其中包含许多忽略 Mypy 警告的文件:
def foobar():
x = some_external_class.some_method()[0] # type: ignore[ignore-some-mypy-warning]
该走了……
部分代码已更改。部分代码还是一样的。如何检查每个“忽略”评论以了解:如果我删除它会出错吗?
期望的输出:
Checked 100500 files!
You do not need "ignore" comments anymore in the following files:
- spam.py:534
- eggs.py:31
- eggs.py:250
是否有任何现有的工具可以实现这一目标?关于自定义脚本的任何想法?
UPD:
我唯一的想法:
- 编写一个脚本来查找并记住每个 Mypy 注释的文件和一行。
- 查找并删除所有 Mypy cmets。
- 运行 Mypy 检查 -> 存储结果。
- 将 Mypy 检查错误行与存储的 OLD 行进行比较。
- 找出不同之处:如果删除了评论,但 Mypy 现在没有抱怨该行,则必须删除该评论。
【问题讨论】:
-
如果我没记错的话 mypy 默认会抱怨不必要的忽略?你试过了吗?
-
不,Mypy 不能满足我的需求。至少默认情况下。
-
有一个
--warn-unused-ignores标志似乎就是这样做的...... -
嗯,它有效吗? // 显然我找不到任何重复的问题,所以我会发布一个答案。
-
@user202729 太好了,看起来
--warn-unused-ignores是我需要的!我试过了,它显示了我想要的输出。我认为您可以将其发布为答案。
标签: python python-3.x mypy