我在 VS Code 中有一堆自定义构建任务,我想要一个用于 C++ 的自定义问题匹配器。
因此,我决定采用 VS Code 文档 ( https://code.visualstudio.com/Docs/editor/tasks#_defining-a-problem-matcher ) 中的默认问题匹配器示例并对其稍作修改。
"problemMatcher": {
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(\\.\\.\\/+)(.*):(\\d+):(\\d+):\\s+(.*):\\s+(.*)$",
"file": 2,
"line": 3,
"column": 4,
"severity": 5,
"message": 6
}
我的错误消息具有以下结构:
../../../module/src/module/specific/File.cpp:155:31: error: errorMessage
三个目录向上指令 ( ../../../
) 将我带回到${workspaceFolder}
. 所以想法是使用第二个捕获组作为我的工作区文件夹的相对路径来跟进文件。
不幸的是,文件路径没有突出显示,也没有告诉我按 Ctrl+单击来关注消息。我仔细检查了https://regexr.com/上的正则表达式,它似乎是正确的。我也尝试使用默认的问题匹配器,但没有任何运气。
这是完整的构建任务:
{
"label": "build_c++",
"type": "shell",
"command": "${workspaceFolder}/build_command",
"problemMatcher": [ {
"fileLocation": ["relative", "${workspaceFolder}"],
"pattern": {
"regexp": "^(\\.\\.\\/+)(.*):(\\d+):(\\d+):\\s+(.*):\\s+(.*)$",
"file": 2,
"line": 3,
"column": 4,
"severity": 5,
"message": 6
}
}],
"group": {
"kind": "build",
"isDefault": true
}
},
有任何想法吗?