CN103473105A - 一种在线代码补全功能的实现方法 - Google Patents

一种在线代码补全功能的实现方法 Download PDF

Info

Publication number
CN103473105A
CN103473105A CN2013104452291A CN201310445229A CN103473105A CN 103473105 A CN103473105 A CN 103473105A CN 2013104452291 A CN2013104452291 A CN 2013104452291A CN 201310445229 A CN201310445229 A CN 201310445229A CN 103473105 A CN103473105 A CN 103473105A
Authority
CN
China
Prior art keywords
development environment
code
integrated development
web service
code completion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2013104452291A
Other languages
English (en)
Inventor
吴凌
张化劲
杨楠
王千祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Peking University
Original Assignee
Peking University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Peking University filed Critical Peking University
Priority to CN2013104452291A priority Critical patent/CN103473105A/zh
Publication of CN103473105A publication Critical patent/CN103473105A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种在线代码补全功能的实现方法。该方法包括步骤:1.将本地集成开发环境的代码辅助功能,封装成可以被调用的本地接口;2.实现代码辅助功能的web service,该web service接受来自在线集成开发环境代码操作相关的数据,调用第一步得到的接口,获得本地集成开发环境代码辅助功能生成的结果,将该结果作为web service调用的结果;3.实现在线集成开发环境客户端与服务器端的交互。在线集成开发环境客户端编辑区,记录用户在编辑代码过程中的数据,将该数据发送到服务器端,服务器端调用代码辅助功能web service,并将得到的结果返回给客户端显示。采用本发明的方法,可以为用户在在线集成开发环境中编写代码,提供类似本地集成开发环境的代码辅助功能。

Description

