`go/analysis` 包提供了一个用于构建 Go 语言模块化静态分析工具的标准化接口。它将分析逻辑与“驱动”程序(如 IDE、构建系统(Bazel, `go build`)或命令行工具(如 `vet`))解耦,使开发者能够在不同环境中复用代码检查器。 核心组件包括: * **`Analyzer`**:定义分析元数据(名称、标志、依赖项)及其核心逻辑的结构体。 * **`Pass`**:工作单元,提供对语法树、类型信息以及报告诊断信息方法的访问。 * **模块化与事实 (Facts)**:通过“模块化”地逐个包进行检查,分析工具可以扩展到大型代码库。它们可以定义“事实”(可序列化的数据,例如推断某个函数是 `printf` 的包装器),以便在包与包之间共享分析洞察。 该框架通过 `Requires` 字段支持分析器之间的依赖管理,并通过 `analysistest` 包简化测试流程。开发者可以利用 `singlechecker` 或 `multichecker` 库轻松地将这些分析器打包成独立的命令行工具。通过标准化这些接口,该 API 确保了分析逻辑在 Go 生态系统中保持可移植性、高效性及可组合性。