实战VSCode task使用Pytype进行代码类型推导检查

255次阅读
没有评论

共计 1433 个字符,预计需要花费 4 分钟才能阅读完成。

前言

写 python 五六年了,但是在最近接触到一些大型的运维侧 Django 项目后,总感觉 python 作为一种极致动态的语言,没有编译期静态类型检查,让人感觉很不放心,所以最近几天一门心思的预研了几种 python 的类型检查工具,首先声明一下 Google 的 Pytype 凭借类型推导在即使没有 type hint 类型标记的情况下也能做类型检查吊打其它的一切,比如 Facebook 的 pyre,Microsoft 的 Pylance 和 Pyright,Python 之父的 mypy。

实战

去 pytype github 主页按照指南自行安装好 pytype,可以安装到全局解释器里面,然后打开 VS Code 新建一个 task,步骤如下:

第一步:

实战 VSCode task 使用 Pytype 进行代码类型推导检查

第二步:

实战 VSCode task 使用 Pytype 进行代码类型推导检查 第三步:

实战 VSCode task 使用 Pytype 进行代码类型推导检查

然后会在你的项目的当前目录的.vscode 文件夹中新建一个 tasks.json 文件,打开它写入如下内容即可:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Check",
            "type": "shell",
            "command": "pytype -j='auto'-k -d='import-error'${cwd}"
        }
    ]
}

pytype 命令参数说明:

-j='auto' 参数会跟根据你的电脑的 cpu 核数进行多核心加速检查

-k 用来忽略错误尽可能多的进行检查

-d='import-error' 用来忽略 import 错误,因为目前好像有点 bug

${cwd} 表明是当前工作目录,这是 vs code 的宏变量。

上面的重点是 "label": "Check" 键值对,这个很重要,等下 launch.json 中要用到,现在打开 launch.json 新增一个叫 "preLaunchTask": "Check" 的键值对,你注意到了么,这里的 "Check" 就是前面的 "label" 的值。如果 launch.json 中不新增一个叫 "preLaunchTask": "Check" 的键值对的话,是不会启动 pytype 的静态类型推导检查的,那样我们的实战就失败了,你可以自行试一下,我已经试过了。

下面贴一下完整的 launch.json 的内容,以供参考:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "preLaunchTask": "Check",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

下面是实战效果:

实战 VSCode task 使用 Pytype 进行代码类型推导检查

你看到了么,右侧的 debug console 在启动之前先运行了我们的 Check 这个 task,然后 terminal 中返回了 Success,至此我们的实战大功告成。

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2022-10-22发表,共计1433字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)