VSCode系列 - 如何用VSCode搭建C++高效开发环境(2)

打印 上一主题 下一主题

主题 867|帖子 867|积分 2601

1. 插件的用法

1.1. C/C++

1.1.1. 插件介绍

在VSCode下进行C/C++开发,C/C++插件是最重要、功能最强大、也是最复杂的一个插件。我们从C/C++的插件配置也能看出端倪:整个插件有158项配置,包罗7大功能模块:

  • IntelliSense: 代码智能提示、补全、跳转等功能,集成了C++ Intellisense插件的险些所有功能。
  • Formatting: 代码格式化器,可对代码进行自动格式化。
  • Code Documentation: 通过代码(注释)生成文档,定义注释的样式,集成Doxygen等工具。
  • Code Analysis: 代码分析器,对代码的错误、风格等进行检查,集成了Clang-Tidy。
  • Debugging: Debug调试器。
  • Resource Management: 资源管理器。
  • Miscellaneous: 其他杂项配置。

进行C/C++开发,C/C++是必装的一个插件,因为没有这个插件,你跟在记事本里写代码没有太大区别。
1.1.2. 插件配置

固然C/C++这个插件功能很多很复杂,但是我们也并不需要把158项配置全都相识完。因为大部分配置我们直接用默认的就可以了,并不需要逐个去相识他,默认配置即是最佳配置。我们只需要相识一小部分常用配置即可。
settings.json:
  1. {
  2.     // 启用|禁用错误提示,可选值: enabled, disabled
  3.     "C_Cpp.errorSquiggles": "enabled",
  4.     // Intellisense的配置。启用|禁用智能提示,可选值:Default、Disabled
  5.     "C_Cpp.autocomplete": "Default",
  6.     // C++语言编辑哪些内容时会进行智能提示和补全
  7.     "[cpp]": {
  8.         "editor.quickSuggestions": {
  9.             "comments": "on", // 代码注释
  10.             "strings": "on", // 常量字符串
  11.             "other": "on" // 其他
  12.         }
  13.     },
  14.     // C语言编辑哪些内容时会进行智能提示和补全
  15.     "[c]": {
  16.         "editor.quickSuggestions": {
  17.             "comments": "on", // 代码注释
  18.             "strings": "on", // 常量字符串
  19.             "other": "on" // 其他
  20.         }
  21.     }
  22. }
复制代码
1.2. Clang-Format


  • 下载LLVM
点击 llvm-project/releases 进入LLVM项目标二进制下载页面,下载最新版本的Windows安装包。


  • 安装LLVM
将下载后的安装包clang+llvm-18.1.8-x86_64-pc-windows-msvc.tar.xz解压后拷贝到自己的软件安装目次下(如:C:\software\clang-llvm-18.1.8),bin目次下会有个 clang-format.exe,这个就是我们需要的代码格式化器。

  • 配置码格式化器
打开Clang-Format插件的配置页面:
vscode -> Settings -> Extensions -> Clang-Format configuration
方式一:
将clang-format.exe的绝对路径设置到Executable。

方式二:
将C:\software\clang-llvm-18.1.8\bin目次添加到系统环境变量的Path中,VSCode配置页的Executable填写clang-format。

如果不配置 clang-format.exe 路径,格式化代码就会报错如下:
  1. The 'clang-format' command is not available. Please check your clang-format.executable user setting and ensure it is installed.
复制代码

  • 格式化代码的快捷键
格式化部分代码: 选中部分代码,ctrl + k , ctrl + f
格式化所有代码: shift + alt + f。
格式化整个代码源文件: 编辑区域右键 -> Format Document。

  • 设置代码风格样式
打开Clang-Format插件的配置页面:vscode -> Settings -> Extensions -> Clang-Format configuration
Fallback Style:选择你喜好的风格样式,可以使用以下这些值,这些都是最受欢迎的C++代码风格样式:
LLVM, Google, Chromium, Mozilla, WebKit。


  • 自定义代码样式
