Go プロジェクトで参照されていないすべての関数を検索する。

Go言語プロジェクトにおいて、staticcheck を使用して未使用関数を検出することは、効率的な静的解析手法です。

1. staticcheck のインストール

以下のコマンドを実行して、Go (バージョン 1.16+) と staticcheck をインストールしてください。

go install honnef.co/go/tools/cmd/staticcheck@latest

2. 基本用法:未使用関数の検索

プロジェクトのルートディレクトリで以下のコマンドを実行します。

staticcheck ./...

主要チェックルール:

  • U1000: 未使用関数、メソッド、変数、または型を検出します。
  • U1001: 未使用パラメータを検出します。

3. 特定のチェックルールをフィルタリングする

未使用関数のみをチェックする場合、ルールを指定できます。

staticcheck -checks=U1000 ./...

4. 出力形式

デフォルトの出力形式は、{path}:{line}:{column}: {message} の形式です。例:

main.go:10:2: func UnusedFunction は未使用です (U1000)

5. 設定ファイル (オプション)

プロジェクトのルートディレクトリに .staticcheck.conf ファイルを作成し、カスタムチェックルールを定義します:

{
  "checks": ["U1000", "-ST1000"]  // U1000 を有効にし、ST1000 を無効にする (文字列フォーマット規則)
}

6. Visual Studio Code への統合

  1. Go 拡張機能 をインストールします。
  2. settings.json に以下を追加します:

7. 特定コードの無視

関数の上部にコメント //lint:ignore U1000 reason を追加することで、以下のチェックを無視できます。

//lint:ignore U1000 Used by generated code
func UnusedButNeeded() {}

よくある質問

  • Q: テストファイル内の未使用関数をどのように処理しますか?
  • A: staticcheck はデフォルトでテストファイルをチェックします。除外する場合は、-tests=false などのフラグを使用できます。
  • Q: CI/CD 環境への統合は?
  • A: GitHub Actions に追加:

サンプル出力

$ staticcheck -checks=U1000 ./...
internal/utils/helper.go:15:2: 関数 privateHelper は使用されていない (U1000)
cmd/server/main.go:23:2: initConfig 関数は使用されていない (U1000)

staticcheckU1000 規則を使用することで、未使用の関数を迅速に特定し削除し、コード品質を向上させることができます。

Licensed under CC BY-NC-SA 4.0
最終更新 2025年06月02日 21:13
金融ITプログラマーのいじくり回しと日常のつぶやき
Hugo で構築されています。
テーマ StackJimmy によって設計されています。