GoLand の新機能

GoLand 2020.3 では、go ルーチンダンプの調査や個別テーブルテストの実行やそれへの移動、 Testify テストフレームワークのサポートを活用できます。 また、time パッケージのサポート、高度なパッケージの処理方法、UI の改善、ウェブ開発やデータベースの処理に対応したさまざまな新機能、JetBrains の新しい共同開発とペアプログラミング向けサービスを含む多くの新しいコード編集機能があります。

新機能を対話形式の説明で確認したいですか? ウエルカム画面で最新の What's New in GoLand 2020.3コースをご覧ください。

デバッガの改善

デバッガでの go ルーチンスタックの確認

デバッガーには新しい Dump Goroutines アイコンが追加されているため、デバッグセッション中に特定の文字列をスタックに含む go ルーチンを簡単に見つけることができます。 アイコンをクリックするだけで、別のウィンドウにダンプが開きます。

重要な情報に集中しやすくするために、個別の go ルーチンまたは同じスタック内の go ルーチンを非表示にするオプションがあります。 go ルーチンを右クリックして必要なアクションを選択するか、削除をクリックして、ダンプウィンドウの集中の邪魔にならない特別な Hidden セクションに移動できます。

「Go Remote」構成の抑制

GoLand 2020.3 には、再接続が必要でない場合に Go Remote 構成を使ってプロセスを停止できる機能が追加されています。

構成の設定で、切断時のデバッガのデフォルトの動作を指定することができます。選択できるのは、Stop remote Delve processes(リモート Delve プロセスを停止)または Leave it running(実行を維持)で、毎回尋ねるように指定することもできます。

テストの機能強化

個別のテーブルテストの実行

テーブルテストのサポート

Run ツールウィンドウから個別のテーブルテストを実行し、それに移動できます。

次のような制限があります。

  • テストデータ変数はスライス、配列、またはマップである必要があります。 呼び出しと同じ関数に定義されている必要があり、初期化の後に変更することはできません(for ループの range 句を除く)。
  • 個々のテストデータエントリは構造体リテラルである必要があります。 サブセット名式で使用されているループ変数を呼び出し前に変更することはできません。
  • サブセット名式は、テストデータ内の文字列フィールド、テストデータ文字列フィールドの連結、%s%d 動詞による fmt.Sprintf() 呼び出しである場合があります。
GoLand はテスト関数内の引数を提案する

Testify サポートの拡張

IDE は、テストスイートを開始するテスト関数を認識するようになったため、サブセット名が文字列定数である限り、個別の suite.Runsuite.T().Run を開始できるようになりました。 さらに、トップレベルのテスト全体ではなく、Run ツールウィンドウからサブセットを再実行することも可能です。

また、GoLand は、1 つのテストケース内で、同じメソッド名を持つ Testify スイートを別々に実行できるようにもなりました。

また、testing.T を最初の引数として受け入れる関数またはメソッドを入力すると、GoLand は可能であれば自動的にその引数を渡します。 この機能は、testify/asserttestify/requiretestify/mock、および testify/suite パッケージの関数とメソッドで動作します。

コードインスペクション

GoLand はエディタ内の潜在的な問題を警告し、「Add format string argument(フォーマット文字列引数を追加)」インテンションを表示する

Incorrect usage of Println/Printf like functions(Println/Printf 類似関数の不正な使用)コードインスペクションによって、github.com/pkg/errorsgithub.com/sirupsen/logrus、および go.uber.org/zap パッケージの潜在的な問題が警告されます。

さらに、プレースホルダのハイライトと折り畳みを追加し、Add format string argument(フォーマット文字列引数を追加)インテンションを追加しました。

GoLand は、実行パスがキャンセル関数を呼び出さないばあいに警告を発する

context.CancelFunc not called code インスペクションは、コンテキストキャンセレーションの潜在的に安全でない使用をレポートします。 これは、context.WithCancel(および同様の関数)が返す ‘cancel’ 関数がすべての実行パスで呼び出されていない場合に、特に役立ちます。

このパッケージの詳細については、https://golang.org/pkg/context/ をご覧ください。

コード編集

GoLand は時間レイアウトのコード補完機能を提供

time パッケージのサポート

時間と期間をより簡単に操作できるように、time パッケージのサポートを追加しました。 GoLand は、コード補完(Ctrl+Space)を通じて、定義済みのレイアウトの要素を ISO-8601YYYY, MM, DD プレースホルダーとして提案します。

トークンで Ctrl+P を押すと、IDE にその意味が表示されます。 レイアウトトークンのシンタックスハイライトもあります。 コード補完はまた、文字列リテラル以外の標準的な時間レイアウトも提案します。

Alt+Enter で、インポートとコード補完からパッケージを除外する

よりスマートなパッケージ処理

IDE は、頻繁に使用し、プロジェクトの go.mod ファイルで明示的に宣言されているパッケージの補完項目の優先をより懸命に行えるよういなりました。

