Удаляет ли средство сопоставления задач VSCode управляющие последовательности ANSI перед сопоставлением?

Я делаю пользовательскую задачу для запуска модульных тестов Perl с помощью. Вывод этой команды содержит сведения о неудачных тестах, которые я хотел бы отфильтровать и отобразить как проблемы.

Я написал следующий сопоставитель для моего вывода.

      "problemMatcher": {
    "owner": "yath",
    "fileLocation": [ "relative", "${workspaceFolder}" ],
    "severity": "error",
    "pattern": [
        {
            "regexp": "\\[\\s*FAIL\\s*\\]\\s*job\\s*\\d+\\s*\\+?\\s*(.+)",
            "message": 1,
        },{
            "regexp": "\\(\\s*DIAG\\s*\\)\\s*job\\s*\\d+\\s*\\+?\\s*at (.+) line (\\d+)\\.",
            "file": 1,
            "line": 2
        }
    ]
}

Предполагается, что это соответствует двум разным строкам в следующем выводе, который я представлю в виде кода для копирования и в виде снимка экрана.

      ** Defaulting to the 'test' command **

( LAUNCH )  job  1    t/foo.t
(  NOTE  )  job  1    Seeded srand with seed '20220414' from local date.
[  PASS  ]  job  1  + passing test
[  FAIL  ]  job  1  + failing test
(  DIAG  )  job  1    Failed test 'failing test'
(  DIAG  )  job  1    at t/foo.t line 57.
[  PLAN  ]  job  1    Expected assertions: 2
( FAILED )  job  1    t/foo.t
(  TIME  )  job  1    Startup: 0.30841s | Events: 0.01992s | Cleanup: 0.00417s | Total: 0.33250s
< REASON >  job  1    Test script returned error (Err: 1)
< REASON >  job  1    Assertion failures were encountered (Count: 1)

The following jobs failed:
+--------------------------------------+-----------------------------------+
| Job ID                               | Test File                         |
+--------------------------------------+-----------------------------------+
| e7aee661-b49f-4b60-b815-f420d109457a | t/foo.t                           |
+--------------------------------------+-----------------------------------+

                                Yath Result Summary
-----------------------------------------------------------------------------------
     Fail Count: 1
     File Count: 1
Assertion Count: 2
      Wall Time: 0.74 seconds
       CPU Time: 0.76 seconds (usr: 0.20s | sys: 0.00s | cusr: 0.49s | csys: 0.07s)
      CPU Usage: 103%
    -->  Result: FAILED  <--

Но на самом деле красиво с цветами.

Я подозреваю, что в этом выводе есть escape-последовательности ANSI. Я мог бы передать флаг чтобы он не печатал цвета, но я хотел бы иметь возможность читать и этот вывод, так что это не идеально.

Должен ли я изменить свой шаблон, чтобы он соответствовал escape-последовательностям (я могу прочитать исходный код программы, которая их печатает, но это раздражает), или они на самом деле вырезаны, и мой шаблон неверен, но я не вижу, где ?

Вот первый шаблон как соответствие regex101 , а вот второй .

0 ответов

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