GoLand 2018.3 にはシグニチャのリファクタリング、Testifyサポート、Google App Engine/Go core dump/Mozilla rrを含むデバッガの強化が行われてます。
さらに新しいコードインスペクションやインテンションアクション、コード補完の改善やdiagramのサポート、VCS、Docker、Kubernetesサポートの強化など様々な新機能を搭載しています。
シグニチャの変更リファクタリング
Change Signature リファクタリングによりファンクション、メソッド、メソッド、メソッド仕様(method specification)を数クリックでリファクタリングできます!
名前を変更したりパラメータを追加、削除、順序並び替え、名前変更できます。メソッド仕様(method specification)をリファクタする際は実装も併せてアップデートするかどうかたずねます。
詳しくはこちらのブログをご参照ください: how to use Change Signature efficiently
リファクタリングの改善
リネームリファクタリング
リネームリファクタリングでは実行前に衝突が発生する可能性を検出して警告します。
インライン化
インライン化を行った際、インライン化されたコードをハイライトして何が起きたのか分かりやすくします。
Google App Engineアプリのデバッグ
GAEアプリをローカルで簡単に実行、デバッグできます。またApp Engineプロジェクトテンプレートも追加しました。
詳しくはこちらのブログをご参照ください: debugging Google App Engine applications.
コアダンプサポート
通常のデバッグでは何の問題が起きたのか解析できない場合があります。コアダンプが生成された場合も外部ツールなしにGoLandだけで解析できます!Run | Open Core Dumpよりコアダンプを選択してください。クラッシュダンプを自動的に作成させるには GOTRACEBACK=crash
を実行設定のEnvironment欄に追加してください。コアダンプはデフォルトでLinux上でのみ吐かれますが、GoLandによる解析自体はWindows、macOS、Linuxどのプラットフォームでも行えます。
Testifyサポート
テストスイートやテストメソッドをエディタから直接実行出来ます。
Comparison Failure ウィンドウでは失敗したアサーションを期待値と実測値をdiffで比較できます
関連して、GenerateポップアップメニューからはEmpty test file、Test for function、Tests for file、Tests for package も作れるようになりました。
コードインスペクション
ハンドルされないエラー
Unhandled Error code インスペクションではエラーを返すメソッド呼び出しでエラーをチェックしていないケースを警告します。
到達しないコード
Unreachable Code インスペクションでは絶対実行されないコードを検出します。
ストリングフォーマット引数を追加
Add format string argument インテンションアクションではポップアップで指定した値のプレースホルダーを生成します。ストリングにプレースホルダーを生成した後は指定した式をパラメータとして追加します。
またフォーマットストリングのプレースホルダーに引き数名を表示するようにコード折りたたみ(Cmd + -)をすることもできます。
生成インテンションアクション
コンストラクタの生成
Generate Constructor インテンションアクションで指定したstructタイプを作成するコンストラクタを生成します。
getterとsetterの生成
Generate getter/setter インテンションアクションでは定型コードを作成し、レシーバー型をポインタ/非ポインタとして受け取るか、また名前をカスタマイズできます。
コード補完
関数をメソッドの様に補完できます。 型 T
の値t
がある場合、t.Foo
と記述すると型 T
を最初の引数として受け取る関数がサジェストされます。
Basic completion を2回(Ctrl + Space + Space)押すことで補完候補が全て現れます。
エディタ
Complete Current Statement
Complete Current Statement は書きかけのコンポジットリテラル(struct、sliceなど)ステートメントに必要なカンマを自動的に挿入して、カーソルをステートメントの次のポジションに移動してくれる機能です。Cmd + Shift + Enter(macOS)またはCtrl + Shift + Enter(Windows/Linux)で動作します。
シャドー化された/シャドー化しているメソッドのインジケータ
埋め込み型でシャドー化された/シャドー化しているメソッドをガターアイコンで示します。アイコンをクリックするか、Cmd+U(macOS)またはCtrl+U(Windows/Linux)で相互にジャンプすることも出来ます。
フォーマットさせないファイルを指定
GoLand 2018.3より、”Editor | Code Style | Formatter Control | Do not format, optimize imports, arrange code:”で事前にパターンを指定しておけばコードフォーマット(Reformat code)、インポートの最適化(Optimize imports)、再配置(Rearrange)が行われるのを抑止することが出来ます。
Go テンプレート (html/template)
Go template (html/template),でコード補完、find usages、リネームリファクタリング、コードフォーマットが働きます。
デバッガの改善
デバッガのEvaluate Expressionとブレーク条件指定フィールド(Condition)でコード補完、インスペクション、クイックフィックスが働きます。
Mozilla rrデバッガのサポート
LinuxプラットフォームでMozilla rrデバッガをサポートします。プログラム実行から失敗するまでを記録するため、失敗した実行パスをデバッガ上で何度でもたどることが出来ます。
Mozilla rrさえインストールしておけば、すぐにこの連携をご利用いただけます。ブレークポイントを設定し、 Run/Debug ガターアイコンよりRecord and Debug オプションを選択するとデバッガタブが開き専用の Rewind ボタンが現れ、プログラムを前回のブレークポイント到達のタイミングまで巻き戻すことができます。
ダイアグラムサポート
ダイアグラムにより、プロジェクトをビジュアライズして俯瞰できます:
- Go module依存関係(
go.mod
ファイルのコンテクストメニューより) - JavaScriptとTypeScriptプロジェクトにおけるimportとexportの相互関係
- データベースとSQLのテーブルとリレーションシップ
詳しくはこちらのブログポストをご覧ください: blog post about diagrams support.
検索とナビゲーション
Improved Search Everywhere popup
プロジェクトとIDE内をより効率的にナビゲート出来ます。改善されたSearch Everywhereは他のナビゲーションダイアログであるFind Action、Go to class、Go to file、Go to symbolと統合されま、tabキーで別の検索コンテクストに移動出来ます。もちろん全てのナビゲーションダイアログは依然これまでと同じショートカットでアクセスできます。
Find and Replace in Pathダイアログ
Find in Path と Replace in Path ダイアログで複数行に渡る文字列を検索/置換出来るようになりました。
複数行のTODOコメント
GoLand 2018.3ではTODOコメントを複数行書けます。TODOに続くコメントはエディタでハイライトされ、TODOツールウィンドウでリストアップされます。TODOコメントで2行目以降はインデントをつけることで通常のコメントと区別してマルチラインTODOコメントとして認識されます。複数行のTODOコメントはGo、JavaScript、TypeScript、CSS、SCSSファイルでご利用いただけます。
GitHubプルリクエスト
GitHubプルリクエストをIDEがサポートします。VCS | Git | View Pull Requests で表示されるGitHub Pull RequestsツールウィンドウでPRを確認できます。diffをプレビューしたり、PRからコンテクストメニューを使ってローカルブランチを作って通常のブランチと同じくマージしたりできます。
ツール
Dockerプラグイン
Dockerfileのrun configurationでコマンドラインオプション cache-from
、cpu-shares
、cpuset-cpus
、force-rm
、 label
、 memory
、memory-swap
、shm-size
、no-cache
、pull
、quiet
、rm
を指定出来るようになりました。
Kubernetes プラグインのアップデート
Helm resource テンプレートファイルを解決し、コード補完、リネームリファクアリング、インスペクション、クイックフィックスが可能になりました。
詳しくはこちらのブログポストをご覧ください: read this blog post.
アクセシビリティ
ハイコントラストテーマ
JetBrainsは全てのユーザーに最高の体験をもたらすことにコミットしています。そこで今回ハイコントラストテーマを今回実装しました。
スクリーンリーダーサポートの強化
スクリーンリーダサポートを強化し、行番号、VCSアノテーション、デバッガ、ガターアイコンも読むことが出来るようになりました。
JavaScriptとTypeScript
JavaScriptの自動インポート
プロジェクトの依存からJavaScriptで必要なインポートを追加します。これはパッケージ内にTypeScript定義がある場合、またはパッケージがESモジュールとして書かれたソースを含む場合に働きます。
JavaScriptのパラメータヒント
JavaScriptファイルでパラメータヒントが表示されます。メソッドとファンクション内でパラメータの名前表示しますのでコードが読みやすくなります。
‘null’と’undefined’チェックの改善
静的解析が賢くなりundefined
または null
の値を検出して、メソッド呼び出しを行ったり、関数に渡したり、プロパティが参照されたりするパターンを検出します。
package.jsonの補完
package.jsonファイル内の依存について、最新のバージョンや依然のバージョンについて補完候補を提示するようになりました。
Cassandraデータベースサポート
Cassandra NoSQLデータベースをサポートしました。
その他の追加機能
- Attach アクションがOpen Projectポップアップから使えるようになりました。すでに開いているプロジェクトにディレクトリを追加して開くことが出来ます。File | Openからアタッチしたいプロジェクトを指定してください
- ファイルやプロジェクトをウェルカムスクリーンにドラッグ&ドロップして開くことができるようになりました
- Activity Monitor よりどのサブシステム、プラグインがCPUを消費しているのか表示可能に: Help | Activity Monitor
- プラグインページ Settings | Plugins が刷新され、プラグインの検索やインストールが行いやすくなりました
- インデックス作成が圧倒的に高速化されました