检查Python中的类型提示覆盖范围

时间:2019-06-10 19:52:45

标签: python-3.x mypy

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

有没有一种方法可以使用mypy或Python中的其他任何软件包来报告类型提示的覆盖范围,类似于我可以通过例如coverage.py

要求严格的100%类型提示覆盖率也明智吗?

1 个答案:

答案 0 :(得分:1)

  

有没有一种方法可以使用mypy或Python中的其他任何软件包来报告类型提示的覆盖范围,类似于我可以使用例如coverage.py?

是的,有很多禁止使用various uses of Anymissing type annotations的标志。或者,您可以只传递the --strict flag来禁止带有单个标志的大量可疑构造。 --strict的确切定义可能会随时间而改变,因此可能不太适合CI(即“为什么构建被破坏了,我所做的就是安装了一个新的mypy?”)。也有a number of flags for generating coverage reports

  

要求严格的100%类型提示覆盖率也明智吗?

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