VSCode を使用した Go 開発

Visual Studio Code(略称 VS Code)は、Microsoft が開発した無料・オープンソースのコードエディタです。複数のプログラミング言語をサポートし、コードハイライト、スマートなコード補完、コードリファクタリング、デバッグなどの機能を提供します。

Visual Studio Code の Go 公式拡張プラグインを利用することで、スマート提案、コードジャンプ、シンボル検索、ユニットテスト、プログラムデバッグなど、Go プロジェクト開発に役立つ一連の実用的な機能を利用できます。

VS Code に詳しくない場合や、まだインストールしていない場合は、以下を参照してください:VSCode チュートリアル。

Go プラグインのインストール

VS Code の拡張機能マーケットプレイスを開き、検索します:Go Extension for VS Code。

エディタ内で左側の拡張機能をクリックし、Go を検索して、公式プラグインをインストールします:

インストールが完了したら、Go のコードを書き始めることができます。次のように入力して、fmt.スマート提案機能を試してみましょう:


スマート提案(IntelliSense)

スマート提案は、Go 公式チームがメンテナンスする gopls 言語サーバーによって提供されます。gopls の設定項目を通じて実行ルールをカスタマイズできます。

1. セマンティックハイライト

VS Code はデフォルトで TextMate 構文に基づいてコードハイライトを行います。より効果的なセマンティックレベルのハイライトが必要な場合は、設定で有効にしてください。ui.semanticTokens:

"gopls": { "ui.semanticTokens": true }

2. コード自動補完

Go のソースコード編集中、プラグインはリアルタイムでコード補完の候補を表示します。現在のパッケージ、インポート済みのパッケージ、まだインポートしていないパッケージのメンバー候補に対応しています。パッケージ名 + . を入力すると、対応するパッケージ内のメソッド/定数の候補が表示されます。

ショートカットキー:Ctrl+空格(⌃Space)補完ポップアップを手動で表示

3. ホバードキュメントの表示

マウスを変数、関数、構造体の上に置くと、コメントドキュメントや関数シグネチャなどの詳細がポップアップ表示されます。

4. 関数パラメータのヒント

関数の左括弧( ( )を入力する(と、自動的に仮引数シグネチャが表示されます。実引数を入力すると、下線が現在入力中のパラメータに追従して切り替わります。

ショートカットキー:Shift+Cmd+空格(⇧⌘Space)カーソルが括弧内にあるときに手動でパラメータヒントを表示

コードナビゲーション

エディタの右クリックメニューには、コードナビゲーション機能が一通り組み込まれています:

  • F12 定義へジャンプ:型/変数のソースコード定義箇所へ移動します
  • 型定義へジャンプ:変数の基盤となる型のソースコードを特定します
  • Alt+F12(⌥F12)定義をプレビュー:ポップアップでソースコードをプレビューし、ファイルを切り替えません
  • Shift+F12(⇧F12)参照を検索:現在のシンボルが参照されているすべての場所をリスト表示します
  • Shift+Alt+H(⇧⌥H)呼び出し階層:関数の呼び出し元と呼び出し先のチェーンを表示します
  • Cmd+F12(⌘F12)実装を表示:インターフェースはすべての実装クラスを表示し、エンティティクラスは実装しているすべてのインターフェースを表示します

コマンドパレットを開き、Shift+Cmd+P(⇧⌘P)シンボル検索ですばやくジャンプできます:

  • Shift+Cmd+O(⇧⌘O):現在のファイル内でシンボルを検索
  • Cmd+T(⌘T):ワークスペース全体でシンボルをグローバル検索

コマンドを使用すると、Go: Toggle Test Fileビジネスコードと対応するテストファイルをすばやく切り替えられます。


コードフォーマット

  • ショートカットキー:Shift+Alt+F(⇧⌥F)ワンクリックで現在のファイルをフォーマット
  • コマンドパレット/右クリックメニューから「ドキュメントのフォーマット」を実行することもできます

フォーマット設定

  1. 保存時の自動フォーマットを無効にする

    "[go]": {
        "editor.formatOnSave": false
    }
  2. Go プラグインを Go ファイルのデフォルトのフォーマットツールに指定する

    "[go]": {
        "editor.defaultFormatter": "golang.go"
    }
  3. gofumpt の厳格なフォーマットスタイルを有効にする(標準の gofmt よりも厳しい)

    "gopls": {
        "formatting.gofumpt": true
    }

    フォーマットは基盤として gopls に依存して実装されています


ユニットテスト

VS Code のサイドバーのテストパネル + コード上部の CodeLens ショートカットボタンで、以下をサポートします:関数/ファイル/パッケージ/プロジェクト全体のユニットテスト、ベンチマークテスト、パフォーマンスサンプリング。
コマンドパレットに入力すると、Go: testすべてのテストコマンドを確認できます。よく使うもの:

  • Go: Test Function At Cursor:カーソル位置の関数のテストを実行
  • Go: Test File:現在のファイルのすべてのテストケースを実行
  • Go: Test Package:現在のコードパッケージのすべてのテストを実行
  • Go: Test All Packages in Workspace:プロジェクト全体の一括テストを実行

最初の3つのコマンドは、gotests に基づいてテストケースのスケルトンを自動生成できます。プラグインでは以下の設定が可能です:

  • go.testOnSave:保存時にコードのテストを自動実行
  • go.coverOnSave:保存時にテストカバレッジを自動生成
  • go.testFlags:go test の実行パラメータをカスタマイズ

デバッグ

Go プラグインは Delve デバッガを利用して Go コードのデバッグを実現します。独自の機能:

  1. ローカルデバッグ + リモートサービスのデバッグ
  2. Delve の式構文を使用して、デバッグパネルでカスタムデータを表示します
  3. デバッグコンソールで dlv のネイティブコマンドを実行し、デバッグ設定を動的に変更、変数を確認できます
  4. 設定hideSystemGoroutinesシステムコルーチンの非表示/表示
  5. コードを右クリックして逆アセンブリビュー(Disassembly View)を開く
  6. 実験的機能:関数呼び出しのデバッグ、コアファイル分析、Mozilla rr リバースデバッグ

その他の関連ツール

その他の拡張機能