如果以上这些代码风格的样式都不能满意你的需求,可以自定义代码风格样式,也可以基于某种特定的代码风格做一些符合自己习惯的样式调解。
在项目标根目次下创建一个.clang-format文件,并在文件中写入自定义的代码风格样式,具体格式定义的使用规则可以参考Clang-Format Style Options
以下是个人的.clang-format配置,可以作为Demo提供参考:
  1. # clang-format的般般: 18.1.8
  2. # 基于Mozilla的样式进行自定义
  3. Language: Cpp
  4. BasedOnStyle: Mozilla
  5. # 代码缩进:空格数
  6. IndentWidth: 4
  7. # Tab键设置:不使用换行符\t(使用空格)
  8. UseTab: Never
  9. # Tab键设置:4个空格
  10. TabWidth: 4
  11. # 权限关键字(public, private, protected): 往左缩进4个字符
  12. AccessModifierOffset: -4
  13. # 最大列宽:99
  14. ColumnLimit: 99
  15. # # 大括号({})换行
  16. # BreakBeforeBraces: Allman
  17. # # 短函数的处理策略:只有空函数才会合并成一行
  18. # AllowShortFunctionsOnASingleLine: Empty
  19. # # 短条件语句的处理策略:从不合并成一行
  20. # AllowShortIfStatementsOnASingleLine: Never
  21. # # 短循环语句的处理策略:从不合并成一行
  22. # AllowShortLoopsOnASingleLine: false
  23. # # 短代码块的处理策略:只有空代码块才会合并成一行
  24. # AllowShortBlocksOnASingleLine: Empty
  25. # # 模板声明后的换行策略:总是换行
  26. # AlwaysBreakTemplateDeclarations: Yes
  27. # # 指针的对齐方式:右对齐
  28. # PointerAlignment: Right
  29. # # # 指针(引用)的对齐方式:会分析文件内的大部分指针的对齐方式来决定自己的策略
  30. # DerivePointerAlignment: true
复制代码
1.3. cpp-check-lint

cpp-check-lint基于cppcheck和cpplint的C++代码检查工具,他将cppcheck、cpplint和VSCode完善的集成在一起。对cppcheck和cpplint有依赖,此中cppcheck需要自己另外手动安装,并将可执行文件的路径配置到插件的cpp-check-lint.cppcheck.--executable。
1.3.1. cpplint

cpplint是一个用于检查C++代码规范的工具,它可以帮助我们自动化地检查代码,发现潜在的编码题目,确保代码风格的同等性和规范性,提高代码质量。cpplint的代码检查会遵照 Google C++ Style Guide。cpplint工具自己是有Python实现的,可以通过pip install来安装。
cpplint侧重于C++代码规范和风格的检查。
1.3.2. cppcheck

cppcheck是一个 C/C++ 静态代码分析工具,检测编译器通常无法检测到的错误范例,目标是没有误报。
cpplint侧重于C++代码的错误、潜在安全题目、潜在性能题目标检查。
检查范围包罗:
  1. 自动变量检查;
  2. 数组的边界检查;
  3. class类检查;
  4. 过期的函数,废弃函数调用检查;
  5. 异常内存使用,释放检查;
  6. 内存泄漏检查,主要是通过内存引用指针;
  7. 操作系统资源释放检查,中断,文件描述符等;
  8. 异常STL 函数使用检查;
  9. 代码格式错误,以及性能因素检查。
复制代码
1.3.3. 插件的使用


  • 下载并安装Cppcheck(Windows通过安装包安装的话,安装完后要设置Path环境变量)。
  • 打开命令行终端,执行cppcheck --version检查是否安装正常,有正常输出版本号说明安装成功。
  • 重启VSCode.
  • 打开配置页(vscode -> Settings -> Extensions -> cpp-check-lint)完成相应的配置:
关键配置说明如下:
  1. # 是否启用cpp-check-lint插件
  2. "cpp-check-lint.--enable": true,
  3. # 是否启用cppcheck检查
  4. "cpp-check-lint.cppcheck.--enable": true,
  5. # 如果已配置Path环境变量,可直接填写cppcheck,否则需要填写绝对路径
  6. "cpp-check-lint.cppcheck.--executable": "cppcheck",
  7. # 使用什么语言进行检查,可以选择:c、c++
  8. "cpp-check-lint.cppcheck.--language=": "c++",
  9. # 使用的C++标准
  10. "cpp-check-lint.cppcheck.--std_c++=": "c++11",
  11. # 使用的C语言标准
  12. "cpp-check-lint.cppcheck.--std_c=": "c11"
  13. # 是否支持内联函数
  14. "cpp-check-lint.cppcheck.--inline-suppr": false,
  15. # 是否开启文件保存时立刻检查该文件
  16. "cpp-check-lint.cppcheck.--onsave": true,
  17. # 是否开启快速修复功能
  18. "cpp-check-lint.cppcheck.--quick_fix": false,
  19. # 开启额外的检查,可以选择一项或多项(多项时用','分割)。可以是以下类型值:
  20. # warning: 开启警告消息
  21. # style: 开启代码样式(规范)检查
  22. # performance: 开启代码性能检查
  23. # portability: 开启可移植性检查
  24. # information: 启用info信息检查
  25. # unusedFunction: 启用 未使用的函数 检查
  26. # missingInclide: 未包含头文件时发出警告
  27. # all: 以上所有类型检查
  28. "cpp-check-lint.cppcheck.--enable=": "all",
  29. # 是否启用cpplint检查
  30. "cpp-check-lint.cpplint.--enable": true,
  31. # 如果已配置Path环境变量,可直接填写cpplint,否则需要填写绝对路径
  32. "cpp-check-lint.cpplint.--executable": "cpplint"
  33. # 代码行长度限制
  34. "cpp-check-lint.cpplint.--linelength=": 120,
  35. # 是否开启文件保存时立刻检查该文件
  36. "cpp-check-lint.cpplint.--onsave": true,
  37. # 是否开启快速修复功能
  38. "cpp-check-lint.cpplint.--quick_fix": true,
  39. # 会检查的文件后缀,可以这些值:hxx,h++,cxx,cc,hh,h,cpp,cuh,c,hpp,c++,cu
  40. "cpp-check-lint.cpplint.--extensions=": "hxx,h++,cxx,cc,hh,h,cpp,c,hpp,c++"
  41. # 支持的头文件后缀
  42. "cpp-check-lint.cpplint.--headers=": "hxx,h++,hh,h,hpp",
复制代码
1.4. C/C++ Advanced Lint

1.4.1. 插件介绍

C/C++ Advanced Lint是C/C++静态代码分析工具,支持:1. 自动识别可用的静态代码分析工具,2. 代码编写过程中执行检测。与cpp-check-lint是同范例的插件,最大的区别是支持的代码分析工具的钟磊和数量差别。
cpp-check-lint 只支持:

  • CppCheck
  • CppLint
C/C++ Advanced Lint支持:

  • CppCheck
  • Clang
  • FlawFinder
  • PC-lint Plus
  • Flexelint or PC-lint
  • lizard
C/C++ Advanced Lint要正常使用,至少需要安装一种上面的代码分析工具(可以同时安装和启用多个分析工具)。
1.4.2. 插件配置

关键配置:
  1. {
  2.   // 启用C/C++ Advanced Lint插件
  3.   "c-cpp-flylint.enable": true,
  4.   // 什么时候执行代码检查,可填写:onType、onSave、onBuild
  5.   "c-cpp-flylint.run": "onSave",
  6.   // 检测的语言类型,可线性:c、c++
  7.   "c-cpp-flylint.language": "c++",
  8.   // C和C++的标准,可填写:c11、c++11、c++14、c++17、c++20
  9.   "c-cpp-flylint.standard": [
  10.       "c11",
  11.       "c++11"
  12.   ]
  13. }
复制代码
代码分析工具的配置:


  • Cppcheck的配置可以参考“5.2.3. 插件的使用”的相关内容。
  • 其他代码分析工具的配置,各人可以自己阅读对应的官方文档。
  • 只需要配置已安装并启用的代码分析工具。
1.5. Bracket Pair Colorizer

1.5.1. 插件介绍

插件功能:成对的括号标志成差别的颜色,提高代码的可读性。
插件说明:该插件已废弃,因为最新版本(我的1.91.1版本已经内置了)的VSCode已经内置了该功能。
1.5.2. 功能配置

既然VSCode已经内置了该功能,我们将不在需要安装这个插件,直接在VSCode的设置中配置该功能即可。

  • 打开配置页面:vscode -> Settings
  • 在搜索框种输入@id:editor.bracketPairColorization.enabled @id:editor.guides.bracketPairs。
  • Editor › Guides: Bracket Pairs的三个可选参数,含义分别如下:

    • false: 禁用括号对引导线。
    • true: 启用括号对引导线。
    • active: 只对当前光标所在的括号对启用括号对引导线。


1.6. Code Runner

1.6.1. 插件介绍

Code Runner是一款VSCode的插件,它可以让你在VSCode中运行C、C++、Java、Python、JavaScript、PHP、Go、Swift、Perl、Ruby、R等语言的代码。
通过这个插件可以快速的编译、运行C++代码,在编写和调试一些Demo代码时非常方便。(在编译大型项目代码时照旧发起用CMake、QT、Visual Studio等工具)。
1.6.2. 插件配置

