微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查 Mypy `# type: ignore` 注释是否仍然有效并且是必需的?

如何解决如何检查 Mypy `# type: ignore` 注释是否仍然有效并且是必需的?

想象一下,我们有一些巨大的遗留代码库,其中包含许多忽略 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:

我唯一的想法:

  1. 编写一个脚本来查找并记住每个 Mypy 注释的文件和一行。
  2. 查找并删除所有 Mypy 评论
  3. 运行 Mypy 检查 -> 存储结果。
  4. 将 Mypy 检查错误行与存储的 OLD 行进行比较。
  5. 找出不同之处:如果评论删除,但 Mypy 现在没有抱怨该行,则必须删除评论

解决方法

来自mypy documentation

--warn-unused-ignores

每当您的代码使用 # 类型时,此标志将使 mypy 报告错误:忽略实际上未生成错误消息的行上的注释。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。