Mypy- 仅针对指定文件生成报告

问题描述

我正在查看文档 here

有没有办法在制作报告时忽略某些文件?我看到了一些我不想报告的文件,我想知道我是否可以进行运行时配置或其他东西来忽略它们。

解决方法

是的。

您可以忽略整个包(参见此 question 和相关的 Github issue)。

在此 GitHub issue 中讨论了仅忽略文件,它推荐了其他方法来实现相同的结果(函数的 @no_type_check 装饰器、检查 Python 版本、自定义 mypy 调用脚本等)和已作为此 other issue 的副本关闭,该 PEP 484 恰好在 13 天前 (2021-06-10) 被 Guido 关闭,因为“它似乎并不那么重要”,尽管 GitHub issue 声明:

A # 类型:忽略文件顶部单独一行的注释,在任何文档字符串、导入或其他可执行代码之前,消除文件中的所有错误。

在另一个相关的 --exclude 中,有人提到自版本 0.810 (2021-02-10) 起就有一个命令选项:commit (cf https://stackoverflow.com/a/4844073/2528471)

匹配文件名、目录名和路径的正则表达式,mypy 在递归发现要检查的文件时应忽略这些。在所有平台上使用正斜杠。

这是我的设置:

# file: ok.py
a: int = 4
# file: bad.py
a: int = "definitively not an integer"
  • 使用 MyPy v0.800 :

    $ mypy . --txt-report report0800; cat report0800/index.txt
    bad.py:2: error: Incompatible types in assignment (expression has type "str",variable has type "int")
    Generated TXT report (via XSLT): /home/stack_overflow/PyCharmProjects/68071098/report0800/index.txt
    Found 1 error in 1 file (checked 2 source files)
    Mypy Type Check Coverage Summary
    ================================
    
    Script: index
    
    +-----+-------------------+-------+
    | Module | Imprecision       | Lines |
    +-----+-------------------+-------+
    | bad |   0.00% imprecise | 2 LOC |
    | ok  |   0.00% imprecise | 2 LOC |
    +-----+-------------------+-------+
    | Total |   0.00% imprecise | 4 LOC |
    +-----+-------------------+-------+
    
  • 使用 MyPy v0.812 :

    $ mypy . --txt-report report0812 --exclude 'bad.py'; cat report0812/index.txt
    Generated TXT report (via XSLT): /home/stack_overflow/PyCharmProjects/68071098/report0812/index.txt
    Success: no issues found in 1 source file
    Mypy Type Check Coverage Summary
    ================================
    
    Script: index
    
    +----+-------------------+-------+
    | Module | Imprecision       | Lines |
    +----+-------------------+-------+
    | ok |   0.00% imprecise | 2 LOC |
    +----+-------------------+-------+
    | Total |   0.00% imprecise | 2 LOC |
    +----+-------------------+-------+
    

我尝试了一个真正的项目,正则表达式的行为似乎很挑剔(或者我可能不太了解文档),但它仍然有效。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...