From 6f04b531f8c71a1d115fd03e8716b6501b5f2fd2 Mon Sep 17 00:00:00 2001 From: "rick.chan" Date: Thu, 6 Jun 2024 09:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E8=AF=B4=E6=98=8E=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: rick.chan --- .../VSCode/VSCode_使用_Clangd_插件.md | 96 ++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/Software/Applications/VSCode/VSCode_使用_Clangd_插件.md b/Software/Applications/VSCode/VSCode_使用_Clangd_插件.md index 432d7de..2fa0c2c 100644 --- a/Software/Applications/VSCode/VSCode_使用_Clangd_插件.md +++ b/Software/Applications/VSCode/VSCode_使用_Clangd_插件.md @@ -7,6 +7,8 @@ Clangd 是一个基于 Clang 的语言服务器,它提供了代码智能感知 - 实时错误和警告检查:Clangd 可以实时检查代码中的语法错误、潜在问题和警告信息,帮助开发者及早发现和修复问题。 - 重构支持:Clangd 提供了一些重构功能,如重命名变量、提取函数等,可以简化代码重构的过程。 +需要代码分析和跳转的话要安装 clangd,需要代码格式化则需要安装 clang-format,并能够在系统 PATH 种找到它们。 + 在 VSCode 中使用 Clangd 需要先安装 clangd (LLVM) 插件,然后使用 .clangd 或 .vscode/settings.json 进行项目配置。 ## 1. 基本使用配置 @@ -76,7 +78,9 @@ CompileFlags: } ``` -### 1.3. .clang-format 文件 +### 1.3. clang-format + +使用代码格式化功能需要在 VSCode User Setting 中使能 Text Editor->Formatting->Formate On Type。 ```clang-format BasedOnStyle: LLVM @@ -93,6 +97,96 @@ IndentCaseLabels: false ColumnLimit: 120 ``` +```clang-format +--- +Language: Cpp +#圆括号之后,多行内容,进行对齐 +AlignAfterOpenBracket: Align + +#连续赋值时,对齐所有等号 +AlignConsecutiveAssignments: true +#连续声明时,对齐所有声明的变量名 +AlignConsecutiveDeclarations: true + +#连续宏定义时,对齐所有定义值 +AlignConsecutiveMacros: AcrossEmptyLinesAndComments +#AlignOperands Align将对齐分割到多行上的单个表达式的操作数 +AlignOperands: Align +#对齐连续的尾随的注释 +AlignTrailingComments: true +#允许将一个函数声明的所有参数移到下一行. +AllowAllParametersOfDeclarationOnNextLine: false +#将简单的语句块放到一个单行 +AllowShortBlocksOnASingleLine: false +#if (a) return;放单行 属性:Never、WithoutElse没有else的可以放单行、OnlyFirstIf只有第一个if放单行、AllIfsAndElse总是把简短的if, else if和else语句放在同一行。 +AllowShortIfStatementsOnASingleLine: Never +#BinPackArguments:如果为false,函数调用的参数要么全部在同一行,要么各有一行。 +BinPackArguments: false +#BinPackParameters:如果为false,函数声明或函数定义的参数将全部在同一行或各有一行。 +BinPackParameters: false + +BreakBeforeBraces: Custom +# 控制单独的大括号换行事件,只有当BreakBeforeBraces设置为Custom时才有效 +BraceWrapping: + #使控制语句(if/for/while/switch/..)换行。 + AfterControlStatement: true + #使枚举定义换行。 + AfterEnum: true + #使函数定义换行。 + AfterFunction: true + #使结构定义换行。 + AfterStruct: true + #使共同体定义换行。 + AfterUnion: true + #在else之前换行。 + BeforeElse: true + #换行大括号缩进。 + IndentBraces: false + #空函数是否可以放在单行:flase允许 true不允许 + SplitEmptyFunction: true + #空类,结构或联合主体是否可以放在单行:flase允许 true不允许 + SplitEmptyRecord: true + #空namespace是否可以放在单行:flase允许 true不允许 + SplitEmptyNamespace: true + +SpaceBeforeParens: Custom +#控制圆括号前的单独空格,只有当SpaceBeforeParens设置为Custom时才有效 +SpaceBeforeParensOptions: + #在控制语句关键字(for/if/while…)和开括号之间放置空格 + AfterControlStatements: true + #在函数声明名称和开括号之间不允许使用空格 + AfterFunctionDeclarationName: false + +#指针对齐:右 +PointerAlignment: Right +# 三元运算符将被放置在换行后 +BreakBeforeTernaryOperators: true +#每行字符的限制,0表示没有限制 +ColumnLimit: 0 +#缩进空格宽度:4 +IndentWidth: 4 +#保留在赋值操作符之前的空格 +SpaceBeforeAssignmentOperators: true +#不要排序include的头文件 +SortIncludes: Never +#允许重新排版注释 +ReflowComments: true +#尾行注释前的空格数 +SpacesBeforeTrailingComments: 2 +#连续空行的最大数量 +MaxEmptyLinesToKeep: 1 +#使用tab字符: Never从不使用, ForIndentation仅在缩进时使用制表符, ForContinuationAndIndentation, Always +UseTab: Never +#SpacesInParentheses如果为真(true), 将会在“(”之后和“)”之前插入空格。 +SpacesInParentheses: false +#SpacesInSquareBrackets如果为真(true),将会在“[”之后和“]”之前插入空格。 +SpacesInSquareBrackets: false +``` + +手动格式化当前文件:右击当前打开的文档,选择“格式化文档”。 + +如果想格式化一整个文件夹,可以安装 VSCode 的 format files 插件,然后在文件窗口种右击要格式化的文件夹,选择“Start Formate Files: This Folder”。 + ## 2. 使用 VSCode+Clangd 开发 Linux 内核 如果直接使用 VSCode+Clangd 阅读内核代码的话,会存在一个问题:很难确定哪些 Linux 内核源码源码文件被编译使用了,哪些没有。此时使用 Bear 工具配合使用就可以很好的解决这个问题。Bear 是 Build EAR 的缩写,[官方](https://github.com/rizsotto/Bear)介绍如下: