Go Conference

Room A

All

5 mins.

2023年末にGo公式が「Finding unreachable functions with deadcode」( https://go.dev/blog/deadcode )というブログを通して、使用されていない関数を見つけ出すためのdeadcodeというツールを紹介しました。

このブログでdeadcodeが紹介されたことをきっかけに、複数のlinterを同時に設定することができるツールであるgolangci-lint( https://github.com/golangci/golangci-lint )に対して、Go公式のものであるdeadcodeを採用するのはどうかというissueが複数挙げられました。

しかし、golangci-lintはこのdeadcodeを採用せず、代わりにunusedという類似の機能を持つlinterと比較してこの提案を棄却しました。その理由と2つのlinterの違いについて深ぼることで、それぞれのlinterの特徴と使い分けが理解できると思っています。

また、私自身deadcodeを使用し、あるOSSのコードをリファクタリングするPRを送りました。ただ、そのPRが不要なリファクタリングという指摘を受け、deadcodeで検知して削除するべきではないinterfaceの中のメソッドの役割を学びました。

そこで、その経験を通して、現段階のdeadcodeを使う際の注意点についてもお伝えしたいと思っています。

具体的にはこのセッションで以下の項目についてお話しします。

  1. deadcodeの概要と内部の仕組み
  2. golangci-lintのissueを通したdeadcodeとunusedの比較
  3. 現段階でdeadcodeを使用する際の注意

このセッションは、Goで使用されていない関数をlintしたい方や、Goのlint自体に興味がある方に対して特にお話ししたい内容です。

Naoki Kuroda

Naoki Kuroda

株式会社サイバーエージェント

株式会社サイバーエージェント2023卒で、AI事業本部で広告プロダクトのエンジニアをしています。