在VSCode中,我试图创建一个ProblemMatcher来解析我运行的我的自定义脚本(markdown文件-> pandoc-> PDF,如果您感兴趣的话)上的错误。
相当不错的VSCode ProblemMatcher documentation有一个示例任务,对我来说似乎是要运行命令("command": "gcc"
)并定义问题匹配器("problemMatcher": {...}
)。
当我同时对我的task.json文件尝试此操作时,出现“无法将描述转换为问题匹配器”错误,这并不是非常有用。我检查了tasks.json schema,并清楚地说:
如果执行全局命令(例如,未定义任何任务),将使用问题匹配器。 task.json文件可以包含全局问题问题属性或任务属性,但不能同时包含两者。
架构错误吗?在这种情况下,我会提出一个问题。
还是我的代码错误?在这种情况下,请指出正确的方向。完整代码(减去注释):
{
"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
}
]
}
}]
}
答案 0 :(得分:1)
此后,我花了更多时间弄清楚这一点,并与VSCode团队联系,后者促成了improvements in the documentation。
要做一些简单的工作所需的两个更改是:
channel
还需要shape (512, )
。"command": "/full/path/to/executable"
与要匹配的文件的位置无关,而与如何处理任务输出中提到的文件路径有关。无法指定要匹配的文件,因为它隐式地是任务执行时在编辑器中打开的文件或文件夹。就我而言,设置并不重要。答案 1 :(得分:0)
只是预感,但是我敢打赌您的fileLocation错误。尝试类似
"fileLocation": "absolute",