また、パッケージをプロジェクトのインポートパスと補完の提案から完全に除外するオプションも追加しました。 これは、Alt+Enter によって、または Settings | Go | Imports にある新しい Exclude for import and completion(インポートと補完から除外)ウィンドウにあります。

GoLand は、既存の宣言をシャドーイングする変数を異なる色でハイライトする

変数シャドーイングのサポート

GoLand では、変数シャドーイングをより簡単に見分けることができます。

  • IDE は、既存の宣言をシャドーイングする変数を異なる色で表示するようになりました。
  • Navigate to shadowing declaration(シャドーイング宣言に移動)インテンションアクションを使うと、シャドーイングされている宣言にすぐに切り替えることができます。
GoLand は type パラメータでの大括弧の使用をサポート

Type パラメータの大括弧

>Go チームによる design of generics の更新に従い、ジェネリクス構文では丸括弧の代わりに大括弧がサポートされるようになりました。これは、以前のプロポーザルエディションで実装されています。

Settings | GoEnable generics(Type パラメータの実験的サポート) 設定は、デフォルトではオフになっていることに注意してください。 この機能を使用するには、チェックボックスを明示的にオンにする必要があります。

Type パラメータの詳細については、こちらのブログ記事をお読みください。

その他の改善

GoLand はコード補完提案リストに「Test」と「Benchmark」ライブテンプレートを表示するようになった

テストファイルで func を入力すると、GoLand はデフォルトで、補完オプションに benchtest Live Templates を提案します。

GoLand はベンチマーク内の b.N で for ループを補完するように提案

ベンチマーク内に for を入力すると、IDE は b.N を受かった for ループで補完するように提案します。

GoLand はタイポの修正を提案

スペルおよび文法チェッカーの改善

Alt+Enter を押すと、ダイアログにすぐに提案が表示されるようになりました。 さらに、新バージョンの LanguageTool 文法チェックエンジン機能では、英語のチェックが改善され、10 個の言語が追加でサポートされています。

Code With Me

「Code With Me」の実際の動き

GoLand 2020.3 は JetBrains の共同開発およびペアプログラミング用の新しいサービスである Code With Me(EAP)をサポートしています。 Code With Me を使用すると IDE で現在開いているプロジェクトを他のユーザーと共有し、リアルタイムで共同作業を行うことができます。

詳細については、これらの記事を参照してください。

UI の改善

新しいようこそ画面

新しいようこそ画面

次の項目に迅速にアクセスできるように、ようこそ画面を新しくしました。

  • プロジェクトの検索。
  • IDE をカスタマイズするための設定。
  • IDE の機能性を拡張するプラグイン。
  • IDE 機能をさらに詳しく学習するためのチュートリアル。
設定の「Sync with OS theme(OS のテーマと同期)」オプション

IDE テーマと OS の環境設定の同期

Settings | Appearance & Behavior | Appearance | ThemeSync with OS オプションを選択すると、IDE のテーマが OS の環境設定に一致するように切り替えられます。

タグをドラッグしてエディタを分割

任意の場所にタブをドラッグアンドドロップしてエディタを分割

タブを任意の位置にドラッグしてドロップすると、メインのエディタ画面を縦方向または横方向に分割できます。 タブをドラッグする際、エディタ内のドロップできる場所がハイライト表示されます。

エディタに 2 つ目のファイルを開く

Project ビューの更新

Project ビューからファイルを操作する際の UX が改善されました。 Project ビューからファイルを開くと、フォーカスが自動的にエディタに切り替わるため、コーディングをすぐに開始できるようになりました。 スペースバーを押すと、IDE の Project ビューにファイルのプレビューが表示されます。

エディタで同時に複数のファイルを開く場合、1 つの単純なショートカットで行えるようになりました。 Project ビューでファイルを選択し、Shift+Enter を押して、IDE の Editor ウィンドウが分割されて、右手の部分にファイルが開きます。

VCS 関連の更新

VCS メニューを一新

VCS メニューを一新

VCS メニューはサブメニューで非表示にするのではなく、現在使用しているバージョン管理システムに合わせて変化するように変更され、主な VSC 機能にすぐにアクセスできるようになりました。

Git ステージングエリア

Git ステージングエリアのサポート

新しい Git ステージングエリアが用意されました! この機能は、Commit ツールウィンドウにのみ提供されています。

この機能を有効化するには、Settings | Version Control | Git にある Enable staging area チェックボックスをオンにしてください。 オンにすると、変更リストのサポートが無効化されます。

コミット UI には、ステージングされたファイルとステージング解除されたファイルが表示されます。 ファイルをステージングする準備が整ったら、隣にある + アイコンをクリックします。 すると、ファイルが Staged ノードに表示されるようになります。 ステージングエリアに変更を追加するには、ガターアイコンまたは Show Diff を使用することも可能です。

GoLand は不正なブランチ名を修正する

