Skip to content
阅读进度

新增规则为何会让历史问题突然阻断? ​

返回 构建与质量门禁 目录

标准回答 ​

如果基线报告来自旧规则,而当前报告来自新规则,新规则发现的历史问题会被误判为本次变更新增。解决原则是让两侧使用同一分析器和规则配置,再做差集;必要时重新计算基线,而非把所有新诊断自动归因于代码变更。

Android Lint baseline 可以抑制已记录问题,但它与任意 MR 的双侧比较不是同一个机制。长期更新 baseline 时应审查新增抑制内容,否则可能把当前引入的问题也静默收进去。

规则升级宜先进行观察,检查误报与分析时间,再决定阻断范围。基线缓存键应包含提交、工具链、规则包、配置和变体。只用分支名作为缓存键,会在分支推进或规则升级后复用错误报告。

追问与回答 ​

基线分析太慢怎么处理 ​

可以缓存精确输入对应的报告、按模块依赖缩小范围,或将高成本规则分层运行;前提是缓存有效性和漏检范围可解释。

是否能直接忽略新规则发现的所有问题 ​

会放过同一变更真正新增的风险。应重建同条件基线并比较,而非按规则发布时间一刀切。

易混淆点 ​

  • 把新规则首次发现的问题都当成新代码问题。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。