Проблема vscodeMatcher не распознает предупреждения компилятора Tasking
Следующее регулярное выражение средства сопоставления задач Tasks.json должно соответствовать следующему типичному предупреждению. Но это не так. ctc W505: ["somedirectory/somefile.c" 350/18] неявное объявление бла-бла-бла
В чем проблема? Я проверил, что встроенный парсер соответствует ошибкам и предупреждениям вывода gcc.
Спасибо,
Сатиш К
"tasks": [
{
"label": "build.bat",
"type": "shell",
"command": "build.bat",
"problemMatcher": {
"owner": "cpptools",
"fileLocation": [
"relative",
"${env:PWD}"
],
"pattern": {
"regexp": "^ctc W(\\d+): \\[\\\"(.*)\\\" (\\d+)\\\/(\\d+)\\] (.*)$",
"file": 2,
"line": 3,
"column": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
2 ответа
Я не мог заставить это работать. Но я запустил рабочий regex101 через json escpare. Он сделал еще несколько попыток избежать косой черты и закончился так:
"regexp": "^ctc W(\\d+): \\[\\\"(.*)\\\" (\\d+)\\/(\\d+)\\] (.*)$",
Вы добавляете дополнительный \
к выражению, вам нужно только избежать "
и тебе не нужно убегать /
"tasks": [
{
"label": "build.bat",
"type": "shell",
"command": "build.bat",
"problemMatcher": {
"owner": "cpptools",
"fileLocation": [
"relative",
"${env:PWD}"
],
"pattern": {
"regexp": "^ctc W(\\d+): \\[\"(.*)\" (\\d+)/(\\d+)\\] (.*)$",
"file": 2,
"line": 3,
"column": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
редактировать
Это работает в regex101 (аромат Javascript)
^ctc W(\d+): \["(.*)" (\d+)\/(\d+)\] (.*)$
Чтобы преобразовать его в строку JSON, экранируйте \"
и регулярное выражение также хочет, чтобы вы сбежали /
но это потребуется только в том случае, если вы используете регулярное выражение в буквальном Javascript (например, /\d+/g
) но мы не делаем этого в VSC, но это не повредит.
В результате чего:
"^ctc W(\\d+): \\[\"(.*)\" (\\d+)\\/(\\d+)\\] (.*)$"