SuperAPI AI 工具集

prometheus-go-code-review

测试与质量

查看项目

更新于 10-15 21:39

技能介绍

用途:审查 Go 代码中的 Prometheus 埋点,适用于使用 prometheus/client_golang、promauto、promhttp 或 MustRegister 的代码评审。

主要能力:提供检查清单与硬性门禁。清单包括指标类型是否匹配语义(Counter/Gauge/Histogram)、标签是否低基数(不含用户 ID、时间戳、路径)、指标名是否符合 snake_case 与单位后缀、直方图分桶是否合理、指标是否只注册一次、Collector 是否避免竞态 panic、/metrics 是否暴露可访问。

硬性门禁按顺序执行:先确定审查范围(列出涉及 Prometheus 的具体文件路径,不接受无路径的全仓结论);再检查标签基数,对每个 *Vec 或带标签指标列出标签名及取值来源,禁止无界值(如原始 user_id、完整 URL 路径、时间戳),除非有有界映射并引用;再检查注册生命周期,确认构造函数只在包级 var、init 或 sync.Once 中运行一次,而非每请求注册;最后要求每条发现指明文件(行或符号)、对应失败门禁并关联实际代码,门禁满足时不得提纯风格问题。

常见反模式:高基数标签(如 user_id、path 导致百万序列)、用 Gauge 表示单调值、每请求注册新指标(MustRegister 重复会 panic)、指标名缺少单位后缀。

推荐模式:包级 var 定义 CounterVec/HistogramVec,设置 Namespace、Subsystem、Help 与合理 Buckets;用中间件配合 prometheus.NewTimer 与包装 ResponseWriter 记录状态码;通过 promhttp.Handler() 在 /metrics 暴露。

限制:资料未提供安装命令、版本要求、收费或平台信息;该技能为评审辅助,不自动修改代码。