Eclipse Code Recommenders 2.0发布,支持Crowd

在2013年10月31日的EclipseCon上,Codetrails发布了Code Recommenders 2.0。Code Recommenders项目源于这样一个想法——在开发人员使用不熟悉或者缺少详细文档的API时,为他们提供帮助。Code Recommenders 1.0作为Eclipse Juno发行序列的一部分推出,它通过分析代码频率模式并将分析结果展示给开发人员来实现代码推荐功能。

第一个版本有一个嵌入式语料库,其中包含了关于核心Java库和多种Eclipse开源库的知识。举例来说,该知识库允许智能代码补全,即把当前上下文中最相关的方法推荐给开发人员。

swtTextWidget = new Text(container, SWT.NONE);
swtTextWidget.
  • 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之外使用。Code Recommenders 2.0已经将推荐引擎从Eclipse特有的UI组件中重构出来,上述情况不复存在。该工具在Eclipse UI中的集成仍然以一种类似的方式出现,但现在可以在Headless模式下运行,比如,生成带注释的JavaDoc文档:

protected Control createDialogArea(Composite parent)

创建和返回对话框上部(按钮栏上方)的内容。

参见: 重载createDialogArea方法的子类通常也会重载下面两个方法:

  • configureShell(Shell): 63%
  • okPressed(): 51%

建立在Code Recommenders 2.0基础上的另一项创新是新的上下文相关推荐功能,它考虑了代码补全功能触发点所在的方法的名称。例如,在setter或create方法中,与dispose()相比,更可能调用SWT Text类的getText()。而在一个名为dispose()的方法中,最可能调用的Text类的方法是dispose()。通过选取封闭方法上下文中的第一个单词(使用lowerCamelCase),推荐准确度可以得到提升。

Snipmatch是一个正在孵化中的项目,提供一种在一个集中的位置与其他人共享代码片段的方法。它还不是Code Recommenders 2.0的一部分,但已经相对稳定,很可能被整合到未来的版本中。

Codetrails Connect增加Crowd支持。该功能建立在Code Recommenders 2.0基础上,允许通过私有服务器在团队成员之间或者通过公共服务器在整个社区范围内共享库分析结果。在后一种情况下,开发人员要根据白名单包的列表准确指定需要发送的代码补全事件(在用户从下拉列表中选择一项代码补全时发送)。可以在社区范围内共享事件的默认包列表中包含了多种开源库:

  • 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插件可能支持其它语言。

读者可以从Eclipse市场或者更新站点上安装Code Recommenders 2.0。关于Codetrails Connect或ControlFlow服务的更多信息,参见Codetrails的网站。

查看英文原文:Eclipse Code Recommenders goes Crowd with 2.0

你可能感兴趣的:(Eclipse)