Go团队推出模块化静态分析框架
Go Analysis Framework: modular static analysis by go team
Go团队正式发布了analysis包,这是一个全新的模块化静态分析框架。它允许开发者将代码检查逻辑封装为独立的Analyzer,轻松集成到vet、IDE、Bazel或SourceGraph等工具中。该框架支持跨包传递分析结果,通过Fact机制实现高效的分包编译式检查。无论是检测printf格式错误,还是构建控制流图,开发者都能通过统一的接口复用和组合分析器,大幅提升代码质量检查的灵活性与扩展性。
模块化分析每次只检查一个包,但能保存来自底层包的信息,并在检查上层包时使用这些信息,这类似于工具链中的单独编译。
HN 评论区
89- b7e7d855b448
你们尽管继续抱怨 Go 太啰嗦吧,但我就是喜欢 Go 的一切。
我喜爱它的错误处理机制,喜爱它强制的格式化,也喜爱它所有的 linting 工具,包括风格指南。当你阅读别人的源代码时,理解起来非常容易,逻辑清晰。感谢 Go 团队。
(好吧,也许我对最近添加的泛型功能有点怀疑,但总体而言,它是一门很棒的编程语言。我爱它。)
- jzelinskie
这不是新功能吗?
你可以看到它早已被大量 linter 使用了:
https://pkg.go.dev/golang.org/x/tools/go/analysis?tab=import...
- jamescun
对于 SpiceDB[0],我们发现使用这个框架来定义自己的分析器非常成功;有了 LLM,现在大概要容易 10 倍。如果你能直接把规则变成 linter 然后继续干活,就不需要依赖部落知识,也不用在代码审查上浪费更多时间了。
[0]: https://github.com/authzed/spicedb/tree/main/tools/analyzers