一种在线代码补全功能的实现方法
技术领域:
本发明涉及一种在线代码补全功能的实现方法,适用于为在线集成开发环境提供代码补全功能,以便使得用户在使用在线集成开发环境时,拥有和本地集成开发环境一样的代码补全功能,属于软件技术领域。
背景技术:
随着云计算的提出,各种桌面程序逐步被迁移到云中。而桌面集成开发环境,作为一个与开发人员密切相关的程序,也开始被迁移到云中,我们称之为在线集成开发环境。在线集成开发环境有着很多特有的优势,如随时随地开发,无需搭建开发环境等。然而,本地集成开发环境经过数十年的发展已经拥有完备的功能体系。其中本地集成开发环境的代码补全功能,已经成为开发者在开发过程中不可或缺的功能,该功能可以大大提高开发者在开发过程中的效率。与本地集成开发环境相比,现有在线集成开发环境提供的功能比较简单,特别是未能提供开发过程中的代码补全功能,这严重影响了在线集成开发环境的发展。
发明内容:
针对上述问题,本发明的目的是提供一种在线代码补全功能的实现方法。该方法能够为在线集成开发环境增加代码补全功能,从而为开发者在开发过程中带来便利。
为解决上述技术问题,本发明的技术方案如下:
一种在线代码补全功能的实现方法,为用户使用在线集成开发环境编程过程中,提供类似于本地集成开发环境的代码补全功能,其特征在于,包括如下步骤:
(1)将本地集成开发环境的代码补全功能,封装成可以被调用的本地接口;
(2)实现代码补全功能的web service,该web service接受来自在线集成开发环境代码操作相关的数据,调用第一步得到的接口,获得本地集成开发环境代码补全功能生成的结果,将该结果作为web service调用的结果;
(3)实现在线集成开发环境客户端与服务器端的交互。在线集成开发环境客户端编辑区,记录用户在编辑代码过程中的数据,将该数据发送到服务器端,服务器端调用代码补全功能web service,并将得到的结果返回给客户端显示。
2.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(1)中,对于可以通过命令行方式进行调用的代码补全功能,接口的实现直接通过命令行调用语句实现。
3.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(1)中,对于无法通过命令行方式进行调用的代码补全功能,需要首先抽取出功能相应的代码,然后将该代码封装成接口。
4.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(2)中的web service,既可以是符合标准规范的web service,也可以是广义上的任何通过http方式访问的web服务。
本发明的技术效果在于:充分利用了现有本地集成开发环境的代码补全功能,避免重新开发代码补全功能,同时可以保证为在线集成开发环境提供稳定的代码补全功能,因为本地的集成开发环境的代码补全功能经过十多年的发展,功能趋于稳定,最后使得用户在享有在线开发的便利同时,也享有本地开发过程的高效。
附图说明
图1表示在本发明中在线集成开发环境代码补全功能实现之后的效果图
图2表示在本发明中在线集成开发环境代码补全功能的工作流程图
具体实施方式:
附图1示意了在线集成开发环境代码补全功能实现之后的效果图。
附图2示意了在线集成开发环境代码补全功能的工作交互图。
整个在线集成开发环境代码补全功能的实现如下:
首先,我们需要设计本地代码补全功能与web service交互的接口,该接口输入为需要补全的代码片段,输出为推荐的方法和属性列表。设计完接口之后,我们开始实现本地代码补全功能和web service交互的接口。当本地代码补全功能提供我们所需的子接口时,我们可以直接调用本地代码补全功能的一系列子接口,来实现与web service交互的接口。当无法直接调用本地代码补全功能的子接口时,我们需要抽取本地代码补全功能相关的子功能的实现代码,并且将这些代码整合到web service交互接口的实现中。通过该方式,我们可以充分复用本地代码补全功能已有子功能实现,获得我们所需要的与web service进行交互的一个完整功能的实现。
然后,我们需要设计代码补全功能的web service部分。该部分的输入是需要补全的代码片段,输出为推荐的方法和属性列表。该部分是服务器端与本地代码补全功能之间交互的一个媒介。该部分的实现是,接受服务器端发送的需要补全的代码片段的请求,然后调用已经实现好的本地代码补全功能与web service进行交互的接口,计算出推荐的方法和属性列表,将该列表作为web service处理的结果,返回给服务器端。Web service与服务器的交互可以是通过Soap协议交互,也可以通过Http协议交互。
接着,我们需要设计代码补全功能的服务器端。服务器端负责接收客户端的请求,然后根据请求的不同类别,调用相应的业务逻辑功能,获得结果,并将结果返回给客户端显示。我们事先代码补全功能的服务器端时,加入代码补全功能的请求判断,如果符合请求的要求,我们将需要补全的代码片段发送给web service,并将web service处理的结果返回给客户端显示。
最后,我们需要设计代码补全功能的客户端。客户端的作用是收集用户在客户端的操作,当遇到用户的操作需要响应代码补全列表时,客户端收集各种用户编写的代码片段信息,然后向服务器端发送代码补全请求,服务器端处理完毕之后,将结果返回给客户端。客户端需要以列表框的形式,展现给用户,用户可以在列表框中进行选择,然后完成代码补全功能。
其中的关键技术如下:
(1)交互数据格式
最常见的数据交互格式是字符串格式,但是由于在线集成开发环境客户端与服务器交互,服务器与web service交互,web service与本地代码补全功能交互都需要传送代码等各种数据,不仅数据量大,而且类型复杂,所以需要采用xm1或者JSON格式作为数据交互的格式。下面列举说明数据交互格式。
以代码补全为例,我们想获得对象a中所有方法的列表,从主程序服务发给代码补全服务的JSON消息格式如下所示:
Figure BSA0000095611990000041
其中mainC1ass的值“cn.edu.pku.TestCode”是对象a所在Java文件的名称,1ength的值300是整个java文件的代码长度。offset的值32是a在整个java文件中的偏移量,最后command的值codeComp1ete表示,希望代码补全服务返回a的所有方法和属性。
代码补全服务计算毕,将结果返回给主程序,主程序再以列表的形式显示出对象a的所有属性和方法。从代码补全服务返回的数据,也是以JSON格式传回主程序,JSON消息中的内容如下:
Figure BSA0000095611990000051
其中status值ok表示代码补全服务计算的结果正常。具体的返回的方法和属性的的值,由ret中的值提供。
通过JSON格式,我们可以将足够多的信息在不同的层次上进行数据交互。(2)本地代码补全功能提取
由于本地集成开发环境功能稳定而且强大,如果重新开发一遍功能,代价十分巨大,所以我们可以将本地集成开发环境的功能提出出来,做成服务,以服务的形式,提供给在线集成开发环境使用。要想将本地代码补全功能做成服务,最重要的两个问题就是:(1)如何将本地代码补全功能从其他功能中分离出来。(2)如何将这些功能组织在一起,形成可以和web service进行交互的接口。
对于这两个问题,分两种情况:如果本地代码补全功能每个子功能都是以接口的形式提供,我们就无需分离,直接可以调用这些子功能,按照一定得逻辑将这些子功能组织在一起,作为将来被web service调用的接口的实现。如果本地代码补全功能的子功能和其他无关的代码混杂在一起,我们需要分以下三步提取子功能,并且组合成供web service调用的接口的实现。
1)找到功能的入口点。所谓功能的入口点,就是指该功能实施的第一段代码。
2)根据代码依赖,逐步扩展代码。从入口点开始,根据代码之间的数据依赖关系,将属于该子功能的代码,都包含到该子功能的实现中。
3)将所有提取出的子功能组合。即按照一定得业务逻辑,将各个子功能组合在一起,从而实现一个完整的代码补全功能。
下面展示的是一段提供给web service直接调用的本地代码补全功能的子接口的实现。
这段代码的输入为java文件名(javafi1e),java文件内容(fi1eContent),需要进行代码补全的位置偏移(offset),输出为推荐的代码补全相关的方法和属性列表。
Figure BSA0000095611990000061

