首页 > 解决方案 > VS Code 的 flake8 的忽略参数对保存格式不起作用?

问题描述

这是我的settings.json:

{
    "python.pythonPath": "/home/zhaodachuan/anaconda3/envs/ranking_engine/bin/python",
    "python.autoComplete.extraPaths": [
        "/mnt/c/Users/hnjyz/OneDrive/jupyter_lab/code/ranking_engine",
    ],
    "python.linting.pylintEnabled": false,
    "python.linting.enabled": true,
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": [
        "--max-line-length=120",
        "--ignore=E402,F401",
    ],
}

但是当我打开VS Code时,flake8 --ignore它​​不起作用。format on save

我应该怎么办?

标签: visual-studio-codevscode-settingsflake8

解决方案


Flake8 不是格式化程序,它是linter 。

它当然是 VS Code 的 Python 扩展支持的 linter 之一,但它不会影响设置editor.formatOnSave或被Format Document命令触发。如果配置正确,它应该会自动运行并检查您的文件是否存在可能的问题,然后将它们显示在“问题”选项卡上:

样品 Flake8

如果我添加:

    "python.linting.flake8Args": [
        "--ignore=F401"
    ],

那么之前显示的 F401 错误应该会消失:

忽略样本 Flake8

您似乎正在寻找的是formatter。请参阅 Python 上 VS Code 文档的格式化部分:https ://code.visualstudio.com/docs/python/editing#_formatting :

格式化通过对行间距、缩进、运算符间距等应用特定的规则和约定,使代码更容易被人类阅读(参见autopep8页面上的示例)。格式化不会影响代码本身的功能。(另一方面, Linting分析代码中常见的语法、风格和功能错误以及可能导致错误的非常规编程实践。虽然格式化和 linting 之间有一些重叠,但这两种功能是互补的。)

Python 扩展支持使用 autopep8(默认)、blackyapf来格式化源代码。

安装选定的格式化程序之一,并启用formatOnSave

    "[python]": {
        "editor.formatOnSave": true
    },
    "python.formatting.provider": "yapf",
    "python.formatting.yapfPath": "/usr/local/bin/yapf",
    "python.formatting.yapfArgs": [
        "--style=/path/to/setup.cfg"
    ],

在此处输入图像描述


推荐阅读