在哪里定义共享问题匹配器来检查终端?

Where to define a shared problemMatcher to check the terminal?

在 vscode 中,我有时可以在集成终端中点击构建错误,有时却无法点击。这让我烦恼了很长一段时间,因为我找不到模式,直到今天我在编辑 tasks.json.

它看起来与在.vscode/tasks.json中定义一个problemMatcher有关。从文件中删除 problemMatcher 部分,终端中的构建错误不再可点击,但将其放回去并没有重新启用它们。

我的 vscode-project 位于构建树的子文件夹中,整个项目的构建根目录向上两层 ${workspaceFolder}/../..,我相信这可能会混淆某些构建工具。

tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "problemMatcher": {
        "fileLocation": "relative",
        "severity": "error",
        "pattern":{
            "regexp": "^system/mytool/(.*):(\d+):(\d+):\s+(warning|error):(.*)$",
            "file": 1,
            "location": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        },
    },
    "tasks": [
        {
            "type": "shell",
            "label": "android deploy",
            "command": "cd ${workspaceFolder}/../..; source build/envsetup.sh ; lunch hikey960-userdebug ; m mytool",
            "args": [
            ],
            "options": {
            },
            "group": "build"
        },

    ]
}

我已经看到将 "problemMatcher" = "$gcc" 放入任务中的示例,我是否应该在其他地方全局定义我的问题匹配器并改为引用我的名字?

在集成终端中输入make-commands构建时如何使用它来解析输出?

您不能全局定义问题匹配器。相反,您必须在每个任务中定义它们。

这有点难看,因为您可能必须将同一个问题匹配器复制到很多任务中。有一个未解决的问题:Global task properties