javascript - VSCode ProblemMatcher 严重性映射

标签 javascript visual-studio-code ant vscode-problem-matcher

我有一个用于 ant 任务的自定义 ProblemMatcher,它调用 Microsoft JScript 来 lint JavaScript 文件(我无法将其更改为 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": [{
    "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
    }]
}]

它正确地找到了错误报告的第一行。不过,我希望可以忽略的错误在错误报告中以警告的形式出现,而不是错误

有没有办法将错误消息映射到严重级别?

例如将“运行时错误”映射到“警告”并将“编译错误”映射到“错误”(短视,我知道——目前就足够了)。

最佳答案

您可以使用两个选项:

要么使用多行问题匹配器并匹配所有三行。然而,这要求如果错误消息不能被忽略,则也打印一些内容。例如“这个错误很严重”。请参阅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

关于javascript - VSCode ProblemMatcher 严重性映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31985329/

相关文章:

javascript - 触发缓存以确保数据正确问题 - swr hook - next.js (使用 typescript )

javascript - 使用 javascript 在输入字段上只接受 20 的倍数(例如 40、60、80)?

javascript - clearRect 绘制垂直线时不清除 Canvas

python - 无法让 VSCode/Python 调试器找到我的项目模块

ant - 让 ant concat 忽略 BOM'?

linux - Ant中能否修改linux文件权限

javascript - 这段代码的作用是什么? a = (a == b) ? c : b;

visual-studio-code - VSCode 中有调试内存窗口吗?

python - VSCode 终端中的 conda activate 未正确更新 PATH

java - 未设置 libs.CopyLibs.classpath 属性