iOS开发高手课
戴铭
前滴滴出行技术专家
立即订阅
11464 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 锚定一个点,然后在这个点上深耕
免费
基础篇 (20讲)
01 | 建立你自己的iOS开发知识体系
02 | App 启动速度怎么做优化与监控?
03 | Auto Layout 是怎么进行自动布局的,性能如何?
04 | 项目大了人员多了,架构怎么设计更合理?
05 | 链接器:符号是怎么绑定到地址上的?
06 | App 如何通过注入动态库的方式实现极速编译调试?
07 | Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?
08 | 如何利用 Clang 为 App 提质?
09 | 无侵入的埋点方案如何实现?
10 | 包大小:如何从资源和代码层面实现全方位瘦身?
11 | 热点问题答疑(一):基础模块问题答疑
12 | iOS 崩溃千奇百怪,如何全面监控?
13 | 如何利用 RunLoop 原理去监控卡顿?
14 | 临近 OOM,如何获取详细内存分配信息,分析内存问题?
15 | 日志监控:怎样获取 App 中的全量日志?
16 | 性能监控:衡量 App 质量的那把尺
17 | 远超你想象的多线程的那些坑
18 | 怎么减少 App 电量消耗?
19 | 热点问题答疑(二):基础模块问题答疑
20 | iOS开发的最佳学习路径是什么?
应用开发篇 (12讲)
21 | 除了 Cocoa,iOS还可以用哪些 GUI 框架开发?
22 | 细说 iOS 响应式框架变迁,哪些思想可以为我所用?
23 | 如何构造酷炫的物理效果和过场动画效果?
24 | A/B 测试:验证决策效果的利器
25 | 怎样构建底层的发布和订阅事件总线?
26 | 如何提高 JSON 解析的性能?
27 | 如何用 Flexbox 思路开发?跟自动布局比,Flexbox 好在哪?
28 | 怎么应对各种富文本表现需求?
29 | 如何在 iOS 中进行面向测试驱动开发和面向行为驱动开发?
30 | 如何制定一套适合自己团队的 iOS 编码规范?
31 | iOS 开发学习资料和书单推荐
32 | 热点问题答疑(三)
原理篇 (6讲)
33 | iOS 系统内核 XNU:App 如何加载?
34 | iOS 黑魔法 Runtime Method Swizzling 背后的原理
35 | libffi:动态调用和定义 C 函数
36 | iOS 是怎么管理内存的?
37 | 如何编写 Clang 插件?
38 | 热点问题答疑(四)
原生与前端共舞 (5讲)
39 | 打通前端与原生的桥梁:JavaScriptCore 能干哪些事情?
40 | React Native、Flutter 等,这些跨端方案怎么选?
41 | 原生布局转到前端布局,开发思路有哪些转变?
42 | iOS原生、大前端和Flutter分别是怎么渲染的?
43 | 剖析使 App 具有动态化和热更新能力的方案
用户故事 (1讲)
用户故事 | 我是如何学习这个专栏的?
结束语 (1讲)
结束语 | 慢几步,深几度
iOS开发高手课
登录|注册

08 | 如何利用 Clang 为 App 提质?

戴铭 2019-03-28
你好,我是戴铭。
以前在工作中,有段时间连续发生了多次线上事故,在复盘时大家都提出是因为代码不规范、代码规范执行不到位,从而导致代码质量过差,无法监管,我们才被动处理线上事故。会上牢骚发完,会后应该怎么执行呢?
我们都知道,监管手段是需要自己动手建设的,第三方工具无法满足所有的业务技术规范监控。在上篇文章“Clang、Infer 和 OCLint ,我们应该使用谁来做静态分析?”中,我们提到通过 Clang 提供的丰富接口功能就可以开发出静态分析工具,进而管控代码质量。
除此之外,基于 Clang 还可以开发出用于代码增量分析、代码可视化、代码质量报告来保障 App 质量的系统平台,比如CodeChecker
比如,当周末发现线上问题时,你会发现很多时候分析问题的人都不在电脑边,无法及时处理问题。这时,我们就需要一款在线网页代码导航工具,比如 Mozilla 开发的 DXR,方便在便携设备上去操作、分析问题,这样的工具都是基于 Clang 开发的。
Clang 的功能如此强大,那么它到底是什么呢?Clang 做了哪些事情?Clang 还提供了什么能力可以为 App 提质呢?今天,我们就一起来看看这几个问题吧。

