前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google出品的Python代码静态类型分析器:Pytype

Google出品的Python代码静态类型分析器:Pytype

作者头像
代码医生工作室
发布2019-06-21 17:53:38
1.3K0
发布2019-06-21 17:53:38
举报
文章被收录于专栏:相约机器人

Pytype检查并推断Python代码的类型——不需要类型注解。Pytype可以:

  • 使用lint检查纯Python代码,标记常见错误,如属性名拼写错误、不正确的函数调用,等等更多,它甚至可以跨文件。
  • 强化用户提供的类型注解。虽然注解对于pytype是可选的,但是当注解存在时,它会检查并应用们。
  • 在独立文件(“pyi文件”)中生成类型注解,可以使用自身提供的merge-pyi工具将其合并回Python源代码中。

Pytype是一个静态分析器,这意味着它不执行它所检查的代码。

谷歌的数千个项目都依赖pytype来保持其Python代码类型良好和无错误。

更多信息,请查看用户指南或FAQ。

快速入门

要快速开始对一个文件或目录进行类型检查,你只需运行以下命令,用你的输入替换file_or_directory :

要在整个包上设置pytype,请将以下内容添加到包上级目录中的setup.cfg文件中,用包名替换package_name:

现在,你可以运行无参数命令pytype来对包进行类型检查。将pytype添加到你的自动化测试中也很容易;参见在Travis上运行pytype的GitHub项目的示例。

最后,pytype会生成含有推断出的类型信息的文件,默认情况下位于.pytype/pyi中。你可以使用此信息对相应的源文件进行类型注解,用文件的导入路径替换module.py:

需求

你需要一个Python 2.7或3.5+解释器来运行pytype,还需要在$PATH中设置一个与所分析代码的Python版本相同的Python解释器。

平台支持:

  • Pytype目前是在Linux上开发和测试的,Linux是主要支持的平台。
  • 在MacOSX上安装需要OSX 10.7或更高版本,以及Xcode v8或更高版本。
  • 目前不支持windows。

安装

Pytype可以通过pip来安装。注意,安装过程需要使用wheel和setuptools。(如果你在virtualenv中工作,这两个包应该已经存在。)

或者从GitHub上的源码进行安装 :

代替使用--recurse-submodules参数进行安装, 你也可以在pytype目录中使用以下命令来安装:

用法

常见选项:

  • -V,--Python-Version:目标代码的Python版本(major.minor)。默认为3.6。
  • -o,--output:所有pytype输出的保存目录,包括生成的.pyi文件。默认为.pytype。
  • -d,--disable。以逗号分隔的要忽略的错误名称列表。pytype错误名称的详细说明在此文档中。默认为空。

要获得选项的完整列表,请运行pytype --help。

除了上面所述,你还可以通过设置$TYPESHED_HOME来直接运行pytype命令使用定制的typeshed安装替代它自己的绑定副本。

配置文件

为了方便起见,你可以将你的pytype配置保存在一个文件中。配置文件是一个带有[pytype]部分的INI-样式的文件;如果没有提供显式配置文件,pytype会从当前目录向上遍历查找第一个setup.cfg文件中的[pytype]部分。

我们从生成一个配置文件示例开始:

现在我们根据本地设置来自定义文件,只保留需要的部分。目录可能是配置文件的相对路径,如果你想将配置文件作为项目的一部分进行检查,这是非常有用的。

例如,假设你有以下目录结构,并且想要分析包 ~/repo1/foo,它依赖于包 ~/repo2/bar:

下面是设置好的配置文件,它将指示pytype将~/repo1/foo作为Python 3.6代码进行类型检查,在~/repo1和~/repo2中查找包,并忽略属性错误。注意,到包的路径不包括包本身。

我们可能会发现需要通过运行pytype的损坏依赖项检查器来将~/repo2添加到pythonpath中:

子工具

除了pytype本身外,Pytype还附带了三个脚本:

  • merge-pyi, 用于将.pyi文件中的类型信息合并到Python文件中.
  • pytd, 一个 .pyi 文件解析器.
  • pytype-single, pytype开发人员的调试工具,用来对单个Python文件进行分析,并假定已经为该Python文件的所有依赖项生成了.pyi文件。

产品路线图

•支持Windows系统

许可证

Apache 2.0

免责声明

本项目不是一个正式的Google产品。

英文原文:https://github.com/google/pytype

译者:一瞬

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 快速入门
  • 需求
  • 安装
  • 用法
  • 配置文件
  • 子工具
  • 产品路线图
  • 许可证
  • 免责声明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档