2017-01-31 6 views
2

Я сконфигурировал задачу в VSCode для компиляции dpk Delphi 2005. Он работает и возвращает ошибки в «представлении проблем», но он не показывает эти ошибки в файле.Как настроить пути файлов в ошибках задачи VSCode

Я думаю, что это происходит потому, что, когда я нажимаю на ошибку, я получаю сообщение об ошибке:

Не удалось открыть «sr075pro.pas»: Файл не найден (... projectfolder \ sr075pro. pas)

Но файл находится в ...projectfolder\webservices\sr075pro.pas.

Я не могу найти способ сообщить заданию, что файл находится в подпапке. Я попытался использовать параметр «relative» в теге «fileLocation» без успеха.

Обнаружена ошибка:

Compiling sa_webservices... 
Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporation 
sr075pro.pas(99) Error: Undeclared identifier: 'ni' 
sa_webservices.dpk(802) Fatal: Could not compile used unit 'sr075pro.pas' 

Моя конфигурация задачи:

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
{ 
     "taskName": "Compile sa_webservices", 
     "isBuildCommand": false, 
     "isTestCommand": false, 
     "showOutput": "always", 
     "args": [ 
     "sa_webservices" 
     ], 
     "problemMatcher": { 
     "owner": "external", 
     "fileLocation": "relative", 
     "pattern": { 
      "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
      "file": 1, 
      "line": 3, 
      "message": 5 
     } 
     } 
    } 

Мой compile.bat:

@echo off 
@P: 
@set arg1=%1 
shift 

... 
if "%arg1%" == "sa_webservices" set arg2="webservices" 
... 
echo Compiling %arg1%... 
cd\%arg2% 
dcc32.exe -H -W -Q %arg1%.dpk 

ответ

1

Конфигурация задачи я S не так. Прежде всего, вы не закрываете все скобки, но я думаю, что это ошибка, сделанная путем копирования и вставки ее здесь в StackOverflow. В противном случае конфигурация задачи не сработала бы вообще.

Сейчас на real проблема: DCC32 создает подсказки и предупреждения, содержащие относительные пути к файлам. Этими путями являются относительно файла проекта. В конфигурации задачи можно определить вывод компилятора содержать относительные пути, установив

"fileLocation": "relative" 

Visual Studio код не знает, как построить правильный абсолютный путь от относительных путей, заданных на сообщение компилятора. Поэтому он догадывается, что ваш текущий ${workspaceRoot} (в вашем случае это projectfolder) будет абсолютным путем.

Это объясняет, почему вы видите ошибки и предупреждения, содержащие неправильные пути к файлам. Чтобы получить правильные пути, вам нужно указать VSCode правильный путь для объединения относительных путей. Вы можете сделать это, просто добавляя правильный путь к fileLocation входу в вас tasks.json:

"fileLocation": ["relative", "${workspaceRoot}\\webservices"] 

Весь tasks.json выглядит следующим образом:

{ 
    "version": "0.1.0", 
    "name": "Compilar", 
    "command": "C:\\Compilers\\compile.bat", 
    "suppressTaskName": true, 
    "isShellCommand": true, 
    "isBuildCommand": true, 
    "tasks": [ 
     { 
      "taskName": "Compile sa_webservices", 
      "isBuildCommand": false, 
      "isTestCommand": false, 
      "showOutput": "always", 
      "args": [ 
       "sa_webservices" 
      ], 
      "problemMatcher": { 
       "owner": "external", 
       "fileLocation": ["relative", "${workspaceRoot}\\webservices"], 
       "pattern": { 
        "regexp": "^([\\w]+\\.(pas|dpr|dpk))\\((\\d+)\\)\\s(Fatal|Error|Warning|Hint):(.*)", 
        "file": 1, 
        "line": 3, 
        "message": 5 
       } 
      } 
     } 
    ] 
} 
+0

Это сработало! Я не знал вторую опцию «fileLocation». Благодарю. – user2133093