go-kiss / monkey

Go语言猴子补丁框架
https://taoshu.in/go/monkey/
MIT License
119 stars 18 forks source link

fix: 修复代码中的一些警告问题 #15

Closed Ruomenger closed 11 months ago

Ruomenger commented 11 months ago

修复项目中的一些警告问题,主要有:

  1. yoda conditions,go中不需要将常量放在等于判断的前部
  2. 使用 strings.Contains 替换 strings.Index 判断子串是否存在
  3. 使用 unsafe.Slice 替换 reflect.SliceHeader
  4. 移除未使用的函数 unpatch
  5. 获取 map 中的 value 后并未使用

image

@taoso FYI

taoso commented 11 months ago

@Ruomenger 2-5 都没问题。但我对第一条有不同看法。

所谓的 yoda conditions 只是 staticcheck 不建议使用。但 yoda conditions 本身没有问题。纯粹为了不让 staticcheck 显示警告就在 monkey_test.go 引入大量功能无关的改动,我感觉不太合适。

根据 staticcheck 的文档,我们可以在项目根目录创建配置文件staticcheck.conf

checks = ["all", "-ST1000", "-ST1003", "-ST1017"]

这样可以排除掉一些不是很契合的规则。

Ruomenger commented 11 months ago

@Ruomenger 2-5 都没问题。但我对第一条有不同看法。

所谓的 yoda conditions 只是 staticcheck 不建议使用。但 yoda conditions 本身没有问题。纯粹为了不让 staticcheck 显示警告就在 monkey_test.go 引入大量功能无关的改动,我感觉不太合适。

根据 staticcheck 的文档,我们可以在项目根目录创建配置文件staticcheck.conf

checks = ["all", "-ST1000", "-ST1003", "-ST1017"]

这样可以排除掉一些不是很契合的规则。

我明白增加这个配置修改是可以避免这个告警,只是这种写法在go中非常奇怪,无论是在go标准库还是大部分第三方库中都没有这种写法。这种写法一般是用在C/C++中可以避免一些在==误写为=时的问题(因为隐式类型转换),但在go=赋值就并非布尔值编译时就会直接报错,不会有这种错误问题。