Visual Studio Code中tasks.json全局任务命令选项CommandOptions配置介绍

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、引言

从官方文档可见,一个vscode典型的task.json文件包含多种属性,格式复杂,任务可以分为全局任务局部可选任务,在tasks.json一级配置的 任务为全局任务,在二级tasks中配置的任务老猿称为局部可选任务,这个名称是老猿根据全局任务的说法自定义的。

全局任务比局部可选任务多了version、options和tasks这三个子配置项,options的类型为CommandOptions,表示传递给外部执行程序或shell的选项。

二、vscode官方文档的CommandOptions定义

下面是CommandOptions的官方文档定义:

/**
 * 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[];
  };
}

三、CommandOptions详解

从上述官方文档定义可以看出,CommandOptions是用于传递给shell或后台进程的运行选项,包括以下可选项:

  • cwd: 执行进程或shell的工作目录,如果没有设置则使用当前项目的根目录
  • env :执行进程或shell的需要的环境变量,如果没有设置则使用父进程的环境,如果需要设置,采用:"环境变量名:环境变量值"的方式传递,类似: “env”: { “MY_VAR1”: “value1”, “MY_VAR2”:1 }
  • shell:当type设置为"shell"时,用于配置使用的shell类型,其下有两个子项配置,executable配置执行的shell,如“bash”、“ksh”、“csh”、“dash”等,使用的前提是机器上安装了对应shell;args为传递给shell以在命令模式下运行的options参数,如bash的使用语法为:bash [options] [command_string | file],则args是options相关选项值,而command_string则是前面的command命令。

四、CommandOptions配置举例

为了说明清楚,下面举个配置正确实际不合理的一个全局任务的部分配置来看看:

"command":"g++",
    "args": [
      "-fdiagnostics-color=always",
      "-g",
      "-Wall",
      "-Wextra",
      "-O0",
      "${workspaceFolder}/hello.cpp",
      "-o",
      "${fileDirname}/$hello1",
    ],
    "options": {
         "shell": {  
          "executable":"bash",
          "args":["-c","ls -lrt *.txt"],
           }  

        }

这个配置在运行任务时选择执行g++任务时,实际执行的指令为:

bash '-c' 'ls -lrt *.txt' 'g++ -fdiagnostics-color=always -g -Wall -Wextra -O0 /home/administrator/E_DRIVER/vcwork/test/hello.cpp -o /home/administrator/E_DRIVER/vcwork/test/.vscode/$hello1'

具体信息请见如下截图:
在这里插入图片描述

五、小结

本文介绍了Visual Studio Code中tasks.json全局任务命令选项CommandOptions的详细内容,并通过配置案例来说明CommandOptions各个子配置项的作用。

vscode中关于tasks.json的官方文档地址:https://code.visualstudio.com/docs/editor/tasks-appendix

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于vscode配置介绍的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython
  • 20
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 在 VSCode , tasks.json 文件可以配置编译和运行 Swift 代码的任务. 其, "problemMatcher" 属性可以指定如何将编译器输出转换为问题(problems)显示在错误视图. 举个例子, 若使用的是 Xcode 编译器, 则可以将 problemMatcher 设置为: ``` "problemMatcher": "$xcode" ``` 这样就可以在编译过程,在输出遇到错误或警告时,会在错误视图显示问题。 你也可以使用自定义正则表达式来匹配编译器输出,以自定义问题的格式。 ### 回答2: 在VSCode使用Swift进行开发时,我们可以通过tasks.json配置文件的problemMatcher字段来定义问题匹配器,以便在编译和运行代码时捕获错误和警告信息。以下是如何填写problemMatcher字段的示例: 首先,打开VSCode的工作区文件夹,并创建一个名为tasks.json的文件,如果已经存在则直接编辑该文件。 然后,开始填写problemMatcher字段,以下是一个简单的示例: { "version": "2.0.0", "tasks": [ { "label": "Swift Build", "command": "swift build", "type": "shell", "problemMatcher": { "owner": "swift", "fileLocation": ["relative", "${workspaceFolder}"], "pattern": { "regexp": "^(.*):(\\d+):(\\d+): (warning|error): (.*)$", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } 在这个示例,我们定义了一个名为"Swift Build"的任务,用于构建Swift代码。在problemMatcher字段: - owner字段指定了问题匹配器的所有者,这里我们使用"swift"作为匹配器的所有者。 - fileLocation字段定义了文件路径的位置,可以选择使用"relative"或"absolute"。 - pattern字段定义了问题匹配的正则表达式模式,用于对编译输出进行匹配。 - regexp字段是问题匹配的正则表达式模式。 - file、line、column、severity和message字段分别对应了输出信息的文件、行、列、严重等级和错误信息。 根据具体的编译器输出信息格式,你可能需要根据需要调整正则表达式模式和匹配字段的顺序或数量。 通过以上配置VSCode将会根据问题匹配器捕获到的输出信息,定位到相关的源文件和位置,并将错误和警告信息直接显示在问题面板,以便我们能够更方便地调试和解决代码的问题。 ### 回答3: 在VS Code,使用tasks.json文件进行配置时,problemMatcher字段用于配置错误和警告的正则表达式,以及如何将它们转化为问题列表。 通常,Swift的编译错误和警告以如下形式出现: ``` /Users/username/Path/To/File.swift:10:1: error: Message ``` 我们可以使用正则表达式来匹配这些错误和警告信息,并将它们转化为问题列表。以下是一个示例的tasks.json文件配置,用于对Swift编译器输出进行匹配: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "swiftc", "args": ["${file}"], "problemMatcher": { "fileLocation": ["relative", "${workspaceFolder}"], "pattern": { "regexp": "/(?<file>.*):(\\d+):(\\d+): (warning|error): (.*)/", "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 } } } ] } ``` 上述配置,我们定义了一个名为“build”的任务,其类型为“shell”,将使用`swiftc`命令编译`${file}`所在的文件。问题匹配器的文件位置设置为相对路径,并使用正则表达式将错误和警告信息提取出来。其,`file`、`line`、`column`、`severity`和`message`分别对应于正则表达式的捕获组。 通过如上配置,VS Code将能够在编译时自动捕获和展示Swift编译器所产生的错误和警告信息。 请注意,实际配置,可能需要根据具体的编译器输出进行调整,以适应不同的错误和警告信息格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值