脸书开源一款深层静态分析工具,满足开发大型Python代码库!

Ericbig 2018-05-14

Pyre一种用于Python的静态类型检查器。如果你正在开发大型Python代码库,那么你可以使用Pyre,这是Facebook最新发布开源的一款工具,它旨在你喜爱的编辑器中交互式标记类型错误来帮助提高质量和开发速度。Pyre会检查已经属于Python编程语言(PEP484)的渐进类型注释。

脸书开源一款深层静态分析工具,满足开发大型Python代码库!

挑战和目标

当你在一个庞大的Python代码库上工作时,以下是一些挑战:

  • 缺少静态保证可能会使安全地更改现有代码库变得更加困难,从而使代码更容易出错,并且实际上相对于静态类型代码而言减慢了开发速度。

  • 构建代码搜索,自动完成,导航和重构支持等高质量工具非常具有挑战性;缺少像这样的工具在大型代码库中工作时尤其不利。

这就是说,Facebook建立Pyre是一个快速的符合PEP 484标准的类型检查器,并且是构建更深层静态分析工具的平台。

脸书开源一款深层静态分析工具,满足开发大型Python代码库!

如果你想编写可读的,惯用的Python,你需要一个高度并行设计的工具,为近乎即时的响应进行优化,以便使在大型代码库中也能获得即时反馈。这就是Pyre进入的领域。即使你“没有完全致力于静态类型,你也完全清楚Pyre的价值所在;或如果你有一个现有的代码库,打算随着时间逐渐转换”。

Pyre的内涵

Pyre作为一个服务器运行,它不断更新对内存中代码的理解;要做到这一点,这个工具使用Watchman。(Watchman是facebook的一个开源项目,它开源用来监视文件并且记录文件的改动情况,当文件变更它可以触发一些操作,例如执行一些命令等等。)

脸书开源一款深层静态分析工具,满足开发大型Python代码库!

此外,它还维护代码的依赖关系图表示(graph representation),因此当代码更改时,它只会重新分析出现更改的代码以及其直接依赖关系,并根据需要更新依赖关系图。

除了类型检查之外,Pyre还通过语言服务器协议(LSP)支持很多功能,例如自动重新检查编辑的文件。

目前你需要在Python 3.5或更高版本来运行Pyre。另外,Pyre不支持Windows。

相关推荐