在 10 月 31 日的 EclipseCon 上,Codetrails发布了Code Recommenders 2.0 。Code Recommenders 项目源于这样一个想法——在开发人员使用不熟悉或者缺少详细文档的API 时,为他们提供帮助。 Code Recommenders 1.0 作为 Eclipse Juno 发行序列的一部分推出,它通过分析代码频率模式并将分析结果展示给开发人员来实现代码推荐功能。
第一个版本有一个嵌入式语料库,其中包含了关于核心 Java 库和多种 Eclipse 开源库的知识。举例来说,该知识库允许智能代码补全,即把当前上下文中最相关的方法推荐给开发人员。
复制代码
<pre> swtTextWidget = new Text(container, SWT.NONE); swtTextWidget.</pre> <div> <ul><li>setLayoutData(Object layoutData) : void – Control – 80%</li> <li>setText(String string) : void – Control – 53%</li> <li>addModifyListener(ModifyListener listener) : void – Text – 38%</li> </ul></div>
每当开发人员使用支持的 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 的网站。
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论