首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ProblemMatcher任务中定义VSCode --模式与文档不一致?

在ProblemMatcher任务中定义VSCode --模式与文档不一致?
EN

Stack Overflow用户
提问于 2020-05-30 15:27:22
回答 3查看 6.6K关注 0票数 1

在VSCode中,我试图创建一个ProblemMatcher来解析我运行的自定义脚本上的错误(如果您感兴趣的话,可以使用标记文件-> pandoc -> PDF)。

非常好的VSCode ProblemMatcher文档有一个示例任务,它显示(在我看来)运行命令("command": "gcc") 定义问题匹配器("problemMatcher": {...})。

当我尝试这两个tasks.json文件时,我会得到一个‘描述不能转换为问题匹配器’错误,这并不是很有帮助。我检查了tasks.json模式,上面清楚地写着:

如果执行全局命令将使用的问题匹配器(例如,未定义任务)。tasks.json文件可以包含全局problemMatcher属性或任务属性,但不能同时包含两者。

模式错误吗?在这种情况下,我会提出一个问题。

还是我的代码错了?在这种情况下,请指出正确的方向。完整代码(减去注释):

代码语言:javascript
运行
复制
{
  "version": "2.0.0",
  "tasks": [
    {
        "label": "md2pdf",
        "type": "shell",
        "command": "md2pdf",
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            "reveal": "always",
            "panel": "shared",
            "showReuseMessage": false
        },
        "problemMatcher": {
            "owner": "Markdown",
            "fileLocation": ["absolute", "/tmp/md2pdf.log"],
            "pattern": [
                {
                    // Regular expression to match filename (on earlier line than actual warnings)
                    "regexp": "^Converting:\\s+(.*)$",
                    "kind": "location", 
                    "file": 1
                },
                {
                    // Regular expression to match: "l.45 \msg_fatal:nn {fontspec} {cannot-use-pdftex}" with a preceding line giving "Converting <filename>:"
                    "regexp": "l.(\\d+)\\s(.*):(.*)$",
                    "line": 1,
                    "severity": 2,
                    "message": 3
                }
            ]
        }
    }]
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-19 21:27:40

此后,我花了更多的时间来解决这个问题,并与VSCode团队进行了通信,这导致了文件的改进的出现。

实现简单工作所需的两个更改是:

  1. 需要有"command": "/full/path/to/executable"而不仅仅是"executable name"
  2. "fileLocation"不是关于要匹配的文件的位置,而是关于如何处理任务输出中提到的文件路径。无法指定要匹配的文件,因为它隐含在任务执行时编辑器中打开的文件或文件夹。在我的情况下,这个环境并不重要。
票数 3
EN

Stack Overflow用户

发布于 2022-10-18 13:13:14

如果你,像我一样,是因为the description can't be converted into a problem matcher来这里的,下面是我学到的:

如果您的问题匹配器说了类似"base": "$gcc"的话,那么我假设您使用的是Microsoft /C++插件。如果您使用的是其他没有列出在官方文档网页(search Tasks in Visual Studio Code)上的库,那么假设它可能是由一个插件提供的。

因此,这个错误可能意味着您缺少一个插件。在我的例子中,我试图使用VS代码的出色的WSL集成在WSL/Ubuntu中远程运行这个任务。我在WSL中安装了C/C++插件,并修复了错误(转到扩展面板,单击Install in WSL: <Distro name>)。

票数 1
EN

Stack Overflow用户

发布于 2020-07-16 19:10:27

只是一种预感,但我打赌你的fileLocation是错的。试着做些像

代码语言:javascript
运行
复制
"fileLocation": "absolute",
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62104648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档