vscode 请记录问题匹配器如何清除问题,

xwmevbvl  于 4个月前  发布在  Vscode
关注(0)|答案(8)|浏览(55)

我有一些自定义的问题匹配器,它们可以很好地创建问题,但是即使这些问题不再由构建任务生成,重新运行任务时问题也不会消失。我尝试阅读过问题匹配器的文档。

我看到有很多与清除问题相关的问题,但它们总是以一条注解被关闭,即插件或问题匹配器的职责是确保问题得到解决。例如,#129341

在许多情况下,有一些隐晦的关于“所有者”的提及,但关于所有者字段的意义以及如何使用它来确定问题何时消失的信息并不清楚。

也许可以将这个问题添加到这里:https://code.visualstudio.com/docs/editor/tasks

谢谢

q35jwt9p

q35jwt9p1#

我们每次评估线条时都会清除标记。

$vscode/src/vs/workbench/contrib/tasks/common/problemCollectors.ts$

第524行

| | private tryFinish(line: string): boolean{ |

看起来在你的案例中可能发生的情况是,在清除之前,背景匹配器已经从这个Map中移除了,所以这一行是false。

bfrts1fy

bfrts1fy3#

@alexr00,你有什么想法吗?我没有看到其他关于这个问题的报告。

kninwzqo

kninwzqo4#

我猜问题的原因可能没有正确设置。看起来 owner 的文档并不完善。owner 用于跟踪问题的来源。只有在新问题与旧问题具有相同的所有者时,后续运行才会清除问题。

在 VS Code 仓库中,我们使用 owner 来协调来自构建任务的问题和来自内置 TypeScript 扩展的问题:我们给两者相同的 owner ,以便它们在问题视图中显示为来自相同的地方。

gtlvzcf8

gtlvzcf85#

这是我导致这个问题的任务:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Full Build",
            "type": "shell",
            "command": "make -j4 -k GENBASE=1 || make",
            "linux": {
                "command": "bash make/build_sbtools.sh"
            },
            "windows": {
                "command": ".\\apps\\_sbgnumake\\_sbgnumake.bat -j4"
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                {
                    "fileLocation": "autoDetect",
                    "pattern": {
                        "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                        "file": 1,
                        "line": 2,
                        "column": 3,
                        "severity": 4,
                        "message": 5
                    }
                },
                {
                    "fileLocation": "autoDetect",
                    "pattern": {
                        "regexp": "^(.*):(\\d+):\\s+(recipe for target .* failed)$",
                        "file": 1,
                        "line": 2,
                        "message": 4
                    },
                    "severity": "error"
                },
                {
                    "fileLocation": "autoDetect",
                    "pattern": {
                        "regexp": "^(\\w+-error: )?(.*):(\\d+):\\s+(warning|error):\\s+(.*)$",
                        "file": 2,
                        "line": 3,
                        "severity": 4,
                        "message": 5
                    }
                }
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}

如果我使用上述设置构建并出现一些错误,它们会一直存在并在每次构建时重复。如果我在每个问题匹配器中添加 "owner" : "my_build" ,那么它们在重复构建时会被正确重置。
如果这是预期的行为,那没问题。我只是想请你给示例任务添加所有者,并说明所有者的作用。
谢谢!

oyxsuwqo

oyxsuwqo6#

关于这个的文档会很可爱。从这里的回复中,我仍然不清楚如何在不重新运行任务的情况下解决问题。
这是可能的吗?

8ehkhllq

8ehkhllq7#

你好,
我也认为如果能清除任务生成的问题而不需重新运行任务,那将是非常可爱的。是否有可能实现这一点?
谢谢!

62o28rlo

62o28rlo8#

如果在每个问题匹配器中添加"owner": "my_build",那么它们在重复构建时会正确地重置。
感谢这个让它工作

相关问题