【VsCode】通过tasks.json中的problemMatcher属性的fileLocation子属性设定问题的输出内容

前言

这个问题是起因在我想把代码指向的相对路径更改为使用宏的绝对路径便于编译调试,但是在一次调试过程中有一个编译时报错,点击报错内容项时,却显示找不到路径文件。报错详细内容显示是 即:代码路径+绝对路径。

"resource": "/c:/Users/97852/Desktop/ZryCode/CODE/C++/C:/Users/97852/Desktop/ZryCode/CODE/C++/Processing/IQProcess.cpp",

那么这里的错误就已经很明显了,“现在VS 认为错误的查找路径应当是相对路径,并且拼接格式是 代码路径再拼接编译时路径。”。

接下来就是解决问题需要了解的内容。我从VS的官方帮助手册和开放源码中找到了解决方法,现在整理记录下来。

tasks.json 是什么?

tasks.json是VsCode提供的一种快捷配置文件,用来集中管理 VsCode 的编译调试功能。
VS Code软件会通过 工作区 或者 打开文件夹的当前目录下(这取决于你是否为当前代码项目创建了工作区) 的.vscode 下的 tasks.json配置来为每一次调试,执行对应的相关设置内容。

问题界面是什么?

问题界面如果没有专门设置的话,就是在下方显示的编译调试辅助工具栏显示告警和错误的相关信息。
通过双击对应的问题条目,可以自动跳转到问题所在的代码文件的对应行数。

怎么设定自己的问题界面显示内容?

tasks.json中可以设置一个属性名为 problemMatcher ,这个是用来规定问题界面的全部内容的。
而它的子属性有一个名为:fileLocation的就是指的问题界面文件目录的查找方式。也就是此次问题的所在。
这里我们要将代码文件查找方式设定为自适应,并添加非绝对路径时的查找路径。

即将 属性 fileLocation 的 Value值 设定为 autodetect(自适应) "${workspaceRoot}"(这里指定非绝对路径时的查找路径 为工作区根目录)

"problemMatcher": {"owner": "cpp","fileLocation": ["autodetect","${workspaceRoot}"],"pattern": {"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file": 1,"line": 2,"column": 3,"severity": 4,"message": 5}
},

补充

vscode 对于 json 文件的解析方式的开源代码部分.

  • 摘录 文件目录设定部分的说明:
  /*** Defines how filename reported in a problem pattern* should be read. Valid values are:*  - "absolute": the filename is always treated absolute.*  - "relative": the filename is always treated relative to*    the current working directory. This is the default.*  - ["relative", "path value"]: the filename is always*    treated relative to the given path value.*  - "autodetect": the filename is treated relative to*    the current workspace directory, and if the file*    does not exist, it is treated as absolute.*  - ["autodetect", "path value"]: the filename is treated*    relative to the given path value, and if it does not*    exist, it is treated as absolute.*/fileLocation?: string | string[];
  • 翻译后内容:
/**。  
* 定义如何在问题模式中报告文件名。  
* 应改为。有效值包括:  
* -“absolute”:文件名始终被视为绝对名称。  
* -“relative”:文件名始终被视为相对于。  
*  当前工作目录。这是默认设置。  
* -[“相对”,“路径值”]:文件名始终为。  
*  相对于给定的路径值进行处理。  
* -“自动检测”:文件名被视为相对于。  
*  当前工作区目录,如果文件。  
*  不存在,它被视为绝对。  
* -[“自动检测”,“路径值”]:文件名被处理。  
*  相对于给定的路径值,如果不是。  
*  存在,则视为绝对。  
*/

全文附注:

The following interfaces define the basic schema of the file.tasks.json
Note: Some task options are contributed by VS Code extensions. You can use IntelliSense to find a complete list, using the Trigger Suggestions command (Ctrl+Space).tasks.json

