我有一个自定义problemMatcher用于调用Microsoft JScript到lint JavaScript文件的ant任务(我无法将其更改为现代的ESHint或类似文件)。
JScript的错误消息本身报告为"可以忽略此错误...",在构建输出中如下所示:
[echo] c:\Users\D064766\Work\Perforce\tc1\lightspeed\dev\src\_javascript\jsgen\js\dbg\lightspeed.js(20, 4) Microsoft JScript runtime error: 'document' is undefined
[echo]
[echo] This error can be ignored...
我的problemMatcher外观如下:
"problemMatcher": [{
"owner": "javascript",
"fileLocation": ["absolute"],
"pattern": [{
"regexp": " \\[echo\\] ([^\\(\\)]*)\\((\\d+), (\\d+)\\) Microsoft JScript (runtime error|compilation error): (.*)",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}]
}]
它正确找到错误报告的第一行。但是,我希望可以忽略的错误在错误报告中以警告而非错误的形式出现。
有没有办法将错误消息映射到严重性级别?
E.g。将"runtime error"
映射到"warning"
,将"compilation error"
映射到"error"
(我知道目光短视,目前已足够)。
答案 0 :(得分:2)
您可以使用两种方法:
使用多行问题匹配器并匹配所有三行。但是,这要求如果不能忽略错误消息,也会打印某些内容。例如'此错误很严重'。见https://code.visualstudio.com/Docs/editor/tasks#_defining-a-problem-matcher
定义两个问题匹配器并在匹配器本身上具有严重性属性,而不是在模式上。这样的事情(未经测试)
"problemMatcher": [{
"owner": "javascript",
"fileLocation": ["absolute"],
"severity": "warning",
"pattern": {
"regexp": " \\[echo\\] ([^\\(\\)]*)\\((\\d+), (\\d+)\\) Microsoft JScript runtime error): (.*)",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
},
{
"owner": "javascript",
"fileLocation": ["absolute"],
"severity": "error",
"pattern": {
"regexp": " \\[echo\\] ([^\\(\\)]*)\\((\\d+), (\\d+)\\) Microsoft JScript compilation error: (.*)",
"file": 1,
"line": 2,
"column": 3,
"message": 4
}
}]
有关task.json的完整架构,请参阅https://code.visualstudio.com/Docs/editor/tasks_appendix