在Xcode中使用Clang Format

Xcode中的Re-Indent,顾名思义,只是一个调整缩进的功能,完全依赖它来进行代码格式化显然不够用。我们使用了一个叫做ClangFormat-Xcode的插件,配合Re-Indent一起来做代码格式化。

下载源代码

ClangFormat-Xcode是一个开源项目,所以先下载源代码:

https://github.com/travisjeffery/ClangFormat-Xcode

安装

项目的README.md上面如是说:

... build and run ClangFormat, restart Xcode.

意思就是:编译 > 运行 > 重启Xcode

使用自定义Style

如何使用,包括怎么设置快捷键,github上面写得很清楚了。这里讲一下怎么使用自定义Style:

  1. 在代码根目录下添加一个名为“.clang-format”的文本文件,在其中设置自定义参数。
    • 在对代码文件进行格式化的时候,插件会从代码文件所在的目录开始,往上一级一级地检索.clang-format,因此把文件放在根目录是最省事的做法;
    • 在ClangFormat-Xcode源代码的根目录下就有一个.clang-format文件的范例;
    • .clang-format在系统中是一个隐藏文件。
  2. 在Xcode的Clang Format菜单中勾选“File”菜单项。

推荐参数

下面是我们项目在用的设置参数,用文本编辑器打开.clang-format文件,直接粘贴进去就行:

BasedOnStyle: LLVM

# 不限定每行代码的最大长度
ColumnLimit: 0

# 不自动清除代码中的空行
MaxEmptyLinesToKeep: 99

# 按照LLVM Style调整{}的位置即可

# LLVM Style对C++的命名空间不缩进

# 对C++的可见性关键字(public、protected和private)不缩进
AccessModifierOffset: -4

# 缩进统一使用4个空格代替制表符(Tab)
UseTab: Never
IndentWidth: 4

# 在@property后加空格
ObjCSpaceAfterProperty: true

# LLVM Style会在参数类型和名称之间加空格,类型和*号之间加空格,*号贴近参数名

以上参数的主要作用是:

  1. 排版风格以“LLVM Style”为基础,在其之上进行细微调整,减少设置的复杂度;
  2. 关闭掉一些可能会降低代码可读性的设置,比如:
    • 不限定每行代码的最大长度,以免因为自动换行而破坏注释的排版;
    • 不自动清除代码中的空行,以免破坏代码的段落布局。
  3. 调整{}的位置;
  4. 调整缩进,比如:
    • 对C++的命名空间不缩进;
    • 对C++的可见性关键字(public、protected和private)不缩进;
    • 缩进统一使用4个空格代替制表符(Tab)。
  5. 调整空格,比如:
    • 清理行末位多余的空格;
    • 在@property后加空格;
    • 参数类型和名称之间的空格。

其他一些经验技巧

最后分享一下我们在使用Clang Format过程中的一些经验技巧:

  1. 对于接口文件(.h文件),用上面的推荐参数格式化即可;
  2. 对于实现的代码(.m和.mm文件),可以先用推荐参数格式化,再用Xcode的Re-Index调整缩进;
  3. 完美!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,361评论 8 183
  • 前言 2000年,伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-...
    星光社的戴铭阅读 16,171评论 8 180
  • 文/小天同学 [一] 每到过年这样的好日子都会有很多结婚办喜事的,今天隔壁邻居家儿子结婚,按照我们这边的习俗在结婚...
    小天同学V阅读 2,885评论 0 3
  • 1 研三那一年的五一,我和同学抱着各自公司的笔记本电脑,每天泡在北区附近的一家咖啡馆,一待就是一整天。当时大家都已...
    紫苑阅读 2,299评论 6 3
  • 这几天微博圈里被秦舒培、陈老师、赵磊和lisa大额头的四角恋撕逼大战闹得沸沸扬扬,网友一致的跑到lisa大额头的微...
    很逊的卤蛋阅读 1,310评论 0 0

友情链接更多精彩内容