Claims (4)

1.一种在线代码补全功能的实现方法,为用户使用在线集成开发环境编程过程中,提供类似于本地集成开发环境的代码补全功能,其特征在于,包括如下步骤:
(1)将本地集成开发环境的代码补全功能,封装成可以被调用的本地接口;
(2)实现代码补全功能的web service,该web service接受来自在线集成开发环境代码操作相关的数据,调用第一步得到的接口,获得本地集成开发环境代码补全功能生成的结果,将该结果作为web service调用的结果;
(3)实现在线集成开发环境客户端与服务器端的交互。在线集成开发环境客户端编辑区,记录用户在编辑代码过程中的数据,将该数据发送到服务器端,服务器端调用代码补全功能web service,并将得到的结果返回给客户端显示。
2.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(1)中,对于可以通过命令行方式进行调用的代码补全功能,接口的实现直接通过命令行调用语句实现。
3.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(1)中,对于无法通过命令行方式进行调用的代码补全功能,需要首先抽取出功能相应的代码,然后将该代码封装成接口。
4.如权利要求1所述的在线集成开发环境代码补全功能的实现方法,其特征在于,所述步骤(2)中的web service,既可以是符合标准规范的web service,也可以是广义上的任何通过http方式访问的web服务。
CN2013104452291A 2013-09-25 2013-09-25 一种在线代码补全功能的实现方法 Pending CN103473105A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2013104452291A CN103473105A (zh) 2013-09-25 2013-09-25 一种在线代码补全功能的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2013104452291A CN103473105A (zh) 2013-09-25 2013-09-25 一种在线代码补全功能的实现方法

Publications (1)

Publication Number Publication Date
CN103473105A true CN103473105A (zh) 2013-12-25

Family

ID=49797974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2013104452291A Pending CN103473105A (zh) 2013-09-25 2013-09-25 一种在线代码补全功能的实现方法

Country Status (1)