interface TaskConfiguration extends BaseTaskConfiguration {/*** The configuration's version number*/version: '2.0.0';/*** Windows specific task configuration*/windows?: BaseTaskConfiguration;/*** macOS specific task configuration*/osx?: BaseTaskConfiguration;/*** Linux specific task configuration*/linux?: BaseTaskConfiguration;
}interface BaseTaskConfiguration {/*** The type of a custom task. Tasks of type "shell" are executed* inside a shell (e.g. bash, cmd, powershell, ...)*/type: 'shell' | 'process';/*** The command to be executed. Can be an external program or a shell* command.*/command: string;/*** Specifies whether a global command is a background task.*/isBackground?: boolean;/*** The command options used when the command is executed. Can be omitted.*/options?: CommandOptions;/*** The arguments passed to the command. Can be omitted.*/args?: string[];/*** The presentation options.*/presentation?: PresentationOptions;/*** The problem matcher to be used if a global command is executed (e.g. no tasks* are defined). A tasks.json file can either contain a global problemMatcher* property or a tasks property but not both.*/problemMatcher?: string | ProblemMatcher | (string | ProblemMatcher)[];/*** The configuration of the available tasks. A tasks.json file can either* contain a global problemMatcher property or a tasks property but not both.*/tasks?: TaskDescription[];
}/*** Options to be passed to the external program or shell*/
export interface CommandOptions {/*** The current working directory of the executed program or shell.* If omitted the current workspace's root is used.*/cwd?: string;/*** The environment of the executed program or shell. If omitted* the parent process' environment is used.*/env?: { [key: string]: string };/*** Configuration of the shell when task type is `shell`*/shell: {/*** The shell to use.*/executable: string;/*** The arguments to be passed to the shell executable to run in command mode* (e.g ['-c'] for bash or ['/S', '/C'] for cmd.exe).*/args?: string[];};
}/*** The description of a task.*/
interface TaskDescription {/*** The task's name*/label: string;/*** The type of a custom task. Tasks of type "shell" are executed* inside a shell (e.g. bash, cmd, powershell, ...)*/type: 'shell' | 'process';/*** The command to execute. If the type is "shell" it should be the full* command line including any additional arguments passed to the command.*/command: string;/*** Whether the executed command is kept alive and runs in the background.*/isBackground?: boolean;/*** Additional arguments passed to the command. Should be used if type* is "process".*/args?: string[];/*** Defines the group to which this task belongs. Also supports to mark* a task as the default task in a group.*/group?: 'build' | 'test' | { kind: 'build' | 'test'; isDefault: boolean };/*** The presentation options.*/presentation?: PresentationOptions;/*** The problem matcher(s) to use to capture problems in the tasks* output.*/problemMatcher?: string | ProblemMatcher | (string | ProblemMatcher)[];/*** Defines when and how a task is run.*/runOptions?: RunOptions;
}interface PresentationOptions {/*** Controls whether the task output is reveal in the user interface.* Defaults to `always`.*/reveal?: 'never' | 'silent' | 'always';/*** Controls whether the command associated with the task is echoed* in the user interface. Defaults to `true`.*/echo?: boolean;/*** Controls whether the panel showing the task output is taking focus.* Defaults to `false`.*/focus?: boolean;/*** Controls if the task panel is used for this task only (dedicated),* shared between tasks (shared) or if a new panel is created on* every task execution (new). Defaults to `shared`.*/panel?: 'shared' | 'dedicated' | 'new';/*** Controls whether to show the `Terminal will be reused by tasks,* press any key to close it` message.*/showReuseMessage?: boolean;/*** Controls whether the terminal is cleared before this task is run.* Defaults to `false`.*/clear?: boolean;/*** Controls whether the task is executed in a specific terminal* group using split panes. Tasks in the same group (specified by a string value)* will use split terminals to present instead of a new terminal panel.*/group?: string;
}/*** A description of a problem matcher that detects problems* in build output.*/
interface ProblemMatcher {/*** The name of a base problem matcher to use. If specified the* base problem matcher will be used as a template and properties* specified here will replace properties of the base problem* matcher*/base?: string;/*** The owner of the produced VS Code problem. This is typically* the identifier of a VS Code language service if the problems are* to be merged with the one produced by the language service* or 'external'. Defaults to 'external' if omitted.*/owner?: string;/*** The severity of the VS Code problem produced by this problem matcher.** Valid values are:*   "error": to produce errors.*   "warning": to produce warnings.*   "info": to produce infos.** The value is used if a pattern doesn't specify a severity match group.* Defaults to "error" if omitted.*/severity?: string;/*** Defines how filename reported in a problem pattern* should be read. Valid values are:*  - "absolute": the filename is always treated absolute.*  - "relative": the filename is always treated relative to*    the current working directory. This is the default.*  - ["relative", "path value"]: the filename is always*    treated relative to the given path value.*  - "autodetect": the filename is treated relative to*    the current workspace directory, and if the file*    does not exist, it is treated as absolute.*  - ["autodetect", "path value"]: the filename is treated*    relative to the given path value, and if it does not*    exist, it is treated as absolute.*/fileLocation?: string | string[];/*** The name of a predefined problem pattern, the inline definition* of a problem pattern or an array of problem patterns to match* problems spread over multiple lines.*/pattern?: string | ProblemPattern | ProblemPattern[];/*** Additional information used to detect when a background task (like a watching task in Gulp)* is active.*/background?: BackgroundMatcher;
}/*** A description to track the start and end of a background task.*/
interface BackgroundMatcher {/*** If set to true the watcher is in active mode when the task* starts. This is equals of issuing a line that matches the* beginPattern.*/activeOnStart?: boolean;/*** If matched in the output the start of a background task is signaled.*/beginsPattern?: string;/*** If matched in the output the end of a background task is signaled.*/endsPattern?: string;
}interface ProblemPattern {/*** The regular expression to find a problem in the console output of an* executed task.*/regexp: string;/*** Whether the pattern matches a problem for the whole file or for a location* inside a file.** Defaults to "location".*/kind?: 'file' | 'location';/*** The match group index of the filename.*/file: number;/*** The match group index of the problem's location. Valid location* patterns are: (line), (line,column) and (startLine,startColumn,endLine,endColumn).* If omitted the line and column properties are used.*/location?: number;/*** The match group index of the problem's line in the source file.* Can only be omitted if location is specified.*/line?: number;/*** The match group index of the problem's column in the source file.*/column?: number;/*** The match group index of the problem's end line in the source file.** Defaults to undefined. No end line is captured.*/endLine?: number;/*** The match group index of the problem's end column in the source file.** Defaults to undefined. No end column is captured.*/endColumn?: number;/*** The match group index of the problem's severity.** Defaults to undefined. In this case the problem matcher's severity* is used.*/severity?: number;/*** The match group index of the problem's code.** Defaults to undefined. No code is captured.*/code?: number;/*** The match group index of the message. Defaults to 0.*/message: number;/*** Specifies if the last pattern in a multi line problem matcher should* loop as long as it does match a line consequently. Only valid on the* last problem pattern in a multi line problem matcher.*/loop?: boolean;
}/*** A description to when and how run a task.*/
interface RunOptions {/*** Controls how variables are evaluated when a task is executed through* the Rerun Last Task command.* The default is `true`, meaning that variables will be re-evaluated when* a task is rerun. When set to `false`, the resolved variable values from* the previous run of the task will be used.*/reevaluateOnRerun?: boolean;/*** Specifies when a task is run.** Valid values are:*   "default": The task will only be run when executed through the Run Task command.*   "folderOpen": The task will be run when the containing folder is opened.*/runOn?: string;
}

