parent
1a79bbd87f
commit
6f04b531f8
|
@ -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)介绍如下:
|
||||
|
|
Loading…
Reference in New Issue