settings.json:
  1. {
  2.     // 配置Code Runner针对C++语言的运行脚本
  3.     "code-runner.executorMap": {
  4.         // Linux下通过GCC编译器便于和运行
  5.         "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
  6.         // ... 其他语言
  7.     },
  8.     // 运行代码时是否在终端中打开,可选值:true、false
  9.     "code-runner.runInTerminal": true,
  10.     // 设置终端控制台的编码,65001是UTF-8编码
  11.     "terminal.integrated.shellArgs.windows": [
  12.         "/K chcp 65001 >nul"
  13.     ]
  14. }
复制代码
1.6.3. 插件使用

方法一:在要执行的.cpp文件右键 -> Run Code
方法二:在VSCode的命令面板中输入:Code Runner: Run Code,然后选择Run Code按回车
方法三:快捷键:Ctrl + Alt + N
1.7. TODO Highlight

1.7.1. 插件介绍

TODO Highlight是一款VSCode的插件,它可以高亮表现代码中存在的TODO和FIXME等注释,方便开发者快速定位代码中需要解决的任务。
1.7.2. 添加高亮关键字


  • 进入设置页面: vscode -> Settings -> Extensions -> TODO Highlight。
  • 在 TODOhighlight:Keywords配置项点击Edit in settings.json。
  • 在"todohighlight.keywords"中增加需要定义的关键词。
插件默认只配置了两个关键字:TODO: 和 FIXME:,留意后面需要跟:才气表现高亮。定义如下:
  1. {
  2.     // ...
  3.     "todohighlight.keywords": [
  4.         {
  5.             "text": "TODO:",
  6.             "color": "#fff",
  7.             "backgroundColor": "#ffbd2a",
  8.             "overviewRulerColor": "rgba(255,189,42,0.8)"
  9.         },
  10.         {
  11.             "text": "FIXME:",
  12.             "color": "#fff",
  13.             "backgroundColor": "#f06292",
  14.             "overviewRulerColor": "rgba(240,98,146,0.8)"
  15.         }
  16.     ]
  17. }
复制代码
我的需求是:

  • 关键不加:也要能高亮。
  • 关键字要同时支持巨细写。
修改后的配置如下:
  1. {
  2.     // ...
  3.     "todohighlight.keywords": [
  4.         {
  5.             "text": "TODO",
  6.             "color": "#fff",
  7.             "backgroundColor": "#ffbd2a",
  8.             "overviewRulerColor": "rgba(255,189,42,0.8)"
  9.         },
  10.         {
  11.             "text": "FIXME",
  12.             "color": "#fff",
  13.             "backgroundColor": "#f06292",
  14.             "overviewRulerColor": "rgba(240,98,146,0.8)"
  15.         },
  16.         {
  17.             "text": "todo",
  18.             "color": "#fff",
  19.             "backgroundColor": "#ffbd2a",
  20.             "overviewRulerColor": "rgba(255,189,42,0.8)"
  21.         },
  22.         {
  23.             "text": "fixme",
  24.             "color": "#fff",
  25.             "backgroundColor": "#f06292",
  26.             "overviewRulerColor": "rgba(240,98,146,0.8)"
  27.         }
  28.     ]
  29. }
复制代码
2. C++开发常用的快捷键

Windows/LinuxmacOS功能描述Alt + OOption + O头文件(.h)与源文件(.cpp)之间切换F12Fn + F12快速跳转到变量或函数的定义Shift + F12Shift + Fn + F12查看所有引用,如:变量或函数的定义和所有被调用的地方Alt + F12Cmd + Shift + F10Peek(窥视)定义: 在不离开当前代码上下文的情况下查看符号的定义3. 参考文档

https://clang.llvm.org/docs/ClangFormatStyleOptions.html
https://dev.to/dhanu0510/how-to-configure-c-code-formatting-in-visual-studio-code-4d5m
各人好,我是陌尘。
IT从业10年+, 北漂过也深漂过,目前暂定居于杭州,未来不知还会飘向何方。
搞了8年C++,也干过2年前端;用Python写过书,也玩过一点PHP,未来还会折腾更多东西,不死不休。
感谢各人的关注,等待与你一起成长。
【SunLogging】
扫码二维码,关注微信公众号,阅读更多精彩内容
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表