IntelliJ IDEA 2018.1の新機能

Java

コード補完のエンハンスメント

ストリームAPIの補完で型のキャストを考慮します。型キャスト後のメソッドも補完候補に挙げてくれるようになりました。

データフローアナリシス

データフローアナリシスを改善し、“greater than”(>)や“less than”(<)といった関係も追跡します。条件が常にtrue(またはfalse)な場合を検出してくれます。

変数に既に代入されているのと同じ値を代入しようとする場合も警告します。冗長なコードを排除するのに役立ちます。

末端処理のないストリームAPIチェーンにもデータフローアナリシスが働くようになりました。

また、イミュータブルなコレクションを変更しようとするコードについても警告します。

より詳しく(英語)

ServiceLoader宣言の欠如

Java 9 の新しいインスペクションとクイックフィックスを導入しました。module-info.javaファイルに宣言されるServiceLoaderでロードしたサービスをチェックします。欠けているステートメントをmodule-info.java に追加するクイックフィックスも提示します。

より詳しく(英語)

まだ存在しないクラスの作成

module-info.javaで解決できないクラスやエクスポートされるパッケージを作成するクイックフィックスを提供します。なおJava 9で空のパッケージはエクスポートできないため、クラスも同時に作成します。

冪等(Idempotent)ボディの検出

whileループ内の処理が冪等(idempotent = 繰り返し処理しても結果が変わらない)なボディを検出して警告します。多くの場合はグで、プログラムがハング状態に陥ります。

無限ループ内でbreakするコードを条件付きループに変換

無限ループ内の先頭、または末尾で条件付きbreakを行うコードを条件付きループに変更するクイックフィックスを実装しました。多くの場合より明快なコードになります。

冗長な明示的close()呼び出し

try-with-resourcesブロック内の不要で冗長なclose()呼び出しを検出します。

無限のストリームを検出

無限に処理が続く可能性のあるストリームを警告します。この様なストリーム処理は例外を投げなければ止まらず、無限ループやメモリ不足の原因となります。

コピーコンストラクタで不足しているフィールドの検出

コピーコンストラクタなのにコピーしていないフィールドがある場合警告します。

配列の要素をソート

配列のイニシャライザ並びに可変長引数でSort content アクションを提示します。要素を辞書順にソートします。

ユーザー定義のPostfix Completionテンプレート

postfix code completionが改善され、Preferences | Editor | General | Postfix CompletionよりユーザーがJava向けのテンプレートを定義したり、事前に定義されているテンプレートを編集したりリネームしたり出来るようになりました。

インスペクション結果より部分Fix

Fix partially ボタンがInspection Results Tool の右側に実装されました。指定したスコープで修正方法が複数ある場合に現れます。クイックフィックス候補は種類によってグループ化されています。

Test生成のプレフィックス

インテンションアクションよりテストを生成できますが、IntelliJ IDEA 2018.1ではPreferences | Editor | Code Style | Java | Code Generationよりテストクラスのテンプレートをカスタマイズしたり、命名を**Test(サフィックス)からTest**(プレフィックス)に変更することもできます。

JUnit 5 @Tag アノテーションサポート

IntelliJ IDEA 2018.1ではJUnit5 @Tag アノテーションをサポートし、タグされたクラスやメソッドをテストスコープに指定できるようになりました。タグはRun/Debu設定ダイアログで指定できます。

JVMデバッガ

Throw Exception

IntelliJ IDEA 2018.1ではRun | Throw Exceptionメニューや、デバッグセッションのコンテクストメニューよりコードを変更すること無く、特定の箇所で例外を投げることが出来ます。

スタックトレースをコンソールに出力

ブレークポイント到達時のスタックトレースをコンソールに出力できます。Breakpoints ダイアログのスタックトレースオプションで設定できます。複数のブレークポイントのスタックトレースを同時にコンソールのログで確認できます。

カレントスレッドのスタックトレースをコピー

コンテクストメニューのCopy Stackアクションよりスタックトレースをコピーできます。

非同期スタックトレースのアノテーション

Asyncスタックトレースでは@Async.Schedule@Async.Execute アノテーションを使ってキャプチャするポイントを設定出来ます。デフォルトでは含まれないアノテーションなのでMavenの依存を設定する必要があります。

Javaコンパイラ

Preferences | Build, Execution, Deployment | Compiler | Java CompilerUse –release option for cross-compilation (Java 9 and later) オプションはデフォルトで有効に設定されています。–source と –target をJava 9でJava 9クラス向けにリンクする必要がある場合、無効化してください。

また、特定のバージョンのECJ compilerを使えるようになりました。EclipseをUse Compiler ドロップダウンメニューより選択して、使いたいコンパイラのjarのパスを指定してください。

エディタ

折りたたまれたコードのハイライト

折りたたまれたコード内の問題を見つけやすくなりました。折りたたまれていてもエラーや警告があればハイライトしてくれます。

