前言
Matrix 是微信终端自研和正在使用的一套 APM(应用性能管理)系统。
SQLite 在移动端开发中广泛使用,其使用质量直接影响到产品的体验。微信是个重度使用 SQLite 的应用,相关的质量检测也是质量监控体系中不可忽视的一部分。
常见的 SQLite 质量监控一般都是依赖上线后反馈的机制,比如耗时监控或者用户反馈。这种方式问题是:事后发现,负面影响已经发生。
关注的只是没这么差。eg. 监控阈值为 500ms ,那么一条可优化为 20ms 而平均耗时只有 490ms 的 sql 就被忽略了。
能否在上线前就进行SQLite使用质量的监控?于是我们尝试开发了一个工具: SQLiteLint。虽然名带 “lint “,但并不是代码的静态检查,而是在 APP 运行时对 sql 语句、执行序列、表信息等进行分析检测。而和 “lint” 有点类似的是:在开发阶段就介入,并运用一些最佳实践的规则来检测,从而发现潜在的、可疑的 SQLite 使用问题。
本文会介绍 SQLiteLint 的思路,也算是 SQLite 使用经验的分享,希望对大家有所帮助。