外观
新增规则为何会让历史问题突然阻断?
标准回答
如果基线报告来自旧规则,而当前报告来自新规则,新规则发现的历史问题会被误判为本次变更新增。解决原则是让两侧使用同一分析器和规则配置,再做差集;必要时重新计算基线,而非把所有新诊断自动归因于代码变更。
Android Lint baseline 可以抑制已记录问题,但它与任意 MR 的双侧比较不是同一个机制。长期更新 baseline 时应审查新增抑制内容,否则可能把当前引入的问题也静默收进去。
规则升级宜先进行观察,检查误报与分析时间,再决定阻断范围。基线缓存键应包含提交、工具链、规则包、配置和变体。只用分支名作为缓存键,会在分支推进或规则升级后复用错误报告。
追问与回答
基线分析太慢怎么处理
可以缓存精确输入对应的报告、按模块依赖缩小范围,或将高成本规则分层运行;前提是缓存有效性和漏检范围可解释。
是否能直接忽略新规则发现的所有问题
会放过同一变更真正新增的风险。应重建同条件基线并比较,而非按规则发布时间一刀切。
易混淆点
- 把新规则首次发现的问题都当成新代码问题。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q126