VS Code Task多模式问题匹配器配置失效求助
问题描述
我尝试使用GNU_ARM_10_2020-q4-major搭建VS Code的CMake/Ninja项目,使用默认的$gcc问题匹配器会遗漏大量信息,因此自定义了多模式匹配器,但遇到了问题。
将构建输出中的两条测试消息保存到test.txt:
C:/Repos/ProjectN/ProjectN/Dave/Generated/ETH_LWIP/lwip/port/sys_arch.c: In function 'sys_sem_signal': C:/Repos/ProjectN/ProjectN/Dave/Generated/ETH_LWIP/lwip/port/sys_arch.c:550:14: warning: variable 'ret' set but not used [-Wunused-but-set-variable] 550 | osStatus_t ret; | ^~~ c:/gnu_arm_10_2020-q4-major/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe: c:\repos\ProjectN\gfx-src\include/gfx_drawing.hpp:3203: undefined reference to `gfx::font::operator[](int) const'
测试用的tasks.json配置片段如下:
{ "label": "build", "type": "shell", "command": "cmd /C type test.txt", "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": { "fileLocation": "absolute", "severity": "error", "pattern": [ { "regexp": "(.*):(\\d+):(\\d+): (.*): (.*)", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 }, { "regexp": "(.*ld\\.exe): (.*):(\\d+): (.*)", "file": 2, "line": 3, "message": 4 } ] }, "group": { "kind": "build", "isDefault": true } }
当前配置无法匹配任何内容,但单独移除其中一个模式时,另一个模式可正常工作,能在Problems视图中看到对应条目。
问题原因与解决方案
原因
VS Code的问题匹配器中,单个problemMatcher对象内的pattern数组默认是用于匹配同一个问题的多行输出,而非多个独立的问题格式。也就是说,它会尝试用第一个pattern匹配某行,然后用第二个pattern匹配该行的下一行,把它们合并成一个问题条目。但你的两个模式对应完全独立的两类问题(GCC编译警告、链接器错误),这种配置逻辑不符合预期,导致无法匹配。
解决方案
将problemMatcher设为数组,每个元素对应一个独立的匹配器配置,分别处理一种问题格式:
{ "label": "build", "type": "shell", "command": "cmd /C type test.txt", "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ { "fileLocation": "absolute", "pattern": { "regexp": "(.*):(\\d+):(\\d+): (.*): (.*)", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } }, { "fileLocation": "absolute", "severity": "error", "pattern": { "regexp": "(.*ld\\.exe): (.*):(\\d+): (.*)", "file": 2, "line": 3, "message": 4 } } ], "group": { "kind": "build", "isDefault": true } }
补充说明:对于GCC警告的额外函数声明行(In function...),当前的pattern已经能正确匹配包含行号、列号的警告行,无需额外调整,匹配器会自动忽略无关行。
内容的提问来源于stack exchange,提问作者Mark Kingston
相关产品推荐
相关产品推荐

