VSCode Powershell 问题匹配器
VSCode Powershell problemMatcher
我在 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 组意外的标记“!”在表达式或语句中。
我不确定问题匹配器的正则表达式是否可以处理换行符。默认情况下,问题匹配器是单行的,但您可以按照此处所述创建多行匹配器: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
}]
}
第一个模式匹配第一行中的文件、行和列。第二个和第三个模式匹配接下来的两行输出,但不捕获任何值。最后一行与下一个输出行匹配并将其全部捕获为消息。
希望对您有所帮助!
我在 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 组意外的标记“!”在表达式或语句中。
我不确定问题匹配器的正则表达式是否可以处理换行符。默认情况下,问题匹配器是单行的,但您可以按照此处所述创建多行匹配器: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
}]
}
第一个模式匹配第一行中的文件、行和列。第二个和第三个模式匹配接下来的两行输出,但不捕获任何值。最后一行与下一个输出行匹配并将其全部捕获为消息。
希望对您有所帮助!