2

我有一个这样定义的问题匹配器:

"fileLocation": ["relative", "${workspaceFolder}"],

而且我只知道文件的名称,而不是编译输出的相对路径。比它仅在文件位于工作区的根目录时打开文件。

例如问题匹配器搜索:Package.sql 但文件位于

    • 其他子文件夹
    • PKG
      • 包.sql

是否有设置让问题匹配器“找到”该文件,即使它位于(未知)子文件夹中?(假设所有文件名都是不同的)

4

2 回答 2

1

您可以将“命令”字符串用于具有相对或绝对路径的打印文件,如下所示: echo FILEBEGIN${relativeFile}FILEENDecho FILEBEGIN${file}FILEEND

并且很容易通过正则表达式获取文件。

如果您使用的是 oracle 和 powershell,您可以尝试我的任务:

{
   "label": "compile",
   "type": "shell",
   "command": "echo 'set define off' 'set serveroutput on' '@${file}' 'exit' | sqlplus ${config:plsql-language.connection.activeInfos} | Select-String -Pattern '(\\d+/\\d+.*|.*created.*)' | % {'${relativeFile}:' + $($_.matches.value)}",
   "group": {
      "kind": "build",
      "isDefault": true
   },
   "problemMatcher": {
      "owner": "PLSQL",
      "severity": "error",
      "fileLocation":  ["relative", "${workspaceFolder}"],
      "pattern":
         {
            "regexp": "^(.*):(\\d+)\\/(\\d+)\\s+((PLS|ORA)-\\d+):(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "code": 4,
            "message": 6
         }
   }
}
于 2020-03-03T10:01:12.967 回答
0

问题匹配器应返回绝对路径或相对于工作空间内固定文件夹的路径。如果您只有一个文件名,没有绝对/相对路径,在我的理解中,代码将无法找到该文件,因为只有名称是不够的信息。还有自动检测选项。您可以尝试这样的事情: "fileLocation": ["autodetect", "${workspaceFolder}/subfolder1/subfolder2"]

于 2021-12-28T09:25:59.237 回答