vscode 是微软基于 electron 技术,开发的一款开源文本编辑器。由于出色的跨平台属性和丰富的插件生态,vscode 已成为目前最流行的文本编辑器。
vscode 独创的 LSP(language server protocol),为后续编辑器生态的繁荣,带来了新思路。
vscode 默认支持 c/c++ 语法提示,但是需要安装插件才能支持 c/c++ 语法高亮。目前 vscode 有两大插件。
微软官方 C/C++ IntelliSense 插件,支持语法提示、代码补全、代码重构等功能。以下是一个调用 ClangTidy 的示例配置。
"C_Cpp.codeAnalysis.clangTidy.checks.enabled": [
"google-*",
"modernize-*",
"performance-*",
"clang-analyzer-*",
"misc-*"
],
"C_Cpp.codeAnalysis.clangTidy.checks.disabled": [
"modernize-macro-to-enum",
"misc-include-cleaner"
],
ClangTidy 是一个静态代码分析工具。
Clangd 是一个 C/C++ 语言服务器,支持语法提示、代码补全、代码重构等功能。由于 llvm 项目本身发展很快,如果想体验最新稳定版 Clangd ,可以自行从官网安装。
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
cat > /etc/apt/sources.list.d/llvm-toolchin-focal-18.list << EOF
deb http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal main
deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main
EOF
sudo apt update
sudo apt install clangd-18 llvm-18 clang-18
clangd 版本高于 13.0.0 以上版本才支持 enable-config 参数,对应的 vscode 配置如下:
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
"-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
"--enable-config",
"--pretty",
"--all-scopes-completion",
"--cross-file-rename",
// "--log=error",
// "--completion-style=bundled",
// "--header-insertion-decorators",
// "--background-index",
// "-j=5",
// "--pch-storage=disk",
// "--function-arg-placeholders=false",
// "--compile-commands-dir=build",
// "-header-insertion=never",
],
sudo apt install clangd llvm clang
vscode 对应的配置如下:
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.onConfigChanged": "restart",
// 等价于 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
"cmake.exportCompileCommandsFile": true,
"clangd.fallbackFlags": [
"-I${workspaceFolder}/include",
],
"clangd.inactiveRegions.useBackgroundHighlight": true,
"clangd.path": "/usr/bin/clangd-18",
"clangd.arguments": [
"--pretty",
"--clang-tidy",
"--clang-tidy-checks=cppcoreguidelines-*,performance-*,modernize-,google-",
"-j=5"
]
clangd 配置有入侵式和非入侵式,入侵式是指在项目根目录建立 .clangd 文件,非入侵式是指在系统配置目录建立 config.yaml 文件。
clangd 配置文件位置:
配置内容如下:
# clangd configuration file enable with --enable-config argument
# clangd required version upper 13.0.0
Index:
Background: Build
CompileFlags:
Add: [-xc, -Wall, -Wno-unused-function, -std=gnu99]
Compiler: clang
Diagnostics:
UnusedIncludes: None
ClangTidy:
Add: [
"google-*",
"modernize-*",
"performance-*",
"clang-analyzer-*",
"misc-*"
]
Remove: [
modernize-macro-to-enum
]
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。