【问题标题】:Defining a ProblemMatcher in VSCode tasks -- schema disagrees with docs?在 VSCode 任务中定义 ProblemMatcher - 架构与文档不一致?
【发布时间】:2020-05-30 15:27:22
【问题描述】:

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

相当不错的VSCode ProblemMatcher documentation 有一个示例任务(在我看来)运行命令("command": "gcc"定义问题匹配器("problemMatcher": {...})。

当我对我的 tasks.json 文件同时尝试此操作时,我得到一个“无法将描述转换为问题匹配器”的错误,这并不是很有帮助。我检查了tasks.json schema,它清楚地说:

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

架构错了吗?在这种情况下,我会提出一个问题。

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

{
  "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
                }
            ]
        }
    }]
}

【问题讨论】:

    标签: task vscode-settings vscode-problem-matcher


    【解决方案1】:

    从那以后我花了更多时间来解决这个问题,并与 VSCode 团队通信,这导致了improvements in the documentation

    要让一些简单的工作正常工作,需要进行两项更改:

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

    【讨论】:

      【解决方案2】:

      只是一种预感,但我敢打赌你的文件位置是错误的。尝试类似

      "fileLocation": "absolute",
      

      【讨论】:

      • 感谢@lucian-wischik 的回答。这促使我在下面添加自己的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2017-09-11
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      相关资源
      最近更新 更多