如何在VSCode中以仅检查模式运行black和isort工具?
实现VSCode中把black/isort作为linter使用的方法
这个需求完全可以实现,下面提供两种可落地的配置方案:
方案1:通过Ruff实现(推荐,配置成本最低)
Ruff原生兼容black格式化规则、isort导入排序规则,开箱即可作为linter输出不符合规范的代码位置,不需要复杂适配:
- 先安装VSCode的Ruff扩展,同时在本地Python环境安装ruff依赖:
pip install ruff - 在项目根目录新建
.ruff.toml配置文件,添加如下内容即可启用black+isort规范检查:
[lint] # 启用isort导入排序规则,其他lint规则可按需添加 select = ["I"] # 启用black格式化兼容规则 extend-select = ["B"] [format] # 对齐最新版black的格式化规则 preview = true
配置完成后,所有不符合isort、black规范的代码都会直接在VSCode的「问题」面板中标注出对应位置,你可以按需手动触发格式化修复,不需要保存时自动修改文件。
方案2:原生black/isort自定义配置
如果你不想引入Ruff,要直接用原生black/isort的--check/--check-only能力,可以通过配置VSCode自定义任务+问题匹配器实现:
- 先在本地Python环境安装black和isort:
pip install black isort - 在VSCode当前工作区的
.vscode/tasks.json文件中添加如下配置(如果没有该文件可以手动新建):
{ "version": "2.0.0", "tasks": [ { "label": "black规范检查", "type": "shell", "command": "black", "args": ["--check", "${file}"], "problemMatcher": { "owner": "black", "fileLocation": "absolute", "pattern": [ { "regexp": "^would reformat (.*)$", "file": 1, "message": "代码不符合black格式化规范" } ] } }, { "label": "isort导入检查", "type": "shell", "command": "isort", "args": ["--check-only", "${file}"], "problemMatcher": { "owner": "isort", "fileLocation": "absolute", "pattern": [ { "regexp": "^ERROR: (.*) Imports are incorrectly sorted and/or formatted.$", "file": 1, "message": "导入排序不符合isort规范" } ] } } ] }
- 你可以自行设置快捷键触发这两个检查任务,也可以配置为文件保存时自动运行,整个过程不会修改文件内容,只会输出不符合规范的提示。
如果你已经安装了官方的Black Formatter、isort扩展,不需要卸载,只需要关闭「保存时自动格式化」的全局或项目级配置,搭配上述方案即可实现你需要的「先检查后手动修复」的使用流程。
内容的提问来源于stack exchange,提问作者keisuke
相关产品推荐
相关产品推荐

