vscode problemMatcher не распознает предупреждения компилятора задач - PullRequest
0 голосов
/ 19 апреля 2020

Следующие задачи. json Регулярное выражение сопоставления проблем должно соответствовать следующему типичному предупреждению. Но это не так. ct c W505: ["somedirectory / somefile. c" 350/18] неявное объявление бла-бла-бла

В чем проблема? Я проверил, что встроенный синтаксический анализатор соответствует g cc выводу ошибок и предупреждений.

Спасибо,

Сати sh K

"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
            }
        }
    ]

1 Ответ

0 голосов
/ 20 апреля 2020

Вы добавляете еще \ к выражению, вам нужно только экранировать " и вам не нужно экранировать /

"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, escape \" и regex также хочет вам нужно экранировать /, но это будет необходимо только в том случае, если вы используете регулярное выражение в литерале Javascript (например, /\d+/g), но мы не делаем этого в VS C, но это не повредит.

В результате:

"^ctc W(\\d+): \\[\"(.*)\" (\\d+)\\/(\\d+)\\] (.*)$"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...