Golang Go语言中一个利用简陋语法模仿 const 修饰的 linter

发布于 1周前 作者 htzhanglong 来自 Go语言

https://github.com/lance6716/k4Const

如果变量名长得像 kInts,会在修改它时报错

$ go vet -vettool=$(which k4const) ./...
# awesomeProject
./main.go:239:5: write to const variable 'kInts'

顺便请问大家,编译期有什么比较近似、轻量的方法,能发现 kInts 实参赋值给了非 k 开头的形参吗?昨天看了一下 go 自带的 callgraph 、SSA 等库,比较头秃


Golang Go语言中一个利用简陋语法模仿 const 修饰的 linter

更多关于Golang Go语言中一个利用简陋语法模仿 const 修饰的 linter的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

什么东西。。。

更多关于Golang Go语言中一个利用简陋语法模仿 const 修饰的 linter的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


既然如此为什么不 const 呢?

在Go语言中,const 关键字用于声明常量,这些常量在程序运行时不能被修改。虽然Go语言本身并没有提供直接的方式通过简陋语法来模仿 const 修饰符的行为来创建自定义的linter规则(linter是一种静态代码分析工具,用于检查代码中的潜在问题),但我们可以通过编写自定义的linter规则来实现类似的效果。

要创建一个自定义的linter来检查是否遵循了某种类似于 const 的使用约定,你可以使用Go语言的静态分析工具,如 golintstaticcheck,并编写自己的检查逻辑。以下是一个大致的步骤:

  1. 了解linter的工作原理:研究现有的linter,如 golint,理解其如何解析代码并检查规则。

  2. 编写检查逻辑:根据你想要模仿的 const 修饰符的行为,编写相应的检查逻辑。这可能涉及到解析Go代码(使用 go/parsergo/ast 包),并检查特定的代码模式。

  3. 集成到CI/CD流程:一旦你的自定义linter规则编写完成,你可以将其集成到你的持续集成/持续部署(CI/CD)流程中,以便在代码提交时自动运行检查。

  4. 维护和更新:随着Go语言的更新和你项目需求的变化,定期维护和更新你的自定义linter规则。

请注意,虽然自定义linter可以提供额外的代码检查功能,但应保持其简单性和针对性,以避免引入不必要的复杂性。

回到顶部