Сопоставители задач VS Code: как извлечь несколько задач из одной строки? (Компоновщик GNU)
Компоновщик GNU выдает сообщения об ошибках в этом стиле:
_Boot/Debug/libs\Common.a(oled.o):V:\OneDrive\Emb\App_M2S_S32G/Common/src/oled.c:40: multiple definition of `time'; _Boot/Debug/libs\Boot.a(bootloader.o):V:\OneDrive\Emb\App_M2S_S32G/Boot/src/bootloader.c:27: first defined here
Я хочу создать две проблемы из этой единственной строки для двух файлов и номеров строк, упомянутых в сообщении, чтобы я мог щелкнуть их обе и перейти к ошибочным строкам (oled.c:40 и bootloader.c:27) . Можно создавать шаблоны для компилятора и для обеих частей сообщения компоновщика:
"problemMatcher": [
// Compiler
{
"base": "$gcc",
"fileLocation": [
"autodetect",
"${workspaceFolder}"
]
},
// Linker 1
{
"source": "ld",
"pattern": {
"regexp": "^.+; .*(.:.+):([0-9]+): (.+)",
"file": 1,
"line": 2,
"message": 3
},
"fileLocation": [
"autodetect",
"${workspaceFolder}"
]
},
// Linker 2
{
"source": "ld",
"pattern": {
"regexp": "^.+; .*(.:.+):([0-9]+): (.+)",
"file": 1,
"line": 2,
"message": 3
},
"fileLocation": [
"autodetect",
"${workspaceFolder}"
]
}
],
Это не работает, потому что, если шаблон компоновщика 1 соответствует шаблону, компоновщик 2 вообще не выполняется. Если я скопирую регулярное выражение из линкера 2 в линкер 1, вторая часть сообщения будет проанализирована правильно. Можно ли каким-то образом указать Code, чтобы он всегда пытался сопоставить все шаблоны, даже если предыдущий уже совпадал? Или каким-либо другим способом создать несколько проблем из одной строки сообщения?