【问题标题】:VSCode Powershell problemMatcherVSCode Powershell 问题匹配器
【发布时间】:2015-06-30 14:50:18
【问题描述】:

我在 VSCode 中有一个 Powershell 任务,但不知道如何使 problemMatch 工作

{
    "version": "0.1.0",
    "command": "PowerShell.exe",
    "isShellCommand": true,
    "suppressTaskName": true,
    "args": [
        "& '${file}'"
    ],
    "tasks": [
    {
        "taskName": "Build",
        "isBuildCommand": true,
        "showOutput": "always",
        "fileLocation": ["absolute"],
        "problemMatcher": [
        {
            "pattern": {
            "regexp": "At (.*\\.ps1):(\\d*) char:(\\d*)(.*)\\n\\+(.*)\\n\\+(.*)\\n(.*)",
            "file": 1,
            "line": 2,
            "column": 3,
            "message": 7
            }
        }]
    }]
}

正则表达式的目标是这样的:

At C:\tmp\C1-INT to C1-QA\a.ps1:1 char:11
+ "asdasds" !
+           ~
Unexpected token '!' in expression or statement.

文件:第 1 组C:\tmp\C1-INT 到 C1-QA\a.ps1

行:第 2 组1

列:第 3 组11

消息:第 7 组 意外标记“!”在表达式或语句中。

【问题讨论】:

  • 我很想帮助你,但我不明白问题是什么/问题是什么? (可能是因为我没用过VSCode)
  • 问题是通过正则表达式的错误检测在外部正则表达式测试工具中工作,但在 VSCode 中错误下划线/标记不起作用(红色下划线/错误输出)

标签: powershell visual-studio-code vscode-problem-matcher


【解决方案1】:

我不确定问题匹配器的正则表达式是否可以处理换行符。默认情况下,问题匹配器是单行的,但您可以创建多行匹配器,如下所述:https://code.visualstudio.com/Docs/editor/tasks#_defining-a-multiline-problem-matcher

基本上你提供了多个正则表达式。对于您的方案,您可以尝试以下方法:

"problemMatcher": {
    "owner": "custom",
    "fileLocation": ["absolute"],
    "pattern": [{
        "regexp": "At (.*\\.ps1):(\\d*) char:(\\d*)(.*)",
        "file": 1,
        "line": 2,
        "column": 3                 
    }, {
        "regexp": "\\+.*"
    },{
        "regexp": "\\+.*"
    },{
        "regexp": "(.+)",
        "message": 1
    }]
}

第一个模式匹配第一行中的文件、行和列。第二个和第三个模式匹配接下来的两行输出,但不捕获任何值。最后一行匹配下一个输出行并将其全部捕获为消息。

希望有帮助!

【讨论】:

  • 如果中间的行数(你不关心的行)可以变化怎么办?我正在处理 Pester 输出,并且行号和文件路径信息出现在错误输出的最后一行的旁边。不幸的是,第一行(错误指示器)和这一行之间的行数是可变的。
  • 对于 Pester,我编写了一个自定义执行脚本,它重新格式化了输出,因为它让我重新启动并运行 :-) github.com/stuartleeks/posh-HumpCompletion/blob/master/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 2016-11-11
  • 2019-06-29
  • 1970-01-01
  • 2022-12-10
  • 2018-12-19
  • 1970-01-01
相关资源
最近更新 更多