在VSCode中,我试图创建一个ProblemMatcher来解析我运行的自定义脚本上的错误(如果您感兴趣的话,可以使用标记文件-> pandoc -> PDF)。
非常好的VSCode ProblemMatcher文档有一个示例任务,它显示(在我看来)运行命令("command": "gcc"
) 和定义问题匹配器("problemMatcher": {...}
)。
当我尝试这两个tasks.json文件时,我会得到一个‘描述不能转换为问题匹配器’错误,这并不是很有帮助。我检查了tasks.json模式,上面清楚地写着:
如果执行全局命令将使用的问题匹配器(例如,未定义任务)。tasks.json文件可以包含全局problemMatcher属性或任务属性,但不能同时包含两者。
模式错误吗?在这种情况下,我会提出一个问题。
还是我的代码错了?在这种情况下,请指出正确的方向。完整代码(减去注释):
{
"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
}
]
}
}]
}
发布于 2020-07-19 21:27:40
此后,我花了更多的时间来解决这个问题,并与VSCode团队进行了通信,这导致了文件的改进的出现。
实现简单工作所需的两个更改是:
"command": "/full/path/to/executable"
而不仅仅是"executable name"
。"fileLocation"
不是关于要匹配的文件的位置,而是关于如何处理任务输出中提到的文件路径。无法指定要匹配的文件,因为它隐含在任务执行时编辑器中打开的文件或文件夹。在我的情况下,这个环境并不重要。发布于 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>
)。
发布于 2020-07-16 19:10:27
只是一种预感,但我打赌你的fileLocation是错的。试着做些像
"fileLocation": "absolute",
https://stackoverflow.com/questions/62104648
复制相似问题