文章目录
- 前言
- c++|vscode|clang-format
- c++|vs|clang-format
- c++|.clang-format
- 其他
- 附录
- `Visual Studio`格式在vs和vscode中不同
- 无法从繁体切换到简体
- 我的vs code配置
前言
一个项目中的代码,可能来自不同的地方。不管是多人合作,还是ctrl-c/ctrl-v
,都有可能出现代码风格的不一致。关于代码风格的介绍,可以参考:Google 开源项目风格指南——中文版 — Google 开源项目风格指南
因为我平常基本使用C++,所以本文侧重于,找出一个使得C++代码风格一致的方法。方法需要满足下面需求:
-
平台无关:C++的功能代码可能需要运行在不同平台,如window和linux。所以,统一风格的方法,不能受平台限制。
-
与软件无强相关。不同的人可能使用不同的编辑器。如vs code,vs,vim等。所以,统一风格的方法,不能和软件强行绑定。
-
便捷性。项目中的其他人可以方便的使用。这点主要时看配置能否导出,导出后可以无缝使用。
C++中,我目前尝试过的有 EditorConfig Specification和ClangFormat documentation。
首先是EditorConfig
,它支持的格式很少。vscode的EditorConfig
插件,只支持Supported Pairs。如果需要这样的设置,比如,函数的大括号换行,函数内部的大括号不换行,则做不到。
ClangFormat
我试用了,还不错。它支持C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C#
代码的格式化。支持集成到Visual Studio Code
和VisualStudio
。
项目记录下格式代码的具体操作。
c++|vscode|clang-format
需要先安装下插件:C++ programming with Visual Studio Code
如果是在图形界面中配置,可以下面这样填写。C_Cpp: Clang_format_fallback Style
中,选填非Visual Studio
的选项即可,比如LLVM
,google
等。我这里选的是google
。C_Cpp: Clang_format_style
中选填file
,表示如果存在.clang-format
文件,优先使用 .clang-format
中的配置。(至于为什么不能选Visual Studio
,因为它在vs和vscode中有点不一样,见附录。)
但我更喜欢直接修改vscode的配置文件。打开配置文件的方式见:vscode的配置文件setting.json的UI界面或者json形式_vscode josn和ui_Gabriel_wei的博客-CSDN博客
添加下面这样的内容:代码自动保存,保存时自动进行格式化。
// 控制自动保存脏编辑器。有关自动保存的详细信息,请参阅[此处](https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save)。
// - off: 脏编辑器永远不会自动保存。
// - afterDelay: 将在配置的 "#files.autoSaveDelay#" 后自动保存脏编辑器。
// - onFocusChange: 当编辑器失去焦点时,将自动保存脏编辑器。
// - onWindowChange: 当窗口失去焦点时,将自动保存脏编辑器。
"files.autoSave": "onFocusChange",
// 保存是格式化
"editor.formatOnSave": true,
"C_Cpp.clang_format_fallbackStyle": "Google",
c++|vs|clang-format
保存则进行format,需要安装下插件:Format document on Save
选项这里选择,和vscode中保持一致。避免使用不同软件打开,导致使用不同的format。这里,同上,选择google
。
c++|.clang-format
如果需要微调默认google的style,或者需要导出.clang-format文件,以直接放在项目中。该咋整。
可以运行下面命令导出,更多clang-format
命令的使用,见Clang-Format Style Options — Clang 17.0.0git documentation
clang-format -style=llvm -dump-config > .clang-format
如果自己不想导出,想大概找个,网上也有人导出:GitHub - kehanXue/google-style-clang-format: A .clang-format file for Google C++ Style.、clang-format styles · GitHub
其他
- 前端的代码格式化:代码洁癖养成指南 · Ifyour’s Blog - ESLint + Prettier
附录
Visual Studio
格式在vs和vscode中不同
vscode1.76.1中将样式设置为Visual Studio。
vs16.11.21中将样式设置为Visual Studio。
但这两者之间的样式略有区别。在引号和指针的位置上略有不同。
// vs code中对引用的格式化
NTSTATUS add_rule(rule_t &rule)
// vs中对引用的格式化
NTSTATUS add_rule(rule_t& rule)
至于为啥不一样,我不知道。因为,我没有找到这两个的clant-format配置。
无法从繁体切换到简体
windows上,vs安装插件的过程中,可能遇到繁体字和简体字切换的问题。可能是因为快捷键是ctrl+shif+f
的原因。这里重写选择下简体中文即可。
我的vs code配置
不同时期,敲不同语言的代码,所以安装过一些杂七杂八的插件。
目前以C++为主。清理下配置文件,还有这些。
{
// 是否在集成终端中运行代码。
"code-runner.runInTerminal": true,
// 控制资源管理器是否在把文件删除到废纸篓时进行确认。
"explorer.confirmDelete": false,
// 启用 Tab 补全。
// - on: 在按下 Tab 键时进行 Tab 补全,将插入最佳匹配建议。
// - off: 禁用 Tab 补全。
// - onlySnippets: 在前缀匹配时进行 Tab 补全。在 "quickSuggestions" 未启用时体验最好。
"editor.tabCompletion": "on",
// Set default browser
"open-in-browser.default": "chrome",
// 控制是否在键入时自动显示建议。
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
},
// 设置字体大小
"editor.fontSize": 20,
"editor.renderWhitespace": "none",
// 搜索文件的时候,.ignore中的文件也搜索
"search.useIgnoreFiles": false,
"[python]": {
"editor.formatOnType": true
},
// 控制自动保存脏编辑器。有关自动保存的详细信息,请参阅[此处](https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save)。
// - off: 脏编辑器永远不会自动保存。
// - afterDelay: 将在配置的 "#files.autoSaveDelay#" 后自动保存脏编辑器。
// - onFocusChange: 当编辑器失去焦点时,将自动保存脏编辑器。
// - onWindowChange: 当窗口失去焦点时,将自动保存脏编辑器。
"files.autoSave": "onFocusChange",
// 保存是格式化
"editor.formatOnSave": true,
"C_Cpp.clang_format_fallbackStyle": "Google",
}