扩展阅读:

Visual Studio Code Tasks 附录
Visual Studio 代码变量参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer详解(4)-前馈层残差连接层归一化

1、前馈层 前馈层接收自注意力层的输出作为输入。 from torch import nn import torch.nn.functional as Fclass FeedForward(nn.Module):def __init__(self, d_model512, d_ff2048, dropout0.1):super().__init__()# d_ff 默认设置为2048self.linear_1 nn.Linear(d_model,…

CentOS 7安装prometheus

说明:本文介绍如何在CentOS操作系统上安装prometheus Step1:下载安装包 访问Github仓库,下载对应版本的prometheus安装包 https://github.com/prometheus/prometheus/releases 操作系统的版本信息,可通过下面这两个命令查看&am…

C\C++语言中求由字符串构建的字符数组长度及所占字节数代码

【知识点】 在 C\C 语言中,由字符串构建的字符数组,以不可见字符 \0 作为结尾。\0 是字符串结束标志,不计入串长,但要占内存空间。 例如,若由字符串构建的字符数组为 s,则命令 strlen(s) 可得字符数组长度…

【UE Slate】 虚幻引擎Slate开发快速入门

目录 0 引言1 Slate框架1.0 控件布局1.1 SWidget1.1.1 SWidget的主要作用1.1.2 SWidget的关键方法1.1.3 使用SWidget创建自定义控件1.1.4 结论 1.2 SCompoundWidget1.2.1 SCompoundWidget的主要作用1.2.2 SCompoundWidget的使用示例1.2.3 SCompoundWidget的关系1.2.4 总结 1.3 …

Linux 磁盘管理命令tune2fs mkisofs cfdisk sfdisk parted

文章目录 3.Linux 磁盘管理命令3.26 tune2fs:文件系统调整案例练习 3.27 mkisofs:建立ISO9660 映象文件案例练习 3.28 cfdisk:磁盘分区案例练习 3.29 sfdisk:硬盘分区工具程序案例练习 3.30 parted:磁盘分区工具案例练习 3.Linux 磁盘管理命令 3.26 tune2fs:文件系统调整 作用…

Python语法篇

文章目录 数据类型字符串整数浮点数列表元组字典 条件语句if语句while语句 函数类文件异常JSON库unittest Python中非常重视缩进,这点与Java很不一样,需要注意 冒号在python里很重要 数据类型 字符串 单引号,双引号,三引号都可…

2024经济管理、社会科学与教育国际会议(ICEMSSE 2024)

2024经济管理、社会科学与教育国际会议(ICEMSSE 2024) 会议简介 2024年国际经济管理、社会科学和教育会议(ICEMSSE 2024)专注于经济、社会发展和教育。会议旨在为专家、学者和社会人士提供一个交流平台。通过讨论科学研究成果和前沿技术,我…

如何解包 Python 恶意可执行文件

