补充说明信息。

Signed-off-by: rick.chan <cy@haoan119.com>
This commit is contained in:
rick.chan 2024-06-06 09:41:07 +08:00
parent 1a79bbd87f
commit 6f04b531f8
1 changed files with 95 additions and 1 deletions

View File

@ -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)介绍如下: