Hub*_*bro 8 static-analysis visual-studio-code
我有一个简单的自制 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”绝对没有产生任何价值。
是否可以在不经历编写自定义扩展的麻烦的情况下做到这一点?
这是可以完成的,但涉及一些设置编辑。
删除默认的按键绑定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"
}
Run Code Online (Sandbox Code Playgroud)
使用 ryuta46 的扩展multi-command创建一个保存文件并调用自定义 linter 的命令:(添加一点等待以确保文件已保存)
.vscode/settings.json
"multiCommand.commands": [
{
"command": "multiCommand.lintingYang",
"interval": 500,
"sequence": [
"workbench.action.files.save",
{ "command": "workbench.action.tasks.runTask",
"args": "Lint Yang"
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
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
]
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
定义一个捕获异常情况的键绑定应该足够了,否则它将使用默认的键绑定。
keybindings.json
{
"key": "ctrl+s",
"command": "multiCommand.lintingYang",
"when": "editorLangId == yang"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3917 次 |
| 最近记录: |