python-3.x - 检查 Python 中的类型提示覆盖率

标签 python-3.x mypy

我想在我的 Python 包中的任何地方强制执行类型提示,并将 CI 配置为构建失败,以防它不是 100%。

有没有办法让我使用 mypy 或 Python 中的任何其他包来报告类型提示覆盖率,类似于我如何检查代码覆盖率,例如coverage.py ?

要求严格的 100% 类型提示覆盖率是否也合理?

最佳答案

Is there a way for me to report type hint coverage using mypy or any other package in Python similarly to how I can check code coverage with e.g. coverage.py?



是的,有很多禁止 various uses of Any missing type annotations 的标志。或者您可以通过 the --strict flag 来禁止使用单个标志的大量有问题的构造。 --strict 的精确定义可能会随着时间的推移而改变,因此它可能不适合 CI(即“为什么构建被破坏了,我所做的只是安装了一个新的 mypy ?”)。还有 a number of flags for generating coverage reports

Is it also sensible to require a strict 100% of type hint coverage?



这将在很大程度上取决于您希望通过类型提示完成什么,以及您的代码库的历史和当前状态。例如,如果您和您的所有开发人员都来自静态类型背景(即您以前使用静态类型语言(例如 C++ 和 Java)进行编程),并且您没有很多旧的 Python 代码需要支持,那么这很可能运作良好。另一方面,如果您有大量遗留代码(可能是在最后一刻从 Python 2 转换过来的),或者如果您的许多开发人员习惯于动态类型,那么可能存在更多的阻抗不匹配。如果您不确定这是否适合您,我建议您在严格和不严格的情况下设置单独的 CI 构建。如果严格的始终为红色,而非严格的始终为绿色,则在启用强制类型提示之前,您可能需要克服技术或文化问题。

关于python-3.x - 检查 Python 中的类型提示覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56532731/

相关文章:

python - 返回找到字符串的列表的名称

python - 从一个文件中获取信息并在 Python 中打印到另一个文件

python - 使用 Python 使用特定关键字解析 JSON

python - 缺少测试覆盖率 pytest python 类

python - 结合 mypy Union 和嵌套的 TypedDict 导致 mypy 错误 : incompatible return value

python - Mypy 允许 `List[str]` 具有 `Tuple[str, List[str]]` 类型的值

python-3.x - 子类和父类的比较

Python3,似乎无法理解如何从单个文件中获取信息并将其分发给其他几个文件

python - 使用 ArrayLike 时出现 Mypy 错误

python - 2 和 3 组合代码库中 `__str__` 的类型是什么?