本文介绍 LLVM IR 的基本语法和结构。了解 LLVM IR 语法,对使用 LLVM 编译器也非常有帮助。
在之前的博客中提到过,如果直接使用 Xcode 集成的代码覆盖率工具,提交 App 的时候似乎会被拒绝。这就导致如果我们想让线上的用户参与覆盖率测试就会受到困难,只能局限在公司内部进行测试。为了解决这个问题,就需要自己实现一套覆盖率检测工具。
获得代码覆盖率报告可以让我们更精准地进行测试。LLVM 本身就通过编译插桩提供了这样的能力,因此可以很简便地实现这一功能。但根据 Technical Q&A QA1964 提到的内容,带有 LLVM instrumentation 的 App 在提交的时候会被以下理由拒绝。因此如果要在线上做覆盖率检测,可能需要我们自己来实现。
1 | Invalid Bundle - Disallowed LLVM instrumentation. Do not submit apps with LLVM profiling instrumentation or coverage collection enabled. Turn off LLVM profiling or code coverage, rebuild your app and resubmit the app. |
这篇文章记录了编写第一个 LLVM Pass 的过程,主要跟随 LLVM 官方的 Hello Pass 教程。
Update your browser to view this website correctly. Update my browser now