GoLand 2018.3 にはシグニチャのリファクタリング、Testifyサポート、Google App Engine/Go core dump/Mozilla rrを含むデバッガの強化が行われてます。

さらに新しいコードインスペクションやインテンションアクション、コード補完の改善やdiagramのサポート、VCS、Docker、Kubernetesサポートの強化など様々な新機能を搭載しています。

シグニチャの変更リファクタリング

Change Signature refactoring in action

Change Signature リファクタリングによりファンクション、メソッド、メソッド、メソッド仕様(method specification)を数クリックでリファクタリングできます!

名前を変更したりパラメータを追加、削除、順序並び替え、名前変更できます。メソッド仕様(method specification)をリファクタする際は実装も併せてアップデートするかどうかたずねます。

詳しくはこちらのブログをご参照ください: how to use Change Signature efficiently

リファクタリングの改善

Problems Detected dialog

リネームリファクタリング

リネームリファクタリングでは実行前に衝突が発生する可能性を検出して警告します。

Inline refactoring highlights code after applying

インライン化

インライン化を行った際、インライン化されたコードをハイライトして何が起きたのか分かりやすくします。

Google App Engineアプリのデバッグ

Debugging Google App Engine application

GAEアプリをローカルで簡単に実行、デバッグできます。またApp Engineプロジェクトテンプレートも追加しました。

詳しくはこちらのブログをご参照ください: debugging Google App Engine applications.

コアダンプサポート

Exploring core dumps in the Debugger pane

通常のデバッグでは何の問題が起きたのか解析できない場合があります。コアダンプが生成された場合も外部ツールなしにGoLandだけで解析できます!Run | Open Core Dumpよりコアダンプを選択してください。クラッシュダンプを自動的に作成させるには GOTRACEBACK=crash を実行設定のEnvironment欄に追加してください。コアダンプはデフォルトでLinux上でのみ吐かれますが、GoLandによる解析自体はWindows、macOS、Linuxどのプラットフォームでも行えます。

Testifyサポート

Run suites from the editor

テストスイートやテストメソッドをエディタから直接実行出来ます。

Comparison Failure ウィンドウでは失敗したアサーションを期待値と実測値をdiffで比較できます

関連して、GenerateポップアップメニューからはEmpty test fileTest for functionTests for file、Tests for package も作れるようになりました。

コードインスペクション

Unhandled Error warning in the editor

ハンドルされないエラー

Unhandled Error code インスペクションではエラーを返すメソッド呼び出しでエラーをチェックしていないケースを警告します。

Unreachable Code warning in the editor

到達しないコード

Unreachable Code インスペクションでは絶対実行されないコードを検出します。

ストリングフォーマット引数を追加

Add format string generates a placeholder via popup

Add format string argument インテンションアクションではポップアップで指定した値のプレースホルダーを生成します。ストリングにプレースホルダーを生成した後は指定した式をパラメータとして追加します。

またフォーマットストリングのプレースホルダーに引き数名を表示するようにコード折りたたみ(Cmd + -)をすることもできます。

生成インテンションアクション

Generate Constructor adds functions

コンストラクタの生成

Generate Constructor インテンションアクションで指定したstructタイプを作成するコンストラクタを生成します。

Generate getter and setter adds template

getterとsetterの生成

Generate getter/setter インテンションアクションでは定型コードを作成し、レシーバー型をポインタ/非ポインタとして受け取るか、また名前をカスタマイズできます。

コード補完

Code completion provides a set of functions which accept value of type as the first argument

関数をメソッドの様に補完できます。 型 T の値t がある場合、t.Fooと記述すると型 T を最初の引数として受け取る関数がサジェストされます。

Basic completion を2回(Ctrl + Space + Space)押すことで補完候補が全て現れます。

エディタ

Complete Current Statement inserts trailing comma

Complete Current Statement

Complete Current Statement は書きかけのコンポジットリテラル(struct、sliceなど)ステートメントに必要なカンマを自動的に挿入して、カーソルをステートメントの次のポジションに移動してくれる機能です。Cmd + Shift + Enter(macOS)またはCtrl + Shift + Enter(Windows/Linux)で動作します。

Navigation between shadowed and shadowing methods

シャドー化された/シャドー化しているメソッドのインジケータ

埋め込み型でシャドー化された/シャドー化しているメソッドをガターアイコンで示します。アイコンをクリックするか、Cmd+U(macOS)またはCtrl+U(Windows/Linux)で相互にジャンプすることも出来ます。

Excluding a specific set of files from the formatting actions

フォーマットさせないファイルを指定

GoLand 2018.3より、”Editor | Code Style | Formatter Control | Do not format, optimize imports, arrange code:”で事前にパターンを指定しておけばコードフォーマット(Reformat code)、インポートの最適化(Optimize imports)、再配置(Rearrange)が行われるのを抑止することが出来ます。

Go テンプレート (html/template)

Code completion and Rename refactoring in html/template

Go template (html/template),でコード補完、find usages、リネームリファクタリング、コードフォーマットが働きます。

デバッガの改善

Evaluate Expression warns about invalid array index and provides code completion

デバッガのEvaluate Expressionとブレーク条件指定フィールド(Condition)でコード補完、インスペクション、クイックフィックスが働きます。