ブランチ操作の改善

ブランチ操作は次のように改善されました。

  • IDE は、新しいブランチの名前にある許可されていないシンボルを自動的に修正するようになったため、許可された書式に従ってブランチを作成できるようになりました。
  • IDE は、他のブランチと同様に、現在選択されているブランチで使用できるすべてのアクションを表示するようになりました。
  • リモートブランチに関しては、Merge into Current(現在のブランチにマージ)および Rebase Current onto Selected(現在のブランチを選択したブランチにリベース)の各アクションの名前を Pull into Current Using Merge(マージを使用して現在のブランチにプル)とPull into Current Using Rebase(リベースを使用して現在のブランチにプル)に変更しました。

その他の機能

すべてのプロジェクトのプラグインを無効化

プロジェクト単位でのプラグインの有効化

Enable for Current Project(現在のプロジェクトに対して有効化)または Enable for All Projects(すべてのプロジェクトに対して有効化)を選択することで、プラグインを現在のプロジェクトまたはすべてのプロジェクトに対して有効化できる機能を追加しました。 設定 | プラグインで、有効化または無効化するプラグインの歯車アイコンを押し、希望するオプションを選択してください。

設定内の macOS 対応システムショートカットキーマップ

macOS 対応のシステムショートカットキーマップ

macOS system shortcut(macOS システムショートカット)キーマップ(Settings | Keymap)は、システムショートカットとの拡張互換性を提供する macOS の代替キーマップを提供し、基本アクションに F キーを使用しなくてもよいようになりました。

プロファイラのフレームグラフの実際の動き

プロファイラーのフレームグラフ

プロファイラーと視覚化でのフレームグラフの検索の仕組みを改善し、メソッドのメトリクスをより素早く検索できるようになりました。 フレームグラフパネルの虫眼鏡アイコンをクリックするか、検索リクエストを入力できます。

また、検索フィールド、検索結果の迅速なナビゲーションに役立つ上/下矢印、およびフレームグラフ全体または特定のサブツリー内での検索を選択できる機能が追加されています。

ウェブ開発の変更

使用箇所から React コンポーネントを作成

使用箇所から React コンポーネントを作成

WebStorm チームの厚意により、GoLand 内部のウェブ開発サポートが大きく改善されました。 この分野で今後予定されている変更には、未解決の参照から React コンポーネントを作成する機能があります。 未解決のコンポーネントにキャレットを置き、Alt+Enter を押すと、対応するインスペクションを選択できます。

GoLand がマシン上の pnpm を検出

pnpm のフルサポート

GoLand が npm と yarn に加えて pnpm パッケージマネージャーを完全にサポートするようになりました。 pnpm-lock ファイルでプロジェクトを開き、マシンに pnpm がインストールされている場合、GoLand はこのプロジェクトのパッケージマネージャーを自動的に pnpm に変更します。 また、Settings | Languages and Frameworks | Node.js and NPM にあるパッケージマネージャーのリストに、専用の pnpm オプションが追加されています。

Webpack 設定

複数の webpack 構成の基本サポート

GoLand 2020.3 では、webpack 構成ファイルの検出を手動または自動で行うように選択できるようになりました。 新しいオプションは、Settings | Languages & Frameworks | JavaScript | Webpack にあります。

データベース操作

Couchbase Query をデータソースとして追加

Couchbase のサポート

DataGrip チームのスタッフのお陰で、GoLand は対応データベースに新たに Couchbase を追加することができました! IDE がサポートしているのは、Couchbase Analytics サービスではなく、 Couchbase Query サービスであることに注意してください。

GoLand は権限の許可をオブジェクトの DDL に表示する

権限許可のサポート

GoLand がオブジェクトの権限の許可を認識し、オブジェクトの DDL に表示するようになりました。 この機能は、MySQL、PostgreSQL、Greenplum、Redshift、および SQL Server で動作します。

GoLand はフォーマット付きの値を別のエディタに表示

セルの値を独立したエディターで操作

セルの値の個別のエディタが次のように改善されました。

  • 値が適切にフォーマットされていない場合でも、フォーマットされた値を表示するようになりました。
  • フォーマット済みの表示で値を編集し、元の一行の XML と JSON で更新できるようになりました。
  • フローに画面幅が重要である場合は、セル値エディタをデータエディタの下に移動できるようになりました。
  • このパネルで画像も表示できるようになりました。
「One-Row」エクストラクタの実際の動き

データベースのインポート/エクスポート

2 つの新しいエクストラクタを追加し、データ操作をより簡単に行えるようにしました。

  • One-Row は 1 つのカラムをコンマ区切りの文字列にコピーするのに役立ちます。
  • SQL-Insert-Multirow は複数の新しい行を挿入する単一の INSERT ステートメントを生成します。

さらに、CSV フォーマットの設定に、never quote values(値を引用符で囲まない)という新しいオプションが追加されています。