Как сделать, чтобы сопоставитель проблем vscode совпадал с ошибкой компилятора ARM IAR? - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь сопоставить ошибки этого формата, сгенерированные компилятором IAR ARM для VSCode ProblemMatcher ...

"d:\test\helloWorld.c",646  Warning[Pe223]:
function "printf" declared implicitly

С помощью regex101.com я могу сопоставить сообщение первой строки с этим регулярным выражением...

^"(.*)",(\d+)\s+((Warning|Error)\[Pe\d+\]):$

Увы, когда я добавляю в файл tasks.json правильные косые черты.Vscode запрашивает эту ошибку в task.json. ошибка в task.json

"problemMatcher": {
   "owner": "cpp",
   "fileLocation": "absolute",
   "pattern": [
      // The regular expression for IAR ARM compiler. Example to match: 
      //   "d:\test\helloWorld.c",646  Warning[Pe223]:
      //   function "printf" declared implicitly
      {
         "regexp": "^"(.*)",(\\d+)\\s+((Warning|Error)\\[Pe\\d+\\]):$",
         // The first match group matches the file name which is relative.
         "file"    : 1,
         // The second match group matches the line on which the problem occurred.
         "location": 2,
         // The third match group matches the message
         "message" : 3,
         // The fourth match group matches the problem's severity. Can
         // be ignored. Then all problems are captured as errors.
         "severity": 4
      },
      {
         // The next line matches the message.
         "regexp": "^([^\\s].*)$",
         "message": 1               
      }
   ]
}

Затем я удалил "", и это стало,

^(.*),(\\d+)\\s+((Warning|Error)\\[Pe\\d+\\]):$

Наконец, я получаю вывод в задачахпосле запуска задачи, которая будет генерировать эти ошибки в терминале VSCode.Предупреждающее сообщение и номер строки правильные.Но файл не совпадает и не может перейти к файлу.

1 Ответ

0 голосов
/ 05 июля 2019

ОК, я нашел ответ от https://docs.microsoft.com/en-us/visualstudio/ide/using-regular-expressions-in-visual-studio

\" Соответствует двойным кавычкам

Итак, правильное регулярное выражение:

"regexp": "^\"(.+?)\",(\\d+)\\s+((Warning|Error)\\[Pe\\d+\\]):$",
...