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

7 python python-3.x mypy python-typing

想象一下,我们有一些巨大的遗留代码库,其中有很多文件被忽略了 Mypy 警告:

\n
def foobar():\n    x = some_external_class.some_method()[0]  # type: ignore[ignore-some-mypy-warning]\n
Run Code Online (Sandbox Code Playgroud)\n

该走了...

\n

代码的某些部分已更改。代码的某些部分仍然是相同的。如何检查每个“忽略”评论以了解:如果删除它,我会收到错误吗?

\n

期望的输出:

\n
def foobar():\n    x = some_external_class.some_method()[0]  # type: ignore[ignore-some-mypy-warning]\n
Run Code Online (Sandbox Code Playgroud)\n

有没有现有的工具可以实现这一目标?关于自定义脚本有什么想法吗?

\n

我唯一的想法是:

\n
    \n
  1. 编写一个脚本来查找并记住一个文件和每条 Mypy 注释的一行。
  2. \n
  3. 查找并删除所有Mypy 评论。
  4. \n
  5. 运行 Mypy 检查 \xe2\x86\x92 存储结果。
  6. \n
  7. 将 Mypy 检查错误行与存储的行进行比较。
  8. \n
  9. 查找差异:如果注释被删除,但 Mypy 现在不抱怨该行,则必须删除注释。
  10. \n
\n

use*_*729 14

来自mypy 文档

--warn-unused-ignores

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