Mozilla rrデバッガのサポート

Debugging with Mozilla rr

LinuxプラットフォームでMozilla rrデバッガをサポートします。プログラム実行から失敗するまでを記録するため、失敗した実行パスをデバッガ上で何度でもたどることが出来ます。

Mozilla rrさえインストールしておけば、すぐにこの連携をご利用いただけます。ブレークポイントを設定し、 Run/Debug ガターアイコンよりRecord and Debug オプションを選択するとデバッガタブが開き専用の Rewind ボタンが現れ、プログラムを前回のブレークポイント到達のタイミングまで巻き戻すことができます。

ダイアグラムサポート

Go module dependencies diagram

ダイアグラムにより、プロジェクトをビジュアライズして俯瞰できます:

  • Go module依存関係(go.mod ファイルのコンテクストメニューより)
  • JavaScriptとTypeScriptプロジェクトにおけるimportとexportの相互関係
  • データベースとSQLのテーブルとリレーションシップ

詳しくはこちらのブログポストをご覧ください: blog post about diagrams support.

検索とナビゲーション

Search Everywhere popup shows search results

Improved Search Everywhere popup

プロジェクトとIDE内をより効率的にナビゲート出来ます。改善されたSearch Everywhereは他のナビゲーションダイアログであるFind ActionGo to classGo to fileGo to symbolと統合されま、tabキーで別の検索コンテクストに移動出来ます。もちろん全てのナビゲーションダイアログは依然これまでと同じショートカットでアクセスできます。

Searching multiline code snippet via Find in Path dialog

Find and Replace in Pathダイアログ

Find in Path と Replace in Path ダイアログで複数行に渡る文字列を検索/置換出来るようになりました。

複数行のTODOコメント

Multiline TODO in Go project.

GoLand 2018.3ではTODOコメントを複数行書けます。TODOに続くコメントはエディタでハイライトされ、TODOツールウィンドウでリストアップされます。TODOコメントで2行目以降はインデントをつけることで通常のコメントと区別してマルチラインTODOコメントとして認識されます。複数行のTODOコメントはGo、JavaScript、TypeScript、CSS、SCSSファイルでご利用いただけます。

GitHubプルリクエスト

GitHub Pull Requests shows searching results by state:close and RP description

GitHubプルリクエストをIDEがサポートします。VCS | Git | View Pull Requests で表示されるGitHub Pull RequestsツールウィンドウでPRを確認できます。diffをプレビューしたり、PRからコンテクストメニューを使ってローカルブランチを作って通常のブランチと同じくマージしたりできます。

ツール

--pull in Build options field in the Dockerfiles run configuration

Dockerプラグイン

Dockerfileのrun configurationでコマンドラインオプション cache-fromcpu-sharescpuset-cpusforce-rmlabel、 memorymemory-swapshm-sizeno-cachepullquietrmを指定出来るようになりました。

Code completion in Helm template

Kubernetes プラグインのアップデート

Helm resource テンプレートファイルを解決し、コード補完、リネームリファクアリング、インスペクション、クイックフィックスが可能になりました。

詳しくはこちらのブログポストをご覧ください: read this blog post.

アクセシビリティ

High-contrast theme

ハイコントラストテーマ

JetBrainsは全てのユーザーに最高の体験をもたらすことにコミットしています。そこで今回ハイコントラストテーマを今回実装しました。

スクリーンリーダーサポートの強化

スクリーンリーダサポートを強化し、行番号、VCSアノテーション、デバッガ、ガターアイコンも読むことが出来るようになりました。

JavaScriptとTypeScript

Autoimports in JavaScript

JavaScriptの自動インポート

プロジェクトの依存からJavaScriptで必要なインポートを追加します。これはパッケージ内にTypeScript定義がある場合、またはパッケージがESモジュールとして書かれたソースを含む場合に働きます。

Parameter hints in JavaScrip

JavaScriptのパラメータヒント

JavaScriptファイルでパラメータヒントが表示されます。メソッドとファンクション内でパラメータの名前表示しますのでコードが読みやすくなります。

The inspection notifies that method if null or undefined

‘null’と’undefined’チェックの改善

静的解析が賢くなりundefined または nullの値を検出して、メソッド呼び出しを行ったり、関数に渡したり、プロパティが参照されたりするパターンを検出します。

Code completion in package.json

package.jsonの補完

package.jsonファイル内の依存について、最新のバージョンや依然のバージョンについて補完候補を提示するようになりました。

Cassandraデータベースサポート

Cassandra database support

Cassandra NoSQLデータベースをサポートしました。

その他の追加機能

Reworked Plugins page
  • Attach アクションがOpen Projectポップアップから使えるようになりました。すでに開いているプロジェクトにディレクトリを追加して開くことが出来ます。File | Openからアタッチしたいプロジェクトを指定してください
  • ファイルやプロジェクトをウェルカムスクリーンにドラッグ&ドロップして開くことができるようになりました
  • Activity Monitor よりどのサブシステム、プラグインがCPUを消費しているのか表示可能に: Help | Activity Monitor
  • プラグインページ Settings | Plugins が刷新され、プラグインの検索やインストールが行いやすくなりました
  • インデックス作成が圧倒的に高速化されました