c++相关vscode插件记录


1.  c/c++

 Windows, Linux, and macOS上c/c++的跨平台开发。特征:智能感知、调试、源代码格式化等

 2. CMake Tools

 特征:配置、构建和调试一c++ CMake项目

依赖“1.c/c++”插件、“CMake”

  • 命令面板中的命令:
  • 其次,状态栏也可以配置、构建:

  • 记录1:设置根CMakeList.txt路径(相对当前打开的文件夹路径)

体现在全局(设置的工作区).vscode/setting.json中:

"cmake.sourceDirectory": "${workspaceFolder}/src", //cmake插件,找源CMakeLists.txt

  • 记录2:源码引用的头文件遇到红色波浪线,错误如下:

基于 configurationProvider 设置提供的信息检测到 #include 错误。已针对此翻译单元(XXXX)禁用波形曲线。C/C++(1696)

这种情况需要在settings.json中添加一个配置项,使配置的信息来源于cmake。

“C_Cpp.default.configurationProvider”: “ms-vscode.cmake-tools”

项目要求之一:CPPLint静态检查。为了应对此项要求,安装三个插件:cpplint, Clang-Format, koroFileHeader

3. cpplint

特征:打开和保存源文件时,检查CPP和c的编码风格

  • 设置CppLint路径:

体现在全局(设置的工作区).vscode/setting.json中:

"cpplint.cpplintPath": "/home/zz/GitLab/weblmt/cpplint.py", //cpplint插件找cpplint.py的路径

  • 命令面板中的命令:

4. Clang-Format

【这段新增于2021-11-05】安装clang-format插件的替代方案:

插件1 c/c++ 中已经有了格式化的方案:

  其中:Clang_format_style 决定格式化形式,若为file,则调用在workspace中的.clang-format

clang-format工具使用.clang-format来实现自定义格式化,使用" clang-format -style=可选格式名 -dump-config > .clang-format "导出clang-format,其中可选格式名为:LLVM、Google等。若要在团队中统一格式,则配置此文件即可。

C_Cpp: Clang_format_fallback Style选项则是在 Clang_format_style=file失效(即找不到.clang-format文件时)的应对方案。参考截图中可以配置的value。

在这里我的方案是,Clang_format_style=file,以应对以后团队中为统一格式而生成.clang-format文件。目前没有此文件,所以走Clang_format_fallback Style选项中的{key:value...},即{ BasedOnStyle: Google, ColumnLimit: 120}//这里我只有列最大120的需求(ps,vscode编辑器中显示列标尺的设置:“editor.rulers:[120]”)

最后,在代码编辑器中,右键-使用...格式化文档-配置默认格式化程序,改为c/c++插件即可。

【这段新增于2021-11-05,结束】

  "3. cpplint"只能按照指定脚本(+ CPPLINT.cfg)的Google Stype检查C++代码是否符合要求并指出不符合需要修改的地方,但是没有format的功能。可以使用Clang-Format将源码格式化成google风格。

  • 首先,在环境中安装clang-format可执行文件,先在bash中执行:
sudo  apt-get install clang-format
  • 安装插件
  • 设置1:在此插件的扩展设置中搜索关键词:"Clang-format: Fallback Style", "Clang-format: Style"。此两项设置为 Google

体现在全局(设置的工作区).vscode/setting.json中:

"clang-format.fallbackStyle": "Google",
"clang-format.style": "Google"

  • 设置2:保存源码时自动保存。

"editor.formatOnSave": true, //保存时自动化格式化(配置了clang-format为默认的格式化工具,其中配置了google风格)

  • 此外也可以鼠标右键用格式化

备注:我理解的此插件是调用clang-format工具。可以设置格式化规则:GOOGLE、LLVM等。要是设置成file,就按照路径下的 .clang-format文件 规则来自定义格式化。这里设置为Google风格格式化,但是并非项目中"3. cpplint"设置的项目中的CppLint路径(此脚本按照CPPLINT.cfg规则进行删减),而设置的google风格为全集。比如CPPLINT.cfg中限制的一行代码长度为120(linelength=120),但是经过此格式化以后按照GOOGLE风格默认的80。

