美文网首页
XCode 一键修改copyright方案

XCode 一键修改copyright方案

作者: 狼性刀锋 | 来源:发表于2019-01-20 19:00 被阅读60次

XCode 一键修改copyright方案

引言

最近团队要求自定义copyright模版,在网上搜索了一些方案不太满意,于是自己花了点时间弄了个解决方案,能够快速生成带有自定义copyright模版的project,并保证良好的团队协同性

单一方案

方案1: 使用 script 替换 source file copyright

  • 描述:使用 sheel 脚本扫描并且替换工程源文件copyright

  • 缺陷:

    1. 非等幂性操作: 该脚本只能执行一次,多次执行会造成非预期的copyright (注:由于正则匹配不够严谨的缘故造成,可修复)
    2. 粗暴会替换掉所有源文件的copyright,如果有团队成员引入了他人的源代码也会被修改掉,所以考虑这个,你还需要设置一个过滤文件的功能

方案2: 替换XCode source file template

  • 描述: 修改所有的XCode source file template 的copyright描述

  • 缺陷:

    1. 麻烦:XCode有n个模版文件,需要逐一修改
    2. 缺乏同步性: 意味着团队所有成员的XCode template file都要修改,否则无法保证,创建的source file 拥有一致的copyright
    3. 缺乏灵活性: 设想如果不同的项目要求不同的copyright,怎么处理?
  • 总结: 对这个方案也能表示满意的,我只能说要求真高

方案3: 创建IDETemplateMacros

  • 描述: 创建IDETemplateMacros.plist, 放入project文件

  • 特点:

    1. 实现简单
    2. 协同性好: 只要将plist 文件推入xcshareddata文件即可
  • 缺陷:

    1. 你要先创建project才有对应的.project文件,这意味在引入IDETemplateMacros之前,添加的文件的copyright是不对的,你需要手动处理这些copyright
  • 总结: 这个可行性还是比较高的

方案4: 创建XCode project template

  • 描述: 自定义XCode project template
  • 特点:
    1. 灵活性好: 可以根据不同的copyright 创建不同的template
  • 缺陷
    1. project template 只在创建project时有效,因此新加的source file仍然会使用 source file template 导致copyright 不一致
    2. 通常在创建project的时候还会,附带创建UnitTest 和 UITest,但不幸的是这个时候Xcode用的是默认UnitTest 和UITest模版,这意味着你在创建project时不能勾选tests选项,然后你还需要创建使用自定义Tests模版的target。 总的来说你至少需要创建四个project template, app, UnitTest,UITests,DynamicFramework

组合方案

前面的单一方案或多或少都存在着问题,不能完美的解决问题,所以必须采用组合方案。

方案A: 使用XCode custom project template 和 custom Macros

  • 描述:

    1. 使用自定义模版创建工程
    2. 拷贝IDETemplateMacros至工程文件
  • 特点:

    1. 能够完美保证copyright一致

基本满足需求,但还是要手工操作一下,于是我想能够从命令行创建project就好了,这样就真的啥也不用管了。遗憾的是貌似command line tools 不支持这个功能,如果哪位大神知道的话,麻烦告诉我.不过也并非一无所获找到了facebook 开源工具buck, 不过这个类似CocoaPod, 更多的是做包管理的,算是开个眼界吧.

方案B: 使用XcodeGen 生成project,结合脚本修改copyright

XcodeGen: 根据配置文件project.yml 和资源文件生成project,这样可以不用上传.project文件,有效避免.project文件引起的冲突。

这里仅仅是把它当作生成project的命令行工具使用,但光靠它还不行还需要做一下操作

1. 修改文件夹名称
2. 修改源文件comment: copyright, projectname
3. 修改Test文件moduleName 
4. 拷贝IDETemplateMacros 至 xcshareddata

至此,整个完工。 demo传送门

相关文章

网友评论

      本文标题:XCode 一键修改copyright方案

      本文链接:https://www.haomeiwen.com/subject/wwqfjqtx.html