vscode — текстовый редактор с открытым исходным кодом, разработанный Microsoft на основе электронных технологий. Благодаря своим превосходным кроссплатформенным свойствам и богатой экосистеме плагинов vscode в настоящее время стал самым популярным текстовым редактором.
Оригинальный LSP (протокол языкового сервера) от vscode привнес новые идеи в последующее процветание экосистемы редактора.
vscode по умолчанию поддерживает подсказки синтаксиса c/c++, но вам необходимо установить плагин для поддержки подсветки синтаксиса c/c++. В настоящее время vscode имеет два основных плагина.
Официальный плагин IntelliSense для C/C++ от Microsoft поддерживает синтаксические подсказки, завершение кода, реконструкцию кода и другие функции. Ниже приведен пример конфигурации для вызова 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
]