因此想要自定义+简单的话 建议使用上述c++插件中的Clang_format_fallback Style中自定义,这样不用自己生成.clang-format文件。

5. koroFileHeader

特征:在vscode中用于生成文件头部注释和函数注释的插件。为满足cpplint检查中源码中头部需要有版权声明等要求。利用此插件按照既定格式插入头部、函数注释。

  • 设置: Custom Made 对于头部注释、Cursor Mode 对应函数注释。

体现在全局(设置的工作区).vscode/setting.json中:

"fileheader.customMade": { //快捷键 ctrl+cmd+i,按照下面的key/value生成文件头注释
"Copyright": "Copyright Datang Mobile, Inc.",
"Author": "zhangzhong",
"Date": "Do not edit",
"Description": "file content",
},

  • 快捷键:

    文件头部添加注释:快捷键:window:ctrl+alt+i,mac:ctrl+cmd+i, linux: ctrl+meta+i

    在光标处添加函数注释:快捷键:window:ctrl+alt+t,mac:ctrl+cmd+t,linux: ctrl+meta+t

综上,.vscode/setting.json中的配置如下:

"editor.rulers": [
        120
    ], //VScode 显示垂直标尺
    "editor.formatOnSave": true, //保存时自动化格式化(配置了clang-format为默认的格式化工具,其中配置了google风格)
    //不需要 formatOnSave ,用快捷键 ctrl+K,s{"key": "ctrl+k s","command": "workbench.action.files.saveWithoutFormatting"}
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", //配置configurationProvider,否则,找自定义头文件时有烦人的波浪线
    //C_Cpp: Clang_format_style 配置了file(即从当前目录或父目录中的 .clang-format 文件加载样式)
    //使用样式 file 调用 clang-format 但找不到 .clang-format 文件时,则用"C_Cpp.clang_format_fallbackStyle"
    "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, ColumnLimit: 120}", //这里我只需要行列宽度为120的需求
    "cmake.sourceDirectory": "${workspaceFolder}/src", //cmake插件,找源CMakeLists.txt
    "cpplint.cpplintPath": "/home/zz/GitLab/xx/cpplint.py", //cpplint插件找cpplint.py的路径
    "fileheader.configObj": { // 插件配置项
        "specialOptions": { //特殊字段允许自定义
            "Description": "brief", //Description修改为brief;Description有特殊含义,比如:移动光标到Description :所在行
            "特殊字段": "自定义比如LastEditTime/LastEditors"
        },
        "functionWideNum": 13, // 函数注释等宽设置(0 默认关闭 设置一个正整数即可开启 比如12)
        "colon": [
            ": ",
            " "
        ], // 函数注释中的:去除。所有文件的头部注释和函数注释的默认值(": ", ": " )
        "functionParamsShape": [ //函数参数外形自定义(默认["{", "}"])
            "[",
            "]",
            "{",
            "}"
        ],
    },
    "fileheader.customMade": { //文件头注释。快捷键 ctrl+cmd+i
        "Copyright": "Copyright xx Mobile, Inc.",
        "Author": "xx",
        "Date": "Do not edit", // 设置后默认设置文件生成时间
        "Description": "file content",
    },
    "fileheader.cursorMode": { //函数注释
        "Description": "",
        "param": "",
        "return": "",
    },

参考

如何在vscode下将C++代码格式化成Google Style

vscode C++ 开发配置 google code style

VsCode设置一行代码固定长度

vscode如何进行代码注释定制(koroFileHeader)

vs code+cmake开发,头文件显示找不到

VScode C++头文件问题的终极解决办法

clang-format的介绍和使用

VS Code C++ 代码格式化方法(clang-format)