2010年3月15日付けで、新CDE(Curl Development Tools for Eclipse)がリリースされています。
このバージョンでは、アーキテクチャの大幅な見直しや機能拡張が行われており、開発者の使い勝手も大きく向上しています。
本稿では、
- これを期にクラシックIDEから乗り換える方
- 単純にCDEに興味がある方
などを対象に、CDEの新機能の概要を、従来のクラシックIDEと比較しながらご紹介します。
ソースコード編集
今バージョンから、新たに内部コンポーネントCPA(Curl Program Analyzer)が導入されています。このコンポーネントは、その名前の示す通り、Curlのソースコードの文法的・意味的解析を動的に行い、その結果を提供するといった役割を担っています。
これにより、開発者にとって有用な機能が提供されています。
エラー、警告関連
CPAによるエラー関係の機能拡張は以下のようなものがあります。
コーディング時にリアルタイムでエラーが検出・表示されます
従来のように、エラー検出のためにアプレットを実行する必要がありません。
加えて、RTEと異なりCPAは実行可能なコードを生成する必要がないため、たとえエラーを検知しても解析を続け、1度により多くのエラーを報告してくれます。
つまりクラシックIDEなどで起こり得た、
アプレット実行 ⇒ エラー発生 ⇒ 修正後、再度実行 ⇒ 別の場所で前回検出されなかった別エラー発生
などの煩わしい作業を繰り返す必要はかなり減少するということです。
(残念ながら、any型がらみなどで実行時にしか検出できないエラーもあります)
エラーの発生箇所が追いやすくなっています
エラーがある行には、エディタ左のルーラーに×印のアイコンがアノテーションとして示されます。
同様に右のルーラーには赤いマーカーとして示され、編集中のファイル上で発生しているエラー箇所が一目でわかるようになっています。
さらに、発生箇所自体もより正確に示されます。
- クラシックIDE … 発生箇所最初の行、およびカラム
- CDE … 上記に加え、エラーの終了位置
CDEでは赤い波線により、より正確にエラー箇所が提示されていることがわかります。
警告を出すことが出来ます
エラーではないものの、開発者に注意を促したい実装には警告が表示されます。
警告にはオプション警告と非オプション警告があり、デフォルトではオプション警告は全てオフになっています。
以下に一例を示します。
非オプション警告
- deprecated(非推奨)の定義の使用、同一ファイルの複数回includeなど
オプション警告
– ローカル変数の未使用、不要なキャスト、メソッドのオーバーライド保証など
これらのオン/オフは、compiler-directivesのように自分で指定することが可能です。(後述)
なお、前述の2項目は警告についても同様です。(アイコンや色は異なります)
エラーや警告の制御が可能です
マニフェスト宣言やパッケージ宣言に引数を渡すことにより警告の制御が可能です。
詳細は、Curl開発ユーザーガイド(Help/Help Contentsより起動)の
概念 ⇒ Curlプログラムアナライザ
を参照してください。
さらにpragmaマクロを使用すれば、エラーの抑制などCDEの挙動を変更できます。
こちらはHelp/Curl IDEドキュメントよりpragmaのページを参照してください。
コンテンツアシスト
各種コード補完も大きく拡張されています。
従来のAPI補完に加え、テンプレートが提供されます。
アシストダイアログは、Ctrl+Spaceを押すたびに
API + テンプレート ⇒ APIのみ ⇒ テンプレートのみ
と内容が変わります。
API補完のダイアログもより詳細になっています
自身が含まれるパッケージ名や現在ダイアログ内で選択されている項目に関連する説明が表示されます。
また、アイコンにより、そのCurl要素の種類(クラス/プロシージャ/マクロなど)がわかるようにもなっています。
テンプレートが使用できます
テンプレートを使用してコードの雛形を出力できます。
例えば、{define-p まで入力後に、Ctrl+Spaceキー押下でテンプレートを選択すると
下図のようにプロシージャ定義の雛形が出力されます。
青い四角で囲われている部分は、TABキーで遷移可能です。
CDEでは、あらかじめCurlでよく使用される構文をテンプレートとして登録してありますが、
自分で追加・編集することも出来ます。
設定は Window/Preferences/Curl/エディター/テンプレート から行ってください。
テンプレート変数など文法はJDTと同様です。
その他自動補完
“, {, ( などを自動で閉じてくれるようになっています。
Window/Preferences/Curl/エディター/入力 ⇒ 自動で閉じる でそれぞれオン/オフできるようになっています。
ナビゲーション
CDEでは、クラシックIDEにはなかった各種ナビゲーションが用意されています。
定義を開く
従来のIDEと同様にコード中のクラス名などからジャンプできます。
定義を開きたい対象にキャレットを置いた後に、F3あるいは右クリックメニューから”定義を開く”を選択して下さい。
加えて、プロジェクトに含まれる任意のクラスにジャンプできるダイアログが提供されています。
SHIFT+CTRL+F3、あるいはNavigate/Curl定義を開く を選択してください。
検索対象はパターン(ワイルドカード、キャメルケース)を使用して柔軟に指定できます。
パターンについては、Curl 開発ユーザーガイド > 参照 > ダイアログとウィザード を参照してください。
型階層を開く
クラスに関しては型定義だけではなく、定義階層(スーパークラス、サブクラス)をツリー形式で確認、ジャンプすることが出来ます。
上記と同様に、型階層を開きたい対象にキャレットを置いた後に、F9あるいはメニューから”型階層を開く”を選択してください。
階層情報がツリー形式で、階層ビューに表示されます。(選択されているクラスのメンバも併せて表示されます。)
表示順は階層ビュー右肩のアイコンで変更可能のため、目的に沿ったものを選択できます。
ただ階層内のクラス定義にジャンプしたいだけの場合は、クイック型階層が便利です。
ショートカットキーは、CTRL+Tです。
クイック型階層の場合は、階層ツリーがホーバーに表示され、さらにフィルタリングも可能です。
これによりキーボードから手を離さずに目的のクラスに飛べるのです。
パンくずリストも用意されています
クラシックIDEでは、同一ファイル内のナビゲーションとして、エディタの上にドロップダウンリストが用意されていました。
CDEではこれに代わり、パンくずリストが提供されています。
使用する場合は、ALT+SHIFT+B, あるいはNavigate/パンくずリストの表示 を選択してください。
パンくずリストは
プロジェクト -> パッケージ -> ファイル -> トップレベル要素(クラスやプロシージャなど) -> メンバ
という順で構成・表示されています。
各レベルでジャンプ先を選択できるようになっていますので、同一ファイル内での移動のみサポートしていたクラシックIDEと違い
任意のジャンプ先を指定することが出来ます。