LoginSignup
4
2

More than 1 year has passed since last update.

Goの関数ではゼロ値はリテラルで返してほしい気持ちをLinterで綴る

Last updated at Posted at 2022-12-05

何を作ったのか

どうもナレッジワークtenntennです。

以下のような、変数をそのまま返しているやつ嫌ですよね。それをチェックするツールを作りました。

func f() struct{} {
        v := struct{}{}
        return v // ヤダ
}

func g() (v struct{}) {
        return v // ヤダ
}

どう作ったのか

Goには静的解析ツールを作る機能が標準ライブラリで提供されています。詳しくは分厚いスライドをご覧ください。

ざっくりとしたアルゴリズムは以下の通りです。

  • 代入文を探し、ゼロ値じゃない値を代入しているものに印を付ける
  • return文で変数を返しているものを見つける
  • その変数がゼロ値じゃない値を代入してる印がついていなければエラー
4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2