VSCode problemMatcher严重性映射

时间:2015-08-13 10:11:49

标签: javascript ant visual-studio-code

我有一个自定义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"(我知道目光短视,目前已足够)。

1 个答案:

答案 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