使用 Python 编写的程序通常以源码的形式发布,也可以将所有依赖都打包到一个可执行文件中。那么如何解包 Python 恶意可执行文件呢? 打包 打包与加壳不同,打包 Python 程序的目的是创建一个可以在操作系统上独立运行的可执行文件。使用例如 …

【Qt】深入探索Qt事件处理:从基础到高级自定义:QEvent

文章目录 前言:1. 事件的介绍2. 事件的处理2.1. 示例1: 重写鼠标进入和鼠标离开事件2.2. 示例2:当鼠标点击时,获取对应的坐标值;2.3. 鼠标释放事件2.4. 鼠标双击事件2.5. 鼠标移动事件2.6. 鼠标滚轮的滚动事件 3. 按键…

初学C语言100题:经典例题节选(源码分享)

1.打印Hello World! #include <stdio.h>int main() {printf("hello world\n");//使用printf库函数 注意引用头文件return 0; } 2.输入半径 计算圆的面积 int main() {float r, s;//定义变量scanf("%f", &r);//输入半径s 3.14 * r * r;// 圆的…

H3CNE-8-ARP工作原理

ARP&#xff1a;Address Resolution Protocol 通过目的IP地址请求对方的MAC地址的过程。 数据链路层在进行数据封装时&#xff0c;需要目的MAC地址。 arp -a 查看 arp -d * 清空 主机A发送一个数据包给主机C之前&#xff0c;首先要获取C的MAC地址 数据封装

【C++】c++入门(下 )

c入门 1.内联函数1.1 概念1.2 特性 2.auto关键字(C11)2.1 简介2.2 auto的使用2.3 auto不能推导的场景2.4 typedef取别名也能产生和auto的效果&#xff0c;为什么不使用&#xff1f; 3.基于范围的for循环(C11)3.1 9.1 范围for的语法3.2 范围for的使用条件 4.指针空值nullptr(C11…

.DFS.

DFS 全称为Depth First Search&#xff0c;中文称为深度优先搜索。 这是一种用于遍历或搜索树或图的算法&#xff0c;其思想是: 沿着每一条可能的路径一个节点一个节点地往下搜索&#xff0c; 直到路径的终点&#xff0c;然后再回溯&#xff0c;直到所有路径搜索完为止。 DFS俗…

隐私政策第三方sdk描述模板

​1、使用SDK名称&#xff1a;高德地图SDK ​收集个人信息类型&#xff1a;获取用户的位置信息&#xff08;准确度会有所不同&#xff09;&#xff0c;这些技术包括 IP 地址、GPS 以及能够提供相关信息的WLAN&#xff08;如Wi-Fi&#xff09;接入点、蓝牙和基站、传感器信息等…

面向对象编程的魅力与实战:以坦克飞机大战为例

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、面向对象编程的引言 二、理解面向对象编程与面向过程编程的差异 三、创建类与对象&…

Host头攻击-使用反向代理服务器或负载均衡器来传递路由信息

反向代理服务器的作用 安全性&#xff1a;反向代理服务器位于Web服务器之前&#xff0c;可以隐藏实际Web服务器的身份和地址&#xff0c;从而增加安全性。它还可以对客户端请求进行过滤和检查&#xff0c;以防止潜在的攻击。负载均衡&#xff1a;反向代理服务器可以将客户端请…

select函数(Unix系统)

select函数&#xff08;Unix系统&#xff09; 一、函数格式二、参数及返回值2.1 struct fd_set 结构体2.1 struct timeval 结构体2.3 函数参数2.4 返回值 三、用法举例3.1 监控终端输入内容 一、函数格式 #include <sys/time.h>#include <sys/types.h>#include <…

Linux查看某个用户使用总内存脚本

在之前记录过Valgrind的安装与使用 有时想要测试某个linux用户使用的总内存是否在增长&#xff0c;可以通过下面的python代码每隔一段时间做个统计 import psutil import time# 指定要监视的用户名 target_user "yifan.wang" # 替换为要监视的用户名# 获取初始内…

flink ExecutionEnvironment

在Apache Flink中&#xff0c;获取执行环境可以通过调用ExecutionEnvironment类的静态方法来实现。以下是获取不同类型环境的示例代码&#xff1a; 本地环境&#xff08;用于单机测试&#xff09;: ExecutionEnvironment env ExecutionEnvironment.createLocalEnvironment()…

yolov8+ROS+ubuntu18.04——学习记录

参考文献 1.Ubuntu配置Yolov8环境并训练自己的数据集 ROS实时运行 2.https://juejin.cn/post/7313979467965874214 前提&#xff1a; 1.CUDA和Anaconda&#xff0c;PyTorch 2.python>3.8 一、创建激活环境&#xff0c;安装依赖 1.创建虚拟环境 conda create -n yol…