ClangFormat代码格式化

在一个团队中如何保证所有的开发人员的代码风格一致,并且符合一定的规范,也许ClangFormat-Xcode插件可以帮助你解决该问题。

定制ClangFormat-Xcode

如何需要定制你自己的格式化插件,下载ClangFormat-Xcode需要修改项目根本目录相面的.clang-format不可见文件(“defaults write com.apple.finder AppleShowAllFiles -bool true”)。修改完成后,然后将该项目运行,运行的时候会提示「Skip Bundle」和「Load Bundle」选择「Load Bundle」后插件即可安装成功后重新启动xcode,在你的~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/目录下面可看到插件安装成功。

其中.clang-format如下,参考ClangFormatStyleOptions

1
2
3
4
5
6
7
8
9
10
AccessModifierOffset: 0
AlignEscapedNewlinesLeft: false
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
......

使用

Edit->HBClang Format

Format Selected Text // 格式化选中的内容 快捷键为Ctrl+U

Enable Format on Save //当保存的时候自动格式化。

Markdown preferences pane

提交代码检测

如果我们想要在提交之前做些检测代码规范的工作,那么接下来的操作就很重要了,通过下面的脚本,这个检测的规范就是上面ClangFormat中制定的规范内容。

安装方法
  1. 打开命令行,进入项目目录,执行命令:
1
curl https://gist.githubusercontent.com/dorentus/387fbaa28de22ce8f34e157c0d1ecfe9/raw/clang-format-githook-install.sh | sh
  1. 或者手动下载保存为项目目录下的 .git/hooks/pre-commit,并修改文件权限为可执行。
1
https://gist.githubusercontent.com/dorentus/387fbaa28de22ce8f34e157c0d1ecfe9/raw/pre-commit-clang-format

这种方法并不会自动使用 [HBClangFormat-Xcode] 里面自带的 clang-format,而是写死了用 /usr/local/bin/clang-format,如果需要用其它路径的话可以自己修改文件头部的路径

提交代码
  1. 我们提交代码通过sourceTree或者命令行提交代码,通过检测如果代码不符合规范,会出现提示信息,无法提交代码。

问题

  1. Xcode 安装插件手误选择了「Skip Bundle」后需要重新允许「Load Bundle」的解决方法。参考
  2. 在使用代码提交检测的时候,由于在别人的代码基础上面做的修改,而检测的范围是提交的整个文件,这个时候不想改其它人的代码。我们可以修改项目目录下的 .git/hooks/pre-commit的exit为1,或者删除该文件。

参考

1.iOS代码规范自动化