什么是 Clang?

关于 Clang 是什么,你可以先看一下如下所示的 iOS 开发的完整编译流程图。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《iOS开发高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(16)

  • Roger
    喂完奶来评论下,最近摸索出了学习这套教程的方法:先看文章,配合着音频防止走神。然后在github和google上搜索相关知识进行系统学习,比如之前讲到的启动优化,github上就有非常好的启动优化总结。再比如LLVM相关知识,腾讯课堂里小码哥就讲得非常仔细。所以将文章作为引子,然后系统的学习吧!

    作者回复: 赞

    2019-03-28
    47
  • 里奇
    老师可以写一点单元测试和持续集成相关的知识吗?
    2019-03-28
    9
  • 孟勃宇
    提个建议, 页面的跳转链接可以选择在新标签页打开。
    2019-03-28
    7
  • 鹏哥
    老师,前面的课程中你提到对某一领域要做到精而不是都只是了解,那你这里有这么多内容,我应该怎么选择需要去深入研究的内容呢?还是说所有的都需要去深入研究?

    作者回复: 根据工作需要来选择吧

    2019-03-28
    7
  • tomcat
    我这里有一个利用clang libtooling进行方法名替换的应用,大家可以看看加深理解,https://www.jianshu.com/p/3a8fb6f7c55f

    作者回复: 赞

    2019-03-30
    5
  • LaiYoung_
    我写了两篇入门文章 https://github.com/CYBoys/Blogs/blob/master/LLVM_Clang/LLVM%20%26%20Clang%20%E5%85%A5%E9%97%A8.md 和 https://github.com/CYBoys/Blogs/blob/master/LLVM_Clang/Clang%20Plugin%20%E4%B9%8B%20Debug.md 还有一个关于代码规范的插件,没有戴老师写得好

    作者回复: 赞

    2019-04-01
    3
  • Geek
    每天学一课都能感觉到自己的进步,课程很好,就靠学习来打发无聊的时间了

    作者回复: 有进步就好,赞

    2019-03-29
    2
  • Guarantee
    老师,图片上的中间代码 IR,是不是汇编代码?

    作者回复: 不是,是一种平台无关的中间代码

    2019-07-20
    1
  • 长方体混凝土移动工程师
    学习clang一段时间来整理的资料与详细注释
    提供了完整的plugin与libtooling 开发的最简单的代码
    https://github.com/czqasngit/iOS_senior
    - _ -
    2019-05-09
    1
  • cc
    都不懂 我该何去何从呢

    作者回复: 找到场景就有学下去的动力了,下一篇会提到 Clang 的一个很实际的用处。加油

    2019-03-28
    1
  • Crazy_cc
    别问,学就是了!
    2019-03-28
    1
  • GODV
    老师的课程,看过以后还需要以后复习啊,总有种后知后觉感觉
    2019-05-29
  • drunkenMouse
    当我准备就绪打算开始写的时候,发现自己好像。。都不会Lisp语言 今天的作业够呛了。。

    作者回复: 哈哈

    2019-03-31
  • lion
    对于Clang这一块确实了解和接触的比较少,看了老师的文章,觉得似乎打开了一条新的通道,但是又感觉老师讲的东西有点多,不知道该从哪开始,所以想请教下如果想接触这块知识的话,从哪里着手比较好呢?

    作者回复: 从实践开始,下篇会提到一个具体可以实践的场景

    2019-03-28
  • 弗兰克²⁰¹⁸
    质量很高!
    2019-03-28
  • 梅永盛
    非常优秀,打算准备展开这方面的学习,
    2019-03-28
收起评论
16
返回
顶部