検索結果で折りたたまれたコードのハイライト

現在のファイル内で折りたたまれた箇所に検索でヒットするものがあればハイライトします。

インライン外部アノテーション

ソースコードがなくても外部ファイル(annotations.xml)によりアノテートできますが、本バージョンよりアノテートがエディタ内で見えるようになりました。

推論アノテーションヒント(Infferred Annotation Hints

自動で推論された@NotNullまたは@Nullableアノテーションがエディタ内でインラインに確認できるようになりました。Preferences | Editor | General | Appearance内のShow inferred annotations inlineより有効化出来ます。

プロジェクト設定

“provided”スコープをクラスパスに追加

ApplicationSpring BootRun/Debug設定にInclude dependencies with “Provided” scopeチェックボックスを設けました。プロジェクトでprovidedがスコープの依存があり、かつコンテナ内(依存がコンテナに提供される)でもスタンドアロン(依存が自動的に提供されない)でも動かす場合に便利です。

Spring BootアプリケーションではInclude dependencies with “Provided” scopeオプションはデフォルトで有効化されています。

新しいChange Module Names…アクション

Project StructureダイアログのChange Module Names…アクションより複数のモジュール名をまとめてリネーム出来るようになりました。

検索と置換

アノテートされたメソッドの呼び出しをStructural Searchで検索できるようになりました。検索テンプレートから、または独自の検索条件を指定することができます。

Replace in Pathの改善

Replace in Pathダイアログで正規表現の置換結果をプレビューできるようになりました。

Kotlin

バンドルバージョンのKotlinプラグインがKotlin 1.2.30になりました。

Kotlinコードをパッケージに渡す

プロジェクトツールウィンドウでパッケージにコードの断片を直接貼り付けられます。新しいKotlinファイルが作成されます。

scoping function呼び出しを変換するインテンション

scoping functionコールをletrunに、またapplyに変換したり、逆にしたりすることが出来ます。

Groovy

@CompileStaticにコンバートするアクション

Groovyで静的コンパイルの恩恵にあずかる便利な方法ができました。既存のGroovyコードに対して@CompileStaticアノテーションをまとめて付加出来ます。

このアクションはコンテクストメニューのRefactor | Convert to @CompileStaticよりご利用いただけます。

より詳しく(英語)

不必要なインポートエイリアス

Groovyファイルの不要なインポートエイリアスを検出してくれます。またstaticインポートに対してもこの警告は働きます。

Scala

インラインヒント

パラメータ名、メソッドの戻り値型、変数型をインラインヒントで表示します。どのヒントを表示/非表示とするかはカスタマイズできます。

Structure Viewの改善

Structure Viewfinal, abstractそしてアクセス修飾子、ネスト定義、プライマリコンストラクタタイプ、ケースクラスパラメータのメンバーなど、コードについてより詳しく表示します。Structure Viewではメンバーのオリジナルクラスを継承まで表示するオプションもあります。

リファクタリング: 関数パラメータのインライン化

ファンクションとパラメータをインライン化できます。

Android

IntelliJ IDEA 2018.1 はInstant Appや新しいレイアウトエディタ、プロファイリングツールなど Android Studio 3.0 の新機能を取り込んでいます。

Spring Boot

HTTPリクエストマッピングをエディタから新しいREST clientでアクセス

Spring Boot webアプリケーションを起動後@RequestMappingアノテーションの横のガター領域に新しいアイコンが現れます。アイコンをクリックすると拡張子が.httpとなるスクラッチファイルが現れ、エディタからHTTPリクエストを自由に操ることができるようになります。

@GetMappingアノテーションについてはブラウザで開くか、HTTP Requestエディタを開くか選べます。

アプリケーションコンテクストで登録されたbeanの新しいガターアイコン

IntelliJ IDEAはRun DashboardまたRunツールウィンドウのBeansタブでアプリケーションコンテクストで登録されたbeanを全て表示します。この機能を拡張し、エディタでも利用出来るようにしました。起動中であればbeanの横のガターアイコンを表示します。ガターアイコンをクリックして依存するbeanへジャンプできます。

バージョン管理

部分Gitコミット(git add -p)をサポートしました。コードの変更を別のチェンジリストに移動したり、コミット時に特定の変更領域をはずすことが出来ます。

チェンジリストの移動はDiffペインのコンテクストメニューから、またはエディタのガターより行えます。

ローカルチェンジのグループ方法のトグル

ローカルチェンジ(コミットされていない変更内要)をグルーピングする方法をディレクトリ、モジュール、またはリポジトリに切り替えられます。

コミットハッシュからのナビゲート

コミット詳細ペイン内のLogタブでコミットハッシュをハイライトしています。クリックすると当該コミットにジャンプすることが出来ます。これはGitMercurialの両方で可能です。

リビジョンタブの履歴表示の改善

ファイル変更の詳細情報をLogタブのShow History for a Revisionアクションで確認できます。 またHistory for revisionを改善してパフォーマンスが大変向上しました。

リポジトリのクローン

Clone RepositoryダイアログはGitGitHubで共通のUIになりました。

GitHubのリポジトリの自動補完はClone Repositoryダイアログでも働きます。補完を働かせるにはLog in to GitHubをクリックしてGitHubアカウントでログインしてください。

CommitとPush…アクションの新しいショートカット

Commit Changes ダイアログのCommit and Push… アクションにデフォルトのショートカットが割り当てられました。Alt + Cmd + K (macOS) または Alt + Ctrl + K (on Windows and Linux)を使ってください。

Git ブランチポップアップ

rebase中にGit ブランチポップアップAbort RebaseContinue RebaseSkip Commitアクションが表示されるようになりました。

ユーザーインターフェース

新しいドキュメンテーションUI

ドキュメンテーションポップアップがコンパクトに、ライトウェイトになりました!JavaScriptとTypeScriptでメソッドのパラメータ、型、戻り値がよりはっきりと、一貫性のある表示になりました。

JavaScript & TypeScript

TypeScriptの改善

最新のTypeScript 2.7サポートに加え、Implement Membersアクションや解決されていないプロパティのSurround with type guard クイックフィックスを追加しました。

Vueプロジェクトの作成

Vue.jsプラグインをインストールしている場合、Vue CLI.を使ってVueプロジェクトを作成出来るようになりました。

vue-cliはnpm install -g vue-cliでインストールできます。その後でCreate New Project – Vue.jsを新規プロジェクトのスクリーンで選択し、プロジェクトで使いたいテンプレートやツールを選択してください。

Prettierでリフォーマット

PrettierプラグインをインストールしておけばReformat with Prettierアクション(Alt-Shift-Cmd/Ctrl-P)で選択したコード、ファイル、ディレクトリをPrettierでフォーマットできます。Prettierはプロジェクトで依存しておくか、マシングローバルにインストールしておく必要があります。

Hunspell

Hunspell辞書サポート

HunspellプラグインがIntelliJ IDEAとコンパチブルになりました。Hunspellはより沢山の単語リストがあり、高速で、かつ誤検出が少なくなります。

より詳しく(英語)

Docker

Docker composeサポートの改善

Dockerプラグインが複数のDocker Composeファイルをサポートし、docker-compose.ymlだけでなくdocker-compose.override.ymlもサポートするようになりました。

Docker composeサービス

Dockerプラグインはrunの後にDocker-compose実行設定で起動するサービスを選択できるようになりました。

プラグインは既存の Docker-Compose でデプロイしたものだけでなく全てのCompose projectsを表示します

Kubernetes

YAML Kubernetesリソースファイルサポート

Kubernetes プラグインはKubernetes resource ファイルv1.5から最近リリースされたv1.9をサポートします。新しいプラグインはapiVersion を初めとするファイル内のフィールドを確認し、Kubernetes resourceファイルだと識別します。

より詳しく(英語)

YAML Kubernetesリソースファイルの補完

KubernetesYAMLファイルを素早く書き上げられるよう、Smart Completionを活用してください。書いているレベルに応じて必要なキーを自動補完してくれます。

YAML Kubernetes resourceファイルでもコード補完が働きます。プラグインはリソース内で使える適切な値をサジェストします。

Kubernetesライブテンプレート

Kubernetes プラグインはデフォルトでLive Template を用意しており、YAML Kubernetes resource ファイルを素早く書けます。

YAML Kubernetesファイルのナビゲーション

ガターアイコンを使ってラベル定義間とラベルセレクタ間を素早くジャンプできます。

ラベルセレクタからエディタ内でJump from a label selector to a label definition inside the editor if there is a direct match for a label, both for the key and for the value.

YAML Kubernetesファイルのインスペクション

またYAMLファイルで指定したapiVersionkindで適用出来ないプロパティを使おうとしていると警告します。

YAML Kubernetes resource定義で不足しているキーがあればそれを追加するクイックフィックスを提供します。

また重複するキーがあれば警告し、クイックフィックスで削除出来ます。

またYAML Kubernetes resource ファイルで編集できないキーを検出してハイライトし、削除するクイックフィックスを提供します。

JSON Kubernetes resource ファイルもJSON schema を使ってサポートします。

コード補完Quick Documentation Popup も JSON Kubernetes resource ファイルで利用できます。

JSON Kubernetes resourceファイルのインスペクション

KubernetesプラグインはJSON スキーマを使ってキーを検証し、不正なプロパティや値を使っていれば警告します。

また、不足しているプロパティがあれば追加するようアドバイスします。

もちろん重複しているプロパティも検出します。

紹介プログラムにより新規、他社より移行のお客様は最大1,000円割引。既存のお客様は紹介件数に応じて割引となります。

コマーシャルライセンス年間サブスクリプション 新規
パーソナル 年間サブスクリプション 新規

特定商取引に関する法律に基づく表示