Objective - C代码格式检查方案
背景
遵循统一的代码规范,编码格式在编码以及阅读代码时可以提高效率。
代码规范包括很多方面,如何命名,使用的范式等等,这部分需要编码时候多加注意,以及在代码评审时提出。
而关于空格使用,代码缩进,如何对齐等格式部分的遵守,则容易被忽略,也不容易遵守。通常需要借助外部代码格式工具。
spacecommander
https://github.com/square/spacecommander
Commit fully-formatted Objective-C as a team without even trying.
spacecommander.这个主要是利用clang来进行自动格式化代码.
内部使用Git hooks 机制,可以实现每次向仓库提交代码前自动检查是否符合代码格式。对于不符合规范的代码提供代码批量格式化工具,以此来保证仓库中代码格式统一。
用例
准备工作
一下示例如何在Git客户端使用spacecommander完成代码格式化。
建立工具代码存放路径
mkdir -p ~/Desktop/Git/spacecommander
cd ~/Desktop/Git/spacecommander
git clone git@github.com:square/spacecommander.git
进入需要添加项目的本地仓库的根目录这里,这里以testJenkins项目为例
cd ~/Desktop/Git/testJenkins
执行一下脚本
~/Desktop/Git/spacecommander/spacecommander/setup-repo.sh
运行完脚本后可见如下
内部操作
ls -al
QQ20161028-7.png
脚本创建了 .clang-format 文件的link,这里配置了代码的格式
QQ20161028-0.png如有需要可以调整(注意项目组内部统一),这里使用默认的配置。
进入Git 的配置文件 可以看到 Git hooks做出的改动
cd ~/Desktop/Git/testJenkins/.git/hooks
ls
可以看到存在一个 pre-commit 文件,在 commit 操作之前 spacecommander 执行了代码检查
测试代码格式
在项目代码中随意添加部分代码
QQ20161028-1.png尝试 git commit
git commit -m"test error style"
可以看到下面的错误提示
提示说明了 RiSviews/ViewController.m 这个文件的格式不太对,并且告知了解决方法。按照提示执行下列方法
"/Users/Sola/Desktop/Git/spacecommander/spacecommander"/format-objc-file.sh 'RiSviews/ViewController.m'
在重新尝试commit
git add 'RiSviews/ViewController.m'
git commit -m"test error style"
发现可以提交成功
查看ViewController.m文件
QQ20161028-3.png新增代码中的空格错误,缩进错误等代码格式问题均已备修复。
便捷操作
spacecommander 文件路径下可以看见以下常用几个脚本
format-objc-file.sh //单个文件格式化
format-objc-files-in-repo.sh //整个项目的代码格式化(不影响Pods中的文件)
可以加价 alias 来简化脚本调用
vi ~/.bash_profile
添加一下代码
alias fmtone='~/Desktop/Git/spacecommander/spacecommander/format-objc-files.sh'
alias fmtall='~/Desktop/Git/spacecommander/spacecommander/format-objc-files-in-repo.sh'
source ~/.bash_profile
以后在项目的根目录中使用 fmtone + '文件名' ,或者 fmtall 命令即可
clang 的格式可以参考这里的可视化 http://clangformat.com
Add #pragma Formatter Exempt or // MARK: Formatter Exempt as the first line of the file, and it will not be formatted at all.
网友评论