Skip to content
阅读进度

自定义 Lint 规则怎么写,怎样控制误报和漏报? ​

返回 构建与质量门禁 目录

标准回答 ​

选一条真实规则说明:要防的缺陷是什么、如何从代码结构识别、什么场景属于合法例外。然后用正例、反例和边界样本验证,并根据风险决定提示还是阻断。不要把示范规则当作自己写过的规则。

通俗例子 ​

示范:要求某类资源在结束时释放,不能仅搜索有没有出现 close 字样;要考虑资源对象是否同一个、异常路径是否覆盖。真实规则可能更简单,按你的实现讲。

深入解释 ​

**从缺陷模式开始:**说清危险调用、缺失约束或资源使用错误,以及会造成的实际后果;规则必须能解释为什么命中。

**选择合适分析方式:**Java/Kotlin 代码可按实际需要使用语法或语义分析,资源类问题则看 XML 等输入。纯文本匹配容易受注释、别名和重载影响。

**让规则可维护:**提示要给出位置、原因和修复方向;为误报保留有依据的处理机制,并测试新增规则不会把正常代码大面积拦住。

追问与回答 ​

为什么不用正则? ​

简单固定格式可以用;涉及方法归属、类型和调用关系时,需要更可靠的代码分析。

误报导致大家直接忽略怎么办? ​

先降低噪声、提供可操作提示,再按风险逐步阻断;豁免应有说明和可追踪记录。

易混淆点 ​

不要声称所有规则都做了完整数据流分析,除非确实实现并验证。

进一步举证 ​

  • 准备一条真实规则的检测入口、命中代码和正常代码。
  • 补齐规则测试、运行成本与误报反馈处理。

内容来源 ​

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