Не могу заставить простейший сопоставитель проблем сообщить о любой проблеме

Я часами гуглил, упрощая до самого глупого проекта против кода:

Задача выполняется:

Вывод пустой:

И ни о какой проблеме не сообщается.

Что мне не хватает?

[Редактировать]

Как и просили в комментариях, здесь я повторяю фактическое сообщение об ошибке, скопированное с https://code.visualstudio.com/docs/editor/tasks#_defining-a-problem-matcher:

echo helloWorld.c:5:3: предупреждение: неявное объявление функции 'printt'

Я скопировал пример сопоставления задач по той же ссылке. Все равно ничего не показывает. По какой-то причине вывод терминала имеет несколько переводов строки.

[Редактировать 2] Хорошо, благодаря помощи rioV8 и Yassin Hajaj, я разобрался. Это был разочаровывающий способ узнать, как работают средства сопоставления задач. Мое отсутствие опыта работы с регулярными выражениями не помогло.

Оказывается, по умолчанию для «оболочки» используется PowerShell, в котором есть команда echo, отображающая каждый токен в новой строке. Наконец-то я получил одну строку с некоторыми уловками:

      "command": "echo \\\"dummy.cpp:5:3: warning: implicit declaration of function ‘prinft’\\\""

Также обязательными являются свойства файла, строки и сообщения.

Итак, вот рабочий пример:

      {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            // by default the command appears in the terminal so 2 lines will actually be matched
            "command": "echo \\\"dummy.cpp:5:3: warning: implicit declaration of function ‘prinft’\\\"",
            "problemMatcher": {
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "message": 5
                }
            }
        }
    ]
}

0 ответов

Другие вопросы по тегам