如何统计Kotlin变量/函数引用次数?寻求编译时分析优选方案
Kotlin常量引用次数统计方案选型
场景与需求
静态编译时分析场景:存在文件级常量定义
const val SOME_CONST_VAL = "SOME_CONST_VAL"
需实现以下需求:
- 完成类似IDE「查找引用」的统计功能,仅需输出引用次数和被引用实体名称,无需追踪具体引用位置
- 完全排除运行时检查方案
- 优先采用Gradle插件形式,不绑定特定IDE
已调研方向
- 各类Lint插件:无开箱即用的对应功能,正在评估通过自定义规则实现的可行性
- KSP:不具备生成引用依赖图谱的能力,无法满足需求
- 编译器插件:技术适配性最高,但开发耗时较长、实现成本高
方案选型建议
优先选择自定义Lint规则作为实现方案,理由如下:
- 适配Gradle插件需求:Android Lint本身基于Gradle插件体系,自定义规则可直接集成到构建流程,无需绑定特定IDE
- 实现成本可控:Lint提供AST遍历API,编译时可扫描代码中的标识符引用,通过匹配常量名称+语义信息完成统计,无需深入编译器底层
- 满足核心静态分析需求:纯编译时执行,能准确统计目标常量的引用次数和实体名称
若后续Lint方案遇到精度问题(比如常量被inline后难以追踪),再考虑转向编译器插件。编译器插件可直接获取编译器符号表信息,引用追踪精度最高,适合对统计准确性有极致要求的场景。
内容的提问来源于stack exchange,提问作者Andrei K.
相关产品推荐
相关产品推荐

