CN108459873B - 一种提高开源代码注释率及注释质量的方法 - Google Patents
一种提高开源代码注释率及注释质量的方法 Download PDFInfo
- Publication number
- CN108459873B CN108459873B CN201810177965.6A CN201810177965A CN108459873B CN 108459873 B CN108459873 B CN 108459873B CN 201810177965 A CN201810177965 A CN 201810177965A CN 108459873 B CN108459873 B CN 108459873B
- Authority
- CN
- China
- Prior art keywords
- code
- user
- users
- level
- annotation
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Electrically Operated Instructional Devices (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种提高开源代码注释率及注释质量的方法,流程如下:1、建立一个代码数据服务器,对开源代码进行预处理;2、对代码片段的难易程度划分等级;3、对用户知识掌握程度划分等级;4、将代码片段按照等级推送给相应等级的用户,让用户进行相应操作;5、向用户推送系统为该段代码自动产生的问题,用户进行回答,若回答正确,则显示用户回答正确,并高亮用户答案;若回答不正确,则显示用户回答错误,并提供参考答案。本发明通过多次的循环推送后形成了一批具有注释的代码片段和高质量的代码注释,为代码复用提供了丰富的资源,有效的提高开发者在进行代码检索的效率以及软件开发过程中的代码复用率,极大的提高了开发效率。
Description
技术领域
本发明涉及一种提高开源代码注释率及注释质量的方法。
背景技术
目前互联网上存在着大量的开源软件与代码,开源软件已经被广泛的应用在各个领域,并发挥着至关重要的作用。因为开源的存在,开发者可以在开发自己项目的时候引入开源项目,实现一些基本功能,而不需要重复造轮子,节约了大量的时间,缩短开发周期;同时,开发者为了更好的使用开源项目,会向开源项目作出贡献,使开源项目的功能越加强大,从而吸引更多的用户去使用开源项目,形成了一个良性循环。
目前大多数搜索引擎和开源社区通过搜索关键字获取开源代码,如此,软件开发者就可以分析和使用开源代码;然而这些关键字大多是基于代码的,因此,当开发者不知道如何实现某个方法时,就无法通过搜索代码来得到自己想要的代码片段;与此同时,当用户自身能力不足,在获得开源代码后,可能遇到代码注释率不高或注释质量不高的问题,导致用户需要花费大量的时间去分析代码,降低了开发效率;所以提高代码注释率以及注释质量是提高代码复用率、开发效率、软件检索效率的重要途径。
众包是目前互联网上一种比较流行的机制,这个概念2006年首次提出,指的是一个公司或机构把过去由员工执行的工作任务,以自由自愿的形式外包给非特定的大众网络的做法。众包模式可以最大限度利用大众力量,以更高的效率、更低的成本满足生产及生活服务需求,促进生产方式变革,开拓集智创新的新途径,通过群体的力量,为更广大的群体服务。众包是一种有效的处理大量数据的方法,在线学习平台Duolingo通过众包的方式向用户推送合适的语言文本,让用户来帮助翻译,同时让用户对语言及翻译文本进行匹配,既帮助用户提升语言能力,也完成了大量的语料的翻译工作,形成了大量高质量的翻译文本数据,并与原始语料形成了关联。
目前互联网上还没有一个以代码为主体的在线学习平台,也没有一个平台专门针对代码进行注释,导致开发者在开发的过程中不能有效的通过自然语言来搜索自己想要的代码片段,在分析源码的时候耗费大量的时间;如果有一个平台能够以众包的方式为代码片段或开源项目形成高注释率和高注释质量的代码,既极大的节约了成本、又完成了代码标注的目的,这对开发者进行学习、代码检索和代码复用提供了极大的便利,大大提升开发效率和开发质量。
因此,如何为开发人员提供高注释率、高注释质量的代码,是本领域技术人员极为关注的重要问题。
发明内容
本发明的目的在于针对现有平台覆盖方面的不足,提供一种提高开源代码注释率及注释质量的方法,通过不同用户对同一段代码进行阅读、注释以及一些列用户行为,形成持续迭代的代码问答体系,进而生成高注释率、高注释质量的代码片段及开源代码。
本发明的技术方案包括以下步骤:
步骤1、建立一个代码数据服务器(Code Data Server),从互联网的主要代码托管平台中采集开源代码,并对开源代码进行预处理;
步骤2、对代码片段的难易程度划分等级,代码等级分为简单、中等、较难、很难四个等级;
步骤3、对用户知识掌握程度划分等级,用户等级分为基础、入门、熟悉、精通四个等级;
步骤4、将四个等级的代码片段按照等级推送给相应等级的用户,让用户进行相应操作;
步骤5、向用户推送系统为该段代码自动产生的问题,用户进行回答,若回答正确,则显示用户回答正确,并高亮用户答案;若回答不正确,则显示用户回答错误,并提供参考答案。
作为本发明技术方案的进一步改进:
所述用户等级与代码等级的对应关系是:基础级用户对应简单级代码,入门级用户对应中等级代码,熟悉级用户对应较难级代码,精通级用户对应很难级代码。
所述步骤1中采用通用的Web爬虫技术从互联网的主要代码托管平台中采集开源代码。
所述步骤1中对开源代码进行预处理,包括:去除代码里的原始注释、提取工程目录结构、提取每个代码文件所包含的方法、提取方法之间的调用关系。
所述步骤2对代码片段的难易程度划分等级,具体执行以下步骤:
步骤2.1、冷启动时所有代码片段推送给入门级用户,入门级用户选择能否看懂,记看懂用户数量与看不懂用户数量比率为Puser,若看懂用户数量远超看不懂用户数量,即Puser>1+δ,δ>0,δ的大小根据需求设定,则将代码片段难度下降一级;若看不懂用户数量远超看懂用户数量,即Puser<1-δ,则将代码片段难度上升一级;若看懂用户数量与看不懂用户数量大致相当,即1-δ≤Puser≤1+δ,则维持该段代码难度等级不变;
步骤2.2、将代码片段推送给相应等级用户,用户选择能否看懂,若看懂用户数量远超看不懂用户数量,即Puser>1+δ,则将代码片段难度下降一级;若看不懂用数量远超看懂用户数量,即Puser<1-δ,则将代码片段难度上升一级;若看懂用户数量与看不懂用户数量大致相当,即1-δ≤Puser≤1+δ,则维持该段代码难度等级不变;
步骤2.3、一个代码片段到达新的难度等级,重复执行步骤2.2,直至各代码片段难度等级维持不变。
所述步骤3根据用户初始的选择,以及用户在平台的行为对用户知识掌握程度划分等级,具体执行以下步骤:
步骤3.1、冷启动时用户自行选择自己的能力程度,并推送给用户相应难度等级代码片段,根据用户对代码片段能否看懂的数量来确定用户等级,记看不懂代码片段数量远超看懂代码片段数量比率为Pcode,若看不懂代码片段数量远超看懂代码片段数量,即Pcode>1+θ,θ>0,θ值的大小根据需求设定,则将用户能力等级降低;若看不懂代码片段数量与看懂代码片段数量基本相等,即1-θ≤Pcode≤1+θ,则维持用户等级不变;
步骤3.2、向用户推送相应等级代码片段,若用户在时间段T内看得懂的代码片段数量一直远远超过看不懂代码片段数量,即Pcode<1-θ,则提升用户能力等级,T>0,根据需求设置时长T的大小。
步骤4中所述具体执行以下步骤:
步骤4.1、向用户展示代码片段,用户选择能否看懂代码,若能,则执行步骤4.2,若不能,则执行步骤4.3;
步骤4.2、用户对代码进行注释,然后系统向用户展示其他用户对该段代码的注释,转步骤4.5;
步骤4.3、系统自动向看不懂用户展示相关问题和好注释,若有好注释,则展示好注释,转步骤4.5,若没有则执行步骤4.4;
步骤4.4、用户查看已有问题和答案是否解决疑惑,若解决疑惑,转步骤4.5,若没有,提出问题,查看是否有人回答问题,若有执行步骤4.6,若没有,则等待他人回答;
步骤4.5、用户为回答执行点赞、踩、采纳行为,并将行为与问题和答案关联;
步骤4.6、将问题与代码关联,转步骤4.5。
作为本发明的进一步改进,δ优选为0.2,θ优选为0.2。
采用本发明可以达到以下技术效果:
本发明不仅让开发者在进行代码内容的阅读、对代码片段的注释以及代码注释的阅读的过程中掌握了知识,更重要的是通过多次的循环推送后形成了一批具有注释的代码片段和高质量的代码注释,为代码复用提供了丰富的资源,有效的提高开发者在进行代码检索的效率以及软件开发过程中的代码复用率,极大的提高了开发效率。
附图说明
图1为本发明提高开源代码注释率及注释质量的方法的流程图;
图2为本发明步骤4流程图。
具体实施方式
图1为本发明提高开源代码注释率及注释质量的方法的流程图,包括以下步骤:
步骤1、建立一个代码数据服务器(Code Data Server),从互联网的主要代码托管平台中采集开源代码,并对开源代码进行预处理;
步骤2、对代码片段的难易程度划分等级,代码等级分为简单、中等、较难、很难四个等级;
步骤3、对用户知识掌握程度划分等级,用户等级分为基础、入门、熟悉、精通四个等级;
步骤4、将四个等级的代码片段按照等级推送给相应等级的用户,让用户进行相应操作;
步骤5、向用户推送系统为该段代码自动产生的问题,用户进行回答,若回答正确,则显示用户回答正确,并高亮用户答案;若回答不正确,则显示用户回答错误,并提供参考答案。
图2为本发明步骤4流程图,包括以下流程:
步骤4.1、向用户展示代码片段,用户选择能否看懂代码,若能,则执行步骤4.2,若不能,则执行步骤4.3;
步骤4.2、用户对代码进行注释,然后系统向用户展示其他用户对该段代码的注释,转步骤4.5;
步骤4.3、系统自动向看不懂用户展示相关问题和好注释,若有好注释,则展示好注释,转步骤4.5,若没有则执行步骤4.4;
步骤4.4、用户查看已有问题和答案是否解决疑惑,若解决疑惑,转步骤4.5,若没有,提出问题,查看是否有人回答问题,若有执行步骤4.6,若没有,则等待他人回答;
步骤4.5、用户为回答执行点赞、踩、采纳行为,并将行为与问题和答案关联;
步骤4.6、将问题与代码关联,转步骤4.5。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。
Claims (7)
1.一种提高开源代码注释率及注释质量的方法,其特征在于,包括以下步骤:
步骤1、建立一个代码数据服务器,从互联网的主要代码托管平台中采集开源代码,并对开源代码进行预处理;
步骤2、对代码片段的难易程度划分等级,代码等级分为简单、中等、较难、很难四个等级;
步骤3、对用户知识掌握程度划分等级,用户等级分为基础、入门、熟悉、精通四个等级;
步骤4、将四个等级的代码片段按照等级推送给相应等级的用户,让用户进行相应操作;
步骤5、向用户推送系统为该段代码自动产生的问题,用户进行回答,若回答正确,则显示用户回答正确,并高亮用户答案;若回答不正确,则显示用户回答错误,并提供参考答案;
其中:步骤4具体包括:
步骤4.1、向用户展示代码片段,用户选择能否看懂代码,若能,则执行步骤4.2,若不能,则执行步骤4.3;
步骤4.2、用户对代码进行注释,然后系统向用户展示其他用户对该段代码的注释,转步骤4.5;
步骤4.3、系统自动向看不懂用户展示相关问题和好注释,若有好注释,则展示好注释,转步骤4.5,若没有则执行步骤4.4;
步骤4.4、用户查看已有问题和答案是否解决疑惑,若解决疑惑,转步骤4.5,若没有,提出问题,查看是否有人回答问题,若有执行步骤4.6,若没有,则等待他人回答;
步骤4.5、用户为回答执行点赞、踩、采纳行为,并将行为与问题和答案关联;
步骤4.6、将问题与代码关联,转步骤4.5。
2.如权利要求1所述的提高开源代码注释率及注释质量的方法,其特征在于,所述用户等级与代码等级的对应关系是:基础级用户对应简单级代码,入门级用户对应中等级代码,熟悉级用户对应较难级代码,精通级用户对应很难级代码。
3.如权利要求1所述的提高开源代码注释率及注释质量的方法,其特征在于,所述步骤1中采用通用的Web爬虫技术从互联网的主要代码托管平台中采集开源代码。
4.如权利要求1所述的提高开源代码注释率及注释质量的方法,其特征在于,所述步骤1中对开源代码进行预处理,包括:去除代码里的原始注释、提取工程目录结构、提取每个代码文件所包含的方法、提取方法之间的调用关系。
5.如权利要求1所述的提高开源代码注释率及注释质量的方法,其特征在于,所述步骤2对代码片段的难易程度划分等级,具体执行以下步骤:
步骤2.1、冷启动时所有代码片段推送给入门级用户,入门级用户选择能否看懂,记看懂用户数量与看不懂用户数量比率为Puser,若看懂用户数量超过看不懂用户数量,即Puser>1+δ,δ>0,δ的大小根据需求设定,则将代码片段难度下降一级;若看不懂用户数量超过看懂用户数量,即Puser<1-δ,则将代码片段难度上升一级;若看懂用户数量与看不懂用户数量大致相当,即1-δ≤Puser≤1+δ,则维持该段代码难度等级不变;
步骤2.2、将代码片段推送给相应等级用户,用户选择能否看懂,若看懂用户数量超过看不懂用户数量,即Puser>1+δ,则将代码片段难度下降一级;若看不懂用数量超过看懂用户数量,即Puser<1-δ,则将代码片段难度上升一级;若看懂用户数量与看不懂用户数量大致相当,即1-δ≤Puser≤1+δ,则维持该段代码难度等级不变;
步骤2.3、一个代码片段到达新的难度等级,重复执行步骤2.2,直至各代码片段难度等级维持不变。
6.如权利要求1所述的提高开源代码注释率及注释质量的方法,其特征在于,所述步骤3根据用户初始的选择,以及用户在平台的行为对用户知识掌握程度划分等级,具体执行以下步骤:
步骤3.1、冷启动时用户自行选择自己的能力程度,并推送给用户相应难度等级代码片段,根据用户对代码片段能否看懂的数量来确定用户等级,记看不懂代码片段数量与看懂代码片段数量比率为Pcode,若看不懂代码片段数量超过看懂代码片段数量,即Pcode>1+θ,θ>0,θ值的大小根据需求设定,则将用户能力等级降低;若看不懂代码片段数量与看懂代码片段数量基本相等,即1-θ≤Pcode≤1+θ,则维持用户等级不变;
步骤3.2、向用户推送相应等级代码片段,若用户在时间段T内看得懂的代码片段数量一直超过看不懂代码片段数量,即Pcode<1-θ,则提升用户能力等级,T>0,根据需求设置时长T的大小。
7.如权利要求5或6所述的提高开源代码注释率及注释质量的方法,其特征在于,δ优选为0.2,θ优选为0.2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810177965.6A CN108459873B (zh) | 2018-03-05 | 2018-03-05 | 一种提高开源代码注释率及注释质量的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810177965.6A CN108459873B (zh) | 2018-03-05 | 2018-03-05 | 一种提高开源代码注释率及注释质量的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108459873A CN108459873A (zh) | 2018-08-28 |
CN108459873B true CN108459873B (zh) | 2021-09-24 |
Family
ID=63217263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810177965.6A Active CN108459873B (zh) | 2018-03-05 | 2018-03-05 | 一种提高开源代码注释率及注释质量的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108459873B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739524B (zh) * | 2019-01-09 | 2022-04-15 | 北京字节跳动网络技术有限公司 | 一种软件安装包的生成方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136360A (zh) * | 2013-03-07 | 2013-06-05 | 北京宽连十方数字技术有限公司 | 一种互联网行为标注引擎及对应该引擎的行为标注方法 |
EP2622466A4 (en) * | 2010-09-28 | 2014-10-01 | Microsoft Corp | COLLECTION TIME TESTING TEST FOR CUSTOM TYPES |
CN104881285A (zh) * | 2015-05-25 | 2015-09-02 | 北京理工大学 | 基于本体的代码片段标注与重用系统 |
CN105706052A (zh) * | 2013-07-31 | 2016-06-22 | 微软技术许可有限责任公司 | 应用程序注释以及用户搜索任务和用户动作的便利化 |
CN106095900A (zh) * | 2016-06-07 | 2016-11-09 | 网易无尾熊(杭州)科技有限公司 | 一种搜索结果提供方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6869020B2 (en) * | 2002-10-18 | 2005-03-22 | Pitney Bowes Inc. | Method for field programmable radio frequency identification testing devices for transmitting user selected data |
CN102411859A (zh) * | 2011-09-07 | 2012-04-11 | 王新舸 | 网络课程学习平台及通信方法 |
CN106202453B (zh) * | 2016-07-13 | 2020-08-04 | 网易(杭州)网络有限公司 | 一种多媒体资源推荐方法和装置 |
CN106599089B (zh) * | 2016-11-23 | 2020-04-28 | 广东小天才科技有限公司 | 一种基于知识点的试题推荐方法及装置、用户设备 |
CN107516445A (zh) * | 2017-09-11 | 2017-12-26 | 立乐教育科技(上海)有限公司 | 在线编程教学方法及系统 |
-
2018
- 2018-03-05 CN CN201810177965.6A patent/CN108459873B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2622466A4 (en) * | 2010-09-28 | 2014-10-01 | Microsoft Corp | COLLECTION TIME TESTING TEST FOR CUSTOM TYPES |
CN103136360A (zh) * | 2013-03-07 | 2013-06-05 | 北京宽连十方数字技术有限公司 | 一种互联网行为标注引擎及对应该引擎的行为标注方法 |
CN105706052A (zh) * | 2013-07-31 | 2016-06-22 | 微软技术许可有限责任公司 | 应用程序注释以及用户搜索任务和用户动作的便利化 |
CN104881285A (zh) * | 2015-05-25 | 2015-09-02 | 北京理工大学 | 基于本体的代码片段标注与重用系统 |
CN106095900A (zh) * | 2016-06-07 | 2016-11-09 | 网易无尾熊(杭州)科技有限公司 | 一种搜索结果提供方法和装置 |
Non-Patent Citations (3)
Title |
---|
u-Annotate: An Application for User-Driven Freeform Digital Ink Annotation of E-Learning Content;Mohamed Amine Chatti 等;《the Sixth International Conference on Advanced Learning Technologies》;20060724;1-5 * |
Web Database Query Interface Annotation Based on User Collaboration;LIU Wei 等;《Wuhan University Journal of Natural Sciences》;20060325;1-4 * |
程序代码相似度中的代码转换技术的研究;裴冬梅;《中国优秀硕士学位论文全文数据库信息科技辑》;20081115(第11期);I138-93 * |
Also Published As
Publication number | Publication date |
---|---|
CN108459873A (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9582757B1 (en) | Scalable curation system | |
CN109522011B (zh) | 一种基于编程现场上下文深度感知的代码行推荐方法 | |
CN109325040B (zh) | 一种faq问答库泛化方法、装置及设备 | |
CN110991645A (zh) | 一种基于知识模型的自适应学习方法、系统及存储介质 | |
Ye | Supporting component-based software development with active component repository systems | |
Li et al. | Api-bank: A comprehensive benchmark for tool-augmented llms | |
CN112463424A (zh) | 一种基于图的端到端程序修复方法 | |
CN111428104B (zh) | 基于观点型阅读理解的癫痫病辅助医疗智能问答方法 | |
WO2024011813A1 (zh) | 一种文本扩展方法、装置、设备及介质 | |
CN110795544B (zh) | 内容搜索方法、装置、设备和存储介质 | |
CN112596731A (zh) | 一种融合智能教育的编程教学系统及方法 | |
CN108491459B (zh) | 一种软件代码摘要自动生成模型的优化方法 | |
CN111553138B (zh) | 用于规范内容结构文档的辅助写作方法及装置 | |
CN106682224A (zh) | 一种数据录入方法、系统及数据库 | |
CN108459873B (zh) | 一种提高开源代码注释率及注释质量的方法 | |
Shen et al. | Taskbench: Benchmarking large language models for task automation | |
CN114461777A (zh) | 智能问答方法、装置、设备及存储介质 | |
CN117556002A (zh) | 一种用于对话大模型的多轮对话训练方法 | |
CN117289938A (zh) | 一种软件开发用智能辅助系统 | |
CN117235215A (zh) | 基于大模型和知识图谱的生成对话方法、系统及介质 | |
CN112860983B (zh) | 一种学习内容推送的方法、系统、设备及可读存储介质 | |
Lee et al. | Customizing the capture of software architectural design decisions | |
CN112860863A (zh) | 一种机器阅读理解方法及装置 | |
CN112380836A (zh) | 一种智能侨情问句生成方法 | |
CN1474300A (zh) | 应用计算机写作方式进行语文教学的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |