在Xcode中使用Clang Format
Xcode中的Re-Indent,顾名思义,只是一个调整缩进的功能,完全依赖它来进行代码格式化显然不够用。我们使用了一个叫做ClangFormat-Xcode的插件,配合Re-Indent一起来做代码格式化。
下载源代码
ClangFormat-Xcode是一个开源项目,所以先下载源代码:
安装
项目的README.md上面如是说:
... build and run ClangFormat, restart Xcode.
意思就是:编译 > 运行 > 重启Xcode
使用自定义Style
如何使用,包括怎么设置快捷键,github上面写得很清楚了。这里讲一下怎么使用自定义Style:
- 在代码根目录下添加一个名为“.clang-format”的文本文件,在其中设置自定义参数。
- 在对代码文件进行格式化的时候,插件会从代码文件所在的目录开始,往上一级一级地检索.clang-format,因此把文件放在根目录是最省事的做法;
- 在ClangFormat-Xcode源代码的根目录下就有一个.clang-format文件的范例;
- .clang-format在系统中是一个隐藏文件。
- 在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过程中的一些经验技巧:
- 对于接口文件(.h文件),用上面的推荐参数格式化即可;
- 对于实现的代码(.m和.mm文件),可以先用推荐参数格式化,再用Xcode的Re-Index调整缩进;
- 完美!
在Xcode中使用Clang Format的更多相关文章
- Clang Format
1,最近项目代码要求规范化,在网上找了个Xcode插件:Clang Format ,下载地址:https://github.com/travisjeffery/ClangFormat-Xcode 2, ...
- clang format 官方文档自定义参数介绍(中英文)
官方文档:http://clang.llvm.org/docs/ClangFormatStyleOptions.html 中文 在代码中配置样式 当使用 clang::format::reformat ...
- 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题
解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...
- Xcode中Objc动态调用方法同时避免警告的几个办法
我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...
- 盘点Xcode中开发者最喜爱的十大开源插件
Xcode IDE拥有着诸如导航.重构.校准等众多非常高大上的工具,而予以辅助的插件更是在Xcode的基础上对相关功能进行改进与扩展.在应用开发过程中,通过开源包管理器Alcatraz对插件进行安装管 ...
- Xcode 中配置 clang-format 格式化 C++ 代码
Xcode 自带的代码格式化功能(control + I)很有限,其 "格式化" 仅限于设置缩进,代码里面的格式是不会处理的.所以需要借助额外的工具来完成代码的美化. clang- ...
- 在XCode中使用XCTest
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- iOS开发时,在Xcode中添加多个Targets进行版本控制
在iOS开发中,很可能有以下场景:需要开发多个版本,或因需区分收费版,免费版,或因为网络环境需要区分测试版,发布版,或因渠道不同需要区分企业版,AppStore版等等.解决办法无非就是CheckOut ...
- 在Xcode中使用Git进行源码版本控制
http://www.cocoachina.com/ios/20140524/8536.html 资讯 论坛 代码 工具 招聘 CVP 外快 博客new 登录| 注册 iOS开发 Swift Ap ...
随机推荐
- 关于C++和C#类型比较的相关内容
转载:http://www.csharpwin.com/csharpspace/6825r9922.shtml C#类型比较 类别 类名 说明 Visual Basic 数据类型 C# 数据类型 ...
- Microsoft SQL Server 管理 (常用管理及维护命令)
--查询当前连接的实例名 select @@servername --察看任何数据库属性 sp_helpdb master --设置单用户模式,同时立即断开所有用户 alter database No ...
- Win7使用IIS通过域名访问本地程序(网页、css、js等)
一.目的:在本地浏览器里面,输入www.abc.com 可以访问我们本地搭建的网页程序 二.好处:在本地模拟,真实的访问,另外可以设置一些二级域名,例如static.abc.com域名用来存储像图片, ...
- jquery table的隔行变色 鼠标事件
一.鼠标事件 mouseover(function(){}); 鼠标移动到目标事件 mouseout(function(){}); 鼠标离开目标的事件 二.具体应用代码 <body> &l ...
- 导出文本、表格、图像到PDF格式文件中(学习整理)
1.测试例子: 需要导入的外部jar包: 相关API http://www.coderanch.com/how-to/javadoc/itext-2.1.7/com/lowagie/text/pack ...
- lower_bound()函数
头文件 # include<algorithm> 函数简介 lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会 ...
- QuickSort 递归 分治
QuickSort 参考<算法导论>,<C程序设计语言> #include<stdio.h> void swap(int v[], int i, int j); v ...
- MVVM模式应用 之的RelayCommand的使用
实现MVVM模式Command是立下了汗马功劳.当然ICommand要引用using System.Windows.Input命名空间. 比如: (1)我们在xaml页面有一个Button按钮,我们需 ...
- 【实习记】2014-08-15文档太少看着源码用cgicc+stl库之模板谓词函数对象
总结1: 今天找到了昨天scanf的问题答案,scanf与printf一样的神奇而复杂,稍不留神,就会被坑.scanf函数在读入非空白符分割的多个字符串的解决方法是这个:/* 以 | 分割 * ...
- Asp.net服务器控件在IE10下的不兼容问题
Asp.net服务器控件在IE10下的不兼容问题 时间:2013-05-16 09:07点击: 89 次 [大 中 小] 相信很多使用IE10的童鞋们已经发现了这个问题,以下是本人在IE10标准模式下 ...