CodeQL 文档

对字段的无用赋值

ID: go/useless-assignment-to-field
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - maintainability
   - external/cwe/cwe-563
Query suites:
   - go-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

将值赋给某个字段,但从未读取过该字段的值。这意味着赋值无效,并且可能表示逻辑错误或代码不完整。

建议

仔细检查赋值,以确定它是冗余的,还是其他错误的征兆。

示例

以下示例显示了一个简单的 struct 类型,它包装了一个整数计数器,并带有一个将计数器设置为零的 reset 方法。

package main

type counter struct {
	val int
}

func (c counter) reset() {
	c.val = 0
}

但是,reset 的接收器变量的声明类型为 counter,而不是 *counter,因此接收器值是按值传递给方法的,而不是按引用传递。因此,该方法实际上并没有像预期的那样改变其接收器。

要解决此问题,请将接收器变量的类型更改为 *counter

package main

func (c *counter) resetGood() {
	c.val = 0
}

参考文献

  • ©GitHub 公司
  • 条款
  • 隐私