Расширение VSCode: проблема сопоставления на выходе компилятора с пустой строкой - PullRequest
0 голосов
/ 21 июня 2020

В настоящее время я пишу расширение vscode для языка, используемого регистраторами данных Campbell Scientifi c. Часть сделанного мною расширения определяет настраиваемый сопоставитель проблем для результатов компилятора. задачи. json, я не могу сопоставить имя файла в верхней части результатов компилятора.

Изменить: это связано с пустой строкой между именем файла и сообщениями об ошибках. В настоящее время я не могу найти способ обойти это. Добавление \ n к шаблону работает не так, как ожидалось, даже если оно работает на https://regex101.com/.

Пример возвращенного текста из компилятора:

test.cr300 -- Compile Failed!
 
line 12: Undeclared variable U1. 
line 18: gmx600 not yet declared so cannot be aliased. 
line 19: gmx600 not yet declared so cannot be aliased. 
line 20: gmx600 not yet declared so cannot be aliased. 
line 21: gmx600 not yet declared so cannot be aliased.

Шаблон, как указано в моем пакете. json:

 "pattern": [
                {
                    "regexp": "^(.*\\.cr300).*\\n$",
                    "file": 1
                },
                {
                    "regexp": "^line\\s(\\d+):\\s(.+)$",
                    "line": 1,
                    "message": 2,
                    "loop": true
                }
            ]

и вот моя задача из задач. json при запуске расширения в отладке.

        {
        "label": "CRBasic: Compiler",
        "type": "shell",
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "options": {
            "shell": {
                "executable": "powershell.exe"
            }
        },
        "command": "${config:CRBasic.Path.Compiler path}\\cr300comp.exe",
        "args": [
            "${file}"
        ],
        "problemMatcher": [
            "$crbasicCompiler"
        ]
    }

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Вам нужно изменить порядок регулярных выражений и добавить атрибут loop и изменить номер группы на line и message

"pattern": [
    {
        "regexp": "^(.*\\.cr300) -- Compile Failed.*$",
        "file": 1
    },
    {  "regexp": "^\\s*$"  },
    {
        "regexp": "^line\\s(\\d+):\\s(.+)$",
        "line": 1,
        "message": 2,
        "loop": true
    }
]
0 голосов
/ 23 июня 2020

После сужения проблемы до пустой строки, проблема с шаблоном ниже теперь совпадает с выводом компиляции. Оглядываясь назад, это кажется очевидным. Спасибо @ rioV8 за помощь.

"pattern": [
                {
                    "regexp": "^(.*\\.cr300) -- Compile Failed.*$",
                    "file": 1
                },
                {
                    "regexp": "^.*$"
                },
                {
                    "regexp": "^line\\s(\\d+):\\s(.+)$",
                    "line": 1,
                    "message": 2,
                    "loop": true
                }
            ]
...