CN103473105A - 一种在线代码补全功能的实现方法 - Google Patents
一种在线代码补全功能的实现方法 Download PDFInfo
- 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
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消息格式如下所示:
其中mainC1ass的值“cn.edu.pku.TestCode”是对象a所在Java文件的名称,1ength的值300是整个java文件的代码长度。offset的值32是a在整个java文件中的偏移量,最后command的值codeComp1ete表示,希望代码补全服务返回a的所有方法和属性。
代码补全服务计算毕,将结果返回给主程序,主程序再以列表的形式显示出对象a的所有属性和方法。从代码补全服务返回的数据,也是以JSON格式传回主程序,JSON消息中的内容如下:
其中status值ok表示代码补全服务计算的结果正常。具体的返回的方法和属性的的值,由ret中的值提供。
通过JSON格式,我们可以将足够多的信息在不同的层次上进行数据交互。(2)本地代码补全功能提取
由于本地集成开发环境功能稳定而且强大,如果重新开发一遍功能,代价十分巨大,所以我们可以将本地集成开发环境的功能提出出来,做成服务,以服务的形式,提供给在线集成开发环境使用。要想将本地代码补全功能做成服务,最重要的两个问题就是:(1)如何将本地代码补全功能从其他功能中分离出来。(2)如何将这些功能组织在一起,形成可以和web service进行交互的接口。
对于这两个问题,分两种情况:如果本地代码补全功能每个子功能都是以接口的形式提供,我们就无需分离,直接可以调用这些子功能,按照一定得逻辑将这些子功能组织在一起,作为将来被web service调用的接口的实现。如果本地代码补全功能的子功能和其他无关的代码混杂在一起,我们需要分以下三步提取子功能,并且组合成供web service调用的接口的实现。
1)找到功能的入口点。所谓功能的入口点,就是指该功能实施的第一段代码。
2)根据代码依赖,逐步扩展代码。从入口点开始,根据代码之间的数据依赖关系,将属于该子功能的代码,都包含到该子功能的实现中。
3)将所有提取出的子功能组合。即按照一定得业务逻辑,将各个子功能组合在一起,从而实现一个完整的代码补全功能。
下面展示的是一段提供给web service直接调用的本地代码补全功能的子接口的实现。
这段代码的输入为java文件名(javafi1e),java文件内容(fi1eContent),需要进行代码补全的位置偏移(offset),输出为推荐的代码补全相关的方法和属性列表。
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服务。
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)
| 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)
| 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 |
-
2013
- 2013-09-25 CN CN2013104452291A patent/CN103473105A/zh active Pending
Patent Citations (3)
| 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)
| Title |
|---|
| 吴凌等: ""CEclipse:一个基于服务组合的在线集成开发环境"", 《计算机研究与发展》 * |
| 腾讯科技: ""CodeRun:浏览器里的云端编辑开发IDE"", 《硅谷》 * |
Cited By (8)
| 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 |


