一个非常(!)早期与 Astral 的 Red Knot 静态类型检查器的游戏

主要观点:

  • Astral的工具如Ruffuv改善了日常开发体验,其中Red Knot正处于开发中,旨在替代mypy。
  • 作者通过克隆ruff仓库并在Claude的帮助下,成功构建并运行了Red Knot,介绍了其编译、基本用法、与mypy的比较、局限性以及运行速度等方面。

关键信息:

  • Red Knot尚未发布,需从ruff代码库中构建运行,主要用rust编写。
  • 编译命令为cargo build --bin red_knot --release,运行命令为./target/release/red_knot,可进行检查、设置配置等操作。
  • 与mypy相比,Red Knot在一些小型代码库上速度约为mypy的100倍,但在大型项目如SQLAlchemy和mypy代码基上存在问题,且不进行缓存。

重要细节:

  • 在MCPunk代码库中运行Red Knot时出现了一些问题,如对from collections.abc import Generator的错误处理、对短电路or的处理以及不尊重typing.assert_never的 exhaustiveness 检查等。
  • 在不同项目中运行Red Knot的时间不同,如Pydantic为0.73s,FastAPI为0.44s,mypy为4.38s(冷启动)和0.2s(后续运行)。
阅读 9
0 条评论