Пользовательские сопоставители проблем C ++ в VS Code не выделяют пути к файлам - PullRequest
2 голосов
/ 29 мая 2020

У меня есть куча настраиваемых задач сборки в 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 
      }
},

Есть идеи?

...