首页 > 解决方案 > 是否可以在 vscode 中定义自定义/本地短绒?

问题描述

我有一个简单的自制 linter 用于工作,它的调用方式如下:python3 scripts/lint.py FILENAME

输出是完全标准的 linter 样式的输出,例如:

path/to/file.yang:5:19: Linter 警告在这里
path/to/file.yang:6:83:这里的另一个警告
...

我觉得将这个 linter 集成到 vscode 中应该很容易,所以我在编写代码时会自动 linting,就像 linter 扩展的工作方式一样。但是,谷歌搜索“vscode custom linter”绝对没有任何价值。

是否可以在不经历编写自定义扩展的麻烦的情况下做到这一点?

标签: visual-studio-codestatic-analysis

解决方案


它可以完成,但它涉及一些设置编辑。

删除默认键绑定Ctrl+S并设置 2 个新键绑定

keybindings.json

  {
    "key": "ctrl+s",
    "command": "-workbench.action.files.save"
  },
  {
    "key": "ctrl+s",
    "command": "multiCommand.lintingYang",
    "when": "editorLangId == yang"
  },
  {
    "key": "ctrl+s",
    "command": "workbench.action.files.save",
    "when": "editorLangId != yang"
  }

使用 ryuta46 的扩展多命令创建保存文件并调用自定义 linter 的命令:(添加一点等待以确保文件已保存)

.vscode/settings.json

  "multiCommand.commands": [
    {
      "command": "multiCommand.lintingYang",
      "interval": 500,
      "sequence": [
        "workbench.action.files.save",
        { "command": "workbench.action.tasks.runTask",
          "args": "Lint Yang"
        }
      ]
    }
  ]

linter 调用是具有自定义问题匹配器的任务

.vscode/tasks.json

    {
      "label": "Lint Yang",
      "type": "shell",
      "command": "python3",
      "args": [ "${workspaceFolder}/scripts/lint.py", "${file}"],
      "options": { "cwd": "${fileDirname}" },
      "presentation": { "clear": true },
      "problemMatcher": {
        "owner": "yang",
        "fileLocation": ["relative", "${workspaceFolder}"],
        "pattern": [
          "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
          "file": 1,
          "line": 2,
          "column": 3,
          "severity": 4,
          "message": 5
        ]
      }
    }

编辑

定义一个将捕获异常情况的键绑定就足够了,否则它将使用默认的键绑定。

keybindings.json

  {
    "key": "ctrl+s",
    "command": "multiCommand.lintingYang",
    "when": "editorLangId == yang"
  }

推荐阅读