本日のEclipseConでCodetrailsがCode Recommenders 2.0のリリースを発表した。Code Recommendersプロジェクトは,ドキュメントの不十分な,あるいは不慣れなAPIで作業するサポート開発者たちの意見から生まれたものだ。Eclipse Junoリリーストレインの一部として公開されたCode Recommenders 1.0では,コードの重複パターン解析の結果を開発者に通知することで,この機能を実現していた。
最初のリリースには,コアJavaライブラリとさまざまなEclipseオープンソースライブラリに関する知識の集大成が組み込まれていた。この知識ベースによって例えば,現在のコンテキストにもっとも関連の深いメソッドを提示するような,インテリジェントなコード補完が可能になっている。
swtTextWidget = new Text(container, SWT.NONE); swtTextWidget.<control+space>
setLayoutData(Object layoutData) : void - Control - 80%
setText(String string) : void - Control - 53%
addModifyListener(ModifyListener listener) : void - Text - 38%
サポート対象のAPI(上の例ではSWT)を参照するたびに,Code Recommendersは知識ベースを少しずつ,Eclipseサーバから自動的にダウンロードする。
Code Recommenders 1.0のコードベースはEclipseのUIコードと強く結び付いていたため,Eclipse IDE以外での利用は非常に難しくなっていた。この問題は今回の2.0リリースには当てはまらない。リコメンデーションエンジンはリファクタされ,Eclipse特有のUIコンポーネントから切り離されているからだ。インテグレーションの方法はまだEclipseのUIに近いようだが,ツール自体はヘッドレスモードでも動作するようになっている。アノテート付きのJavaDocドキュメントを生成することも可能だ。
protected Control createDialogArea(Composite parent)
このダイアログの上部分(ボタンバーより上)を生成して,そのコンテントを返す。
関連項目:
createDialogArea
をオーバーライドするサブクラスは,以下のメソッドもオーバーライドする場合が多い:
configureShell(Shell):
63%okPressed():
51%
2.0で実現されたもうひとつのイノベーションは,コード補完を起動したメソッドの名称までも考慮した,コンテキスト対応の新たなリコメンダだ。例えばセッタやcreateメソッド内では,SWTのText
クラスのdispose()
メソッドよりもgetText()
メソッドがコールされる可能性が高い。dispose()
メソッドの中ならば,もっともコールされやすいText
のメソッドはdispose()
だ。このように外側のメソッドコンテキストから最初の単語(lowerCamelCaseを使用して)をピックすることで,レコメンデーションの精度を向上させることができる。
スニペットの共有手段を提供するインキュベーティングプロジェクトのSnipmatchによって,スニペットはひとつの中央場所で共有される。これは2.0リリースには含まれない機能だが,動作は比較的安定しているので,将来のリリースには取り込まれるだろう。
2.0リリースをベースに,Codetrails Connectがクラウドサポートを追加している。これによって,ライブラリ解析結果をプライベートサーバを使って他のチームメンバと共有したり,公開サーバを使ってコミュニティ全体と共有することが可能になる。後者の場合,どのコード補完イベント(ドロップダウンリストからコード補完が選択されたとき送信されるイベント)を送信するかは,ホワイトリストパッケージのリストをベースとして詳細に指定することができる。デフォルトリストには,コミュニティでイベントを共有する対象として,さまざまなオープンソースライブラリが挙げられている:
- android*
- com.google.*
- java.*
- javafx.*
- javax.*
- org.apache.*
- org.eclipse.*
- org.jboss.*
- org.w3c.*
- org.xml.*
最終的にはCodetrails Connectプラグインの使用によって,プライベートあるいは内部のコードパスがコミュニティサーバに公開されないようにする必要がある。あるいはまた,Codetrailsでホストするプライベートサーバを立てて,すべてのコードをチームメンバが共有するようなことも当然可能だ。
ControlFlow Minerという独立ライブラリを使用することで,コンパイル済の既存コードベースを解析して,自分たちでサーバを運用しようという組織向けのリコメンデーションを提供することも可能だ。Code Trailsでも,プライベートサーバの使用を可能にするいくつかのプランを用意している。将来的には他の言語がCodetrails Connectプラグインでサポートされる可能性もある。
Code Recommenders 2.0はEclipse Marketplaceおよびアップデートサイトからインストールできる。Codetrails ConnectあるいはControlFlowサービスに関する詳細は,CodetrailsのWebサイトを参照してほしい。