[发明专利]Go语言软件中CGO语言特征的自动识别方法及存储介质在审
申请号: | 202211180372.8 | 申请日: | 2022-09-27 |
公开(公告)号: | CN115599440A | 公开(公告)日: | 2023-01-13 |
发明(设计)人: | 张昱;陈金宝;丁伯尧 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F8/30 |
代理公司: | 合肥天明专利事务所(普通合伙) 34115 | 代理人: | 金凯;苗娟 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | go 语言 软件 cgo 特征 自动识别 方法 存储 介质 | ||
本发明的一种Go语言软件中CGO语言特征的自动识别方法及存储介质,包括以下步骤,将Go语言代码解析成抽象语法树AST;遍历抽象语法树AST识别CGO对应的语言特征;其中,所述对应的语言特征包括CGO函数调用、导出函数、头文件、基本类型转换以及CGO机制启用。本发明能自动分析识别Go代码仓库中的CGO信息并存入数据库。本发明分析了约1000个开源Go代码仓库,对CGO语言特征的总体使用情况、使用差异以及CGO使用可能带来的安全问题进行了分析,为开发者提供了Go社区中CGO的整体使用现状并对构建可靠安全的包含CGO的Go语言程序提供参考。
技术领域
本发明涉及编程语言技术领域,具体涉及一种Go语言软件中CGO语言特征的自动识别方法及存储介质。
背景技术
Go语言,又称Golang,是由Google在2007年开始设计并最终在2009年发布的一门编程语言。其语法简单,易于开发,且有垃圾回收、多返回值等高级语言特性,目前已经成为全球TOP10的编程语言。Go语言提供了一种名为CGO的跨语言互调机制,可以使得Go语言和C语言互相调用。
目前在跨语言调用方面研究者们已经有许多研究,期望提升跨语言调用的性能以及安全性。Maga D.Zandaqo在2017年提到了如何使用现代化方法在JavaScript中调用C++;Furr等人提出了一种多语言类型推断系统,能够防止外部函数调用将类型和内存安全违规引入本来安全的语言中。
目前已经有一些对不同编程语言的语言特征的研究,研究者们希望借此来发现语言特征在现有软件中的使用方式和缺陷,为进而研制提高编程语言性能和安全性的方法和工具奠定基础。2013年Dyer等人从大量的Java开源项目中研究了Java语言特征的使用情况,2018年Rodrigues等人从28个Ruby项目中分析了开发者对Ruby语言特征的使用方式。2021年Peng等人从大量Python开源项目研究了Python语言特征的提取与使用分析。
在Go和CGO的优化方面,学术界与Go社区也有许多相关的研究成果。Wang等人在2020年提出了一种针对Go编程语言的逃逸分析优化方法来节省Go程序的堆内存使用。Dgraph团体为了绕开Go的自动内存管理,提升内存管理的性能,使用jemalloc加CGO的方式在Go中构建了一套手动内存管理系统。Uber团队发现Go的GC(垃圾回收)会占用大约25%的CPU计算资源,为了减少GC的CPU占用,Uber团队设计了一个GOGC Tuner来动态调节GO GC的参数,最终节省了大约70K的CPU核心资源。
目前Go的整个社区生态中缺少对开源社区CGO使用情况的分析。当开发者尝试开发Go和C的跨语言程序时对社区中CGO的使用情况及特点尚不了解,难以从目前社区CGO的使用中获得开发指导。本发明以及分析结果可以提供Go社区中CGO的整体使用现状,并对构建可靠安全的包含CGO的Go语言程序提供参考。
发明内容
本发明提出的一种Go语言软件中CGO语言特征的自动识别方法,可至少解决背景技术反馈的一种问题。
为实现上述目的,本发明采用了以下技术方案:
一种Go语言软件中CGO语言特征的自动识别方法,包括以下步骤:
将Go语言代码解析成抽象语法树AST;
遍历抽象语法树AST识别对应的语言特征;
针对对应的语言特征分别识别。
进一步的,所述对应的语言特征包括CGO函数调用、导出函数、头文件、基本类型转换以及CGO机制启用。
进一步的,当语言特征为CGO函数调用时,识别步骤如下:
遍历Go的AST中的ImportSpec结点,判断其中是否有import“C”;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211180372.8/2.html,转载请声明来源钻瓜专利网。