Country Link
CN (1) CN103473105A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975489A (zh) * 2016-04-26 2016-09-28 中国电子科技网络信息安全有限公司 一种基于元数据的在线sql代码补全方法
CN108563433A (zh) * 2018-03-20 2018-09-21 北京大学 一种基于lstm自动补全代码的装置
CN109634578A (zh) * 2018-10-19 2019-04-16 北京大学 一种基于文本说明的程序生成方法
CN109918064A (zh) * 2019-01-29 2019-06-21 深圳点猫科技有限公司 一种基于ace扩展的代码补全的实现方法及装置
CN112817583A (zh) * 2021-04-19 2021-05-18 阿里云计算有限公司 一种代码编辑方法、装置、服务端、用户设备及存储介质
CN114140106A (zh) * 2021-11-09 2022-03-04 北京银盾泰安网络科技有限公司 一种金融管理平台及其金融管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949731A (zh) * 2005-10-12 2007-04-18 三星电子株式会社 向外部装置提供家庭网络装置服务的方法和设备
CN102137162A (zh) * 2011-03-22 2011-07-27 上海交通大学 基于软件即服务模式的cad集成系统
US20120246610A1 (en) * 2011-03-23 2012-09-27 Infosys Technologies Ltd. Online integrated development environment with code assist

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1949731A (zh) * 2005-10-12 2007-04-18 三星电子株式会社 向外部装置提供家庭网络装置服务的方法和设备
CN102137162A (zh) * 2011-03-22 2011-07-27 上海交通大学 基于软件即服务模式的cad集成系统
US20120246610A1 (en) * 2011-03-23 2012-09-27 Infosys Technologies Ltd. Online integrated development environment with code assist

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吴凌等: ""CEclipse:一个基于服务组合的在线集成开发环境"", 《计算机研究与发展》 *
腾讯科技: ""CodeRun:浏览器里的云端编辑开发IDE"", 《硅谷》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975489A (zh) * 2016-04-26 2016-09-28 中国电子科技网络信息安全有限公司 一种基于元数据的在线sql代码补全方法
CN108563433A (zh) * 2018-03-20 2018-09-21 北京大学 一种基于lstm自动补全代码的装置
CN108563433B (zh) * 2018-03-20 2021-01-26 北京大学 一种基于lstm自动补全代码的装置
CN109634578A (zh) * 2018-10-19 2019-04-16 北京大学 一种基于文本说明的程序生成方法
CN109634578B (zh) * 2018-10-19 2021-04-02 北京大学 一种基于文本说明的程序生成方法
CN109918064A (zh) * 2019-01-29 2019-06-21 深圳点猫科技有限公司 一种基于ace扩展的代码补全的实现方法及装置
CN112817583A (zh) * 2021-04-19 2021-05-18 阿里云计算有限公司 一种代码编辑方法、装置、服务端、用户设备及存储介质
CN114140106A (zh) * 2021-11-09 2022-03-04 北京银盾泰安网络科技有限公司 一种金融管理平台及其金融管理方法

Similar Documents

Publication Publication Date Title
KR102220127B1 (ko) 커스터마이징된 소프트웨어 개발 키트(sdk) 생성을 위한 방법 및 장치
CN101699405B (zh) 一种宿主程序和插件及插件间进行交互的方法及装置
CN103473105A (zh) 一种在线代码补全功能的实现方法
CN112328342B (zh) 基于在线文档的待办事项处理方法及装置
WO2017124976A1 (zh) 一种应用资源获取方法及装置
CN105068815A (zh) 页面编辑器交互装置和方法
CN103955367A (zh) 一种生成页面的方法及装置
CN101111820A (zh) 选择和传递可移植门户小程序的方法和设备
CN116028140A (zh) 插件添加方法、装置、电子设备及存储介质
CN104834715A (zh) 一种基于部件和容器的网站生成方法及系统
CN102375912B (zh) 一种不同工程软件系统间的数据集成装置及方法
CN113110920B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN106357781A (zh) 一种资源服务调用接口创建方法及系统
CN104598250A (zh) 一种系统管理架构及其实现管理的方法
US20240412436A1 (en) Effect edition method and apparatus, electronic device and storage medium
CN111177558B (zh) 频道业务构建方法及装置
CN102915256B (zh) 多核浏览器下的消息传递方法与装置
CN111782445A (zh) 设备调试环境的配置方法和装置
WO2017107429A1 (zh) 互联应用的操作处理方法、装置、设备及非易失性计算机存储介质
CN106325658A (zh) 一种基于Android的动态布局方法及系统
CN110866014A (zh) 一种标准指标数据接入及展示的方法
JP5644599B2 (ja) オブジェクト指向モデル設計支援装置
CN102109953B (zh) 终端及其进行业务处理的方法
CN115858608A (zh) 一种数据处理方法、装置、存储介质及电子设备
CN101625640B (zh) 一种多环境下软件升级脚本合一的装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20131225