CN116643727B - 编程语言检测及自动编译为wasm字节码的方法和系统 - Google Patents
编程语言检测及自动编译为wasm字节码的方法和系统 Download PDFInfo
- Publication number
- CN116643727B CN116643727B CN202310531560.9A CN202310531560A CN116643727B CN 116643727 B CN116643727 B CN 116643727B CN 202310531560 A CN202310531560 A CN 202310531560A CN 116643727 B CN116643727 B CN 116643727B
- Authority
- CN
- China
- Prior art keywords
- programming language
- source code
- module
- parameters
- compiling
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000001514 detection method Methods 0.000 claims abstract description 65
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 48
- 238000007781 pre-processing Methods 0.000 claims abstract description 17
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 230000004927 fusion Effects 0.000 claims description 15
- 238000010801 machine learning Methods 0.000 claims description 7
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000012856 packing Methods 0.000 claims description 2
- 238000012549 training Methods 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 8
- 230000008676 import Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000007635 classification algorithm Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了编程语言检测及自动编译为WASM字节码的方法和系统,该编程语言检测及自动编译为WASM字节码的方法包括以下步骤:用户将源代码进行上传;对上传的源代码进行预处理;配置参数并对参数进行校验和覆盖;根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;采用容器化的工具链将源代码编译为WASM字节码;将编译后的WASM字节码打包压缩;统计检测和编译花费的时间并进行输出。本发明考虑不同算法的优缺点,结合代码量和人工参数配置,使用该系统可以得出给定源代码的检测概率,通过大量的样本训练,该系统稳定可靠,使用默认参数情况下,准确率较高。
Description
技术领域
本发明涉及编程语言检测技术领域,具体来说,涉及编程语言检测及自动编译为WASM字节码的方法和系统。
背景技术
现有的编程语言检测方法有文件名检测法、文件内容特征检测法和机器学习检测法。不同的检测方法检测精度和效率存在着很大的差异。文件名检测法是较快捷的检测方法,但是一些文件的后缀不能准确的表达出语言的类型。文件内容特征检测法通过手工提取各种编程语言的特征,通过特征标注判断编程语言的类型,因此编程语言的检测准确度取决与文件内容是否出现特征以及特征的数量。机器学习检测法采用分类算法来训练代码库,但是往往由于编程语言的特征具有欺骗性,事实上,一个有效的C源代码几乎总是一个有效的C++代码,一个有效的JavaScript源代码总是一个有效的TypeScript代码。
WebAssembly(缩写为WASM)是一种新的字节码格式,作为一项相对年轻的技术,技术标准和相关生态也并不完善,WASM被设计成为一种编程语言的可移植编译目标,开发者通常首先使用高级静态语言来编写相应的功能逻辑,然后再使用工具链将高级语言源代码编译为对应的WASM字节码。
现有的编程语言检测方法并未形成完备的检测工具,使用单一检测方法居多;对于使用者来说,不同场景需要的效率和精度有所不同。
而WASM作为年轻且偏底层的技术,现在工具链不完善,普通开发者将高级语言编译为WASM字节码有一定的难度,需要安装各种工具链,并且不具备移植性。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中的问题,本发明提出编程语言检测及自动编译为WASM字节码的方法和系统,以克服现有相关技术所存在的上述技术问题。
为此,本发明采用的具体技术方案如下:
根据本发明的一方面,提供了编程语言检测及自动编译为WASM字节码的方法,该方法包括以下步骤:
S1、用户将源代码进行上传;
S2、对上传的源代码进行预处理;
S3、配置参数并对参数进行校验和覆盖;
S4、根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
S5、采用容器化的工具链将源代码编译为WASM字节码;
S6、将编译后的WASM字节码打包压缩;
S7、统计检测和编译花费的时间并进行输出。
进一步的,所述用户将源代码进行上传的方式包括二进制软件包操作方式和网页上操作方式;
所述二进制软件包操作方式,表示通过命令和参数来提交检测和编译任务;
所述网页上操作方式,表示用户通过浏览器在网页上上传源代码压缩包和选择配置参数。
进一步的,所述对上传的源代码进行预处理包括以下步骤:
S21、将源代码包解压并统计代码量;
S21、按照不同编程语言的特征文件或文件夹来划分模块;
进一步的,所述配置参数并对参数进行校验和覆盖包括以下步骤:
S31、用户可根据需求进行自定义参数配置或者使用默认参数配置;
S32、若用户进行了自定义参数,则对用户的自定义参数进行校验,并将用户的自定义参数作为优先级覆盖默认的参数。
进一步的,所述参数包括编程语言的类型、算法权重选择、线程数量选择、是否手动确认语言类型、置信度。
进一步的,所述根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型包括以下步骤:
S41、根据用户自定义的参数和默认参数确定各个源代码模块的算法权重;
S42、利用多编程语言检测算法检测各个源代码模块的编程语言概率;
S43、采用加权融合算法计算最终权重,并选择最大概率的编程语言类型;
S44、若需要手动确认各源代码模块语言类型,则返回各源代码模块的语言类型供用户确认。
进一步的,所述多编程语言检测算法包括文件后缀法、文件特征法及机器学习法。
进一步的,所述加权融合算法的计算公式为:
其中,y(x)表示加权融合后的预测结果;
yi(x)表示第i种算法所预测的结果;
wi表示第i种算法对应的权重;
x表示各个源代码模块的序号。
进一步的,所述将编译后的WASM字节码打包压缩包括以下步骤:
S61、若用户采用的二进制软件包操作方式,则在用户配置的输出目录或默认的输出目录获取编译结果;
S62、若用户采用的是网页上操作方式,则推送编译完成信息到网页页面,供用户下载WASM字节码包。
根据本发明的另一方面,提供了编程语言检测及自动编译为WASM字节码的系统,该系统包括源代码上传模块、源代码预处理模块、参数配置模块、编程语言选择模块、源代码编译模块、字节码打包模块及统计检测模块;
所述源代码上传模块,用于用户将源代码进行上传;
所述源代码预处理模块,用于对上传的源代码进行预处理;
所述参数配置模块,用于配置参数并对参数进行校验和覆盖;
所述编程语言选择模块,用于根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
所述源代码编译模块,用于选择工具链并将源代码编译为WASM字节码;
所述字节码打包模块,用于将编译后的WASM字节码打包压缩;
所述统计检测模块,用于统计检测和编译花费的时间并进行输出。
本发明的有益效果为:
1、本发明通过设计并训练了一种更快捷更准确的检测编程语言的系统,并考虑不同算法的优缺点,结合代码量和人工参数配置,使用该系统可以得出给定源代码的检测概率,通过大量的样本训练,该系统稳定可靠,使用默认参数情况下,准确率较高。
2、本发明通过使用容器化的工具链,使得编译可移植,可拓展,调用方便,用完即毁,极大的降低了将高级语言转换为WASM字节码的成本。
3、本发明通过使用不同权重的算法参数来优化语言检测,提高检测概率,通过多线程调用多个容器化工具链加速编译过程。
4、本发明在编程语言检测中提出了三种算法,并对算法整体进行调优,准确率较高。
5、本发明使用二进制包和网页两种方式设置参数和导入源码,使用网页方式更加方便,使用二进制包更加安全,并输出了中间过程及最终结果的统计信息。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的编程语言检测及自动编译为WASM字节码的方法的流程图;
图2是根据本发明实施例的编程语言检测及自动编译为WASM字节码的系统的原理框图。
图中:
1、源代码上传模块;2、源代码预处理模块;3、参数配置模块;4、编程语言选择模块;5、源代码编译模块;6、字节码打包模块;7、统计检测模块。
具体实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了编程语言检测及自动编译为WASM字节码的方法和系统。
现结合附图和具体实施方式对本发明进一步说明,如图1-图2所示,根据本发明的一个实施例,提供了编程语言检测及自动编译为WASM字节码的方法,该方法包括以下步骤:
S1、用户将源代码进行上传;
其中,所述用户将源代码进行上传的方式包括二进制软件包操作方式和网页上操作方式;
所述二进制软件包操作方式,表示通过命令和参数来提交检测和编译任务;
所述网页上操作方式,表示用户通过浏览器在网页上上传源代码压缩包和选择配置参数。
S2、对上传的源代码进行预处理;
其中,所述对上传的源代码进行预处理包括以下步骤:
S21、将源代码包解压并统计代码量;
S21、按照不同编程语言的特征文件或文件夹来划分模块;
具体的,模块划分优先以公认大型项目编码约定优先,次选按照文件夹来划分。一般情况下,每个项目源代码的根目录下都会有项目模块的特征文件,虽然语言不同,但是在编程语言的发展过程中,形成了一些特有的约定。只要根据约束文件的描述就可以划分出模块。如果没有这种特征约定,则简单的通过根目录下的文件夹来划分为不同的模块,模块的划分主要用于编程语言的检测和多线程处理不同的模块,更加高效。
具体的,对源代码解压来说,对于一个项目中包含多个不同高级编程语言的情况,分别提取模块基本信息,项目模块指的是在编程语言里,一般通过文件夹来组织不同的模块,一个大型项目往往涉及多种不同的编程语言,每种编程语言的代码都保存在根目录不同的文件夹下,小的项目可能只用到了一种编程语言,本系统默认是按照根目录下的不同文件夹划分为不同的模块;模块的基本信息有文件夹名称,文件夹文件数量,文件夹内代码量。
S3、配置参数并对参数进行校验和覆盖;
具体的,参数有两部分来源,一部分为系统里算法模型以及自动编译时的参数,这些参数都是系统的默认参数,这些参数已经经过调优,大多数情况下都可以直接使用,但是也可以用户自定义。第二部分就是用户自定义的参数,用户自定义的参数可能存在取值范围不合理等问题,需要校验,用户自定义的参数优先级更高,会覆盖模型默认的参数。
其中,所述参数包括编程语言的类型、算法权重选择、线程数量选择、是否手动确认语言类型、置信度。
其中,所述配置参数并对参数进行校验和覆盖包括以下步骤:
S31、用户可根据需求进行自定义参数配置或者使用默认参数配置;
S32、若用户进行了自定义参数,则对用户的自定义参数进行校验,并将用户的自定义参数作为优先级覆盖默认的参数。
S4、根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
其中,所述根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型包括以下步骤:
S41、根据用户自定义的参数和默认参数确定各个源代码模块的算法权重;
S42、利用多编程语言检测算法检测各个源代码模块的编程语言概率;
具体的,如果综合概率小于默认置信度,则说明语言检测失败,提示用户;默认置信度为95%,用户可自己配置。
其中,所述多编程语言检测算法包括文件后缀法、文件特征法及机器学习法。
具体的,文件后缀法,通常可以使用文件后缀来确定不同的编程语言,本发明对编程语言和文件后缀做了一一映射,可以快速的通过文件后缀得知编程语言的类型。
文件特征法,不同的编程语言都有特定的语法特征,本发明提取了各编程语言的语法特征,并对不同特征赋予分数,生成编程语言和语法特征二维表,二维表每个单元格的值为得分。计算最终得分排序,分数越高,说明是最可能匹配的语言。
当得分为5分时:表示给定语言特有的。
当得分为1分时:表示不是给定语言特有的。
当得分为-5分时:表示与给定语言不匹配的。
机器学习法,机器学习法结合了深度神经网络分类器和线性分类器。通过对模型参数的调控,使得模型具有最佳的性能和最佳的泛化能力。模型整体表现非常出色,但模型有缺陷,不能正确处理代码量非常小的情况,并且当多种编程语言共有相同特征的情况下,也存在一定的问题。
S43、采用加权融合算法计算最终权重,并选择最大概率的编程语言类型;
具体的,算法的融合采用加权融合的方式。考虑到前述三种算法在不同的方面有显著的优势,所以确定三种算法通过加权融合的方式来计算最终结果。加权融合是一种给每个基础模型分配不同权重的方法,以产生最终预测结果。具体来说,加权融合将每个基础模型的预测结果乘以其对应的权重,然后将所有结果相加,得到最终预测结果。加权融合可以根据每个基础模型的表现,调整其对应的权重,从而提高模型的预测准确率。
其中,所述加权融合算法的计算公式为:
其中,y(x)表示加权融合后的预测结果;
yi(x)表示第i种算法所预测的结果;
wi表示第i种算法对应的权重;
x表示各个源代码模块的序号。
本发明中使用github上的10w+个源代码库进行了训练,用1w+个源代码库对模型进行了测试,准确率稳定在95%以上。模型最终确定的权重参数为文件后缀法w1为0.02,文件特征法w2为0.07,机器学习法w3为0.91。模型的整体精度很高,但在一些具有多语言共同边界的代码库上,表现的并不完美,用户可以在网页版或者二进制界面上的参数设置里手动填写编程语言的类型,或者指定三种算法的权重。
S44、若需要手动确认各源代码模块语言类型,则返回各源代码模块的语言类型供用户确认。
S5、采用容器化的工具链将源代码编译为WASM字节码;
具体的,不同语言编译为WASM字节码都是个复杂的过程,通常过程包括原始代码转换为中间态,中间态转换为WASM字节码,每个过程都涉及到不同的软件工具,通过将各个工具按照顺序整合及优化为工具链来快速的提供编译能力;为了更方便的将工具链在各个不同的环境中使用,打包为容器提供容器化的服务方便工具链的生命周期管理和不同环境的隔离。
具体的,本发明中高级编程语言编译为WASM字节码采用容器化的工具链;不同的编程语言打包了不同的工具链容器,使用时只需将源代码挂载到容器,启动容器后,入口程序自动编译,等待编译完成后,输出字节码包。各编程语言工具链容器中打包了对应的编译器工具链,现支持编译的语言包括C/C++、Rust、Go、java、Swift、Kotlin、AssemblyScript、JavaScript和Python。对于一个大型含多种语言的项目,每个模块会启动对应的容器进行代码编译,各个容器执行完编译任务自动退出,检查容器退出状态码,状态为0即为正常退出,状态非0启动新的容器执行编译任务,3次编译不过,则将其他模块编译成功的压缩包和错误信息推送到网页或二进制页面。
以go语言编译为WASM字节码为例,挂载项目中的go模块代码到WASM-GO容器的/data/go目录,挂载go模块项目下的/output目录到容器的/output/go,容器启动之后,会启动shell脚本,调用Go和TinyGo将代码编译为WASM,调用tar命令打包为tar压缩包,然后将压缩包拷贝到/output/go。至此go语言代码被编译为WASM,并且输出压缩包到/output目录下。
WASM-GO容器基础环境为go镜像,启动脚本为start.sh;容器中包含TinyGo二进制程序,TinyGo是核心的编译程序。
S6、将编译后的WASM字节码打包压缩;
其中,所述将编译后的WASM字节码打包压缩包括以下步骤:
S61、若用户采用的二进制软件包操作方式,则在用户配置的输出目录或默认的输出目录获取编译结果;
S62、若用户采用的是网页上操作方式,则推送编译完成信息到网页页面,供用户下载WASM字节码包。
S7、统计检测和编译花费的时间并进行输出。
根据本发明的另一个实施例,提供了编程语言检测及自动编译为WASM字节码的系统,该系统包括源代码上传模块1、源代码预处理模块2、参数配置模块3、编程语言选择模块4、源代码编译模块5、字节码打包模块6及统计检测模块7;
所述源代码上传模块1,用于用户将源代码进行上传;
所述源代码预处理模块2,用于对上传的源代码进行预处理;
所述参数配置模块3,用于配置参数并对参数进行校验和覆盖;
所述编程语言选择模块4,用于根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
所述源代码编译模块5,用于选择工具链并将源代码编译为WASM字节码;
所述字节码打包模块6,用于将编译后的WASM字节码打包压缩;
所述统计检测模块7,用于统计检测和编译花费的时间并进行输出。
综上所述,借助于本发明的上述技术方案,本发明通过设计并训练了一种更快捷更准确的检测编程语言的系统,并考虑不同算法的优缺点,结合代码量和人工参数配置,使用该系统可以得出给定源代码的检测概率,通过大量的样本训练,该系统稳定可靠,使用默认参数情况下,准确率较高;本发明通过使用容器化的工具链,使得编译可移植,可拓展,调用方便,用完即毁,极大的降低了将高级语言转换为WASM字节码的成本;本发明通过使用不同权重的算法参数来优化语言检测,提高检测概率,通过多线程调用多个容器化工具链加速编译过程;本发明在编程语言检测中提出了三种算法,并对算法整体进行调优,准确率较高;本发明使用二进制包和网页两种方式设置参数和导入源码,使用网页方式更加方便,使用二进制包更加安全,并输出了中间过程及最终结果的统计信息。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.编程语言检测及自动编译为WASM字节码的方法,其特征在于,该方法包括以下步骤:
S1、用户将源代码进行上传;
S2、对上传的源代码进行预处理;
S3、配置参数并对参数进行校验和覆盖;
S4、根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
S5、采用容器化的工具链将源代码编译为WASM字节码;
S6、将编译后的WASM字节码打包压缩;
S7、统计检测和编译花费的时间并进行输出。
2.根据权利要求1所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述用户将源代码进行上传的方式包括二进制软件包操作方式和网页上操作方式;
所述二进制软件包操作方式,表示通过命令和参数来提交检测和编译任务;
所述网页上操作方式,表示用户通过浏览器在网页上上传源代码压缩包和选择配置参数。
3.根据权利要求1所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述对上传的源代码进行预处理包括以下步骤:
S21、将源代码包解压并统计代码量;
S21、按照不同编程语言的特征文件或文件夹来划分模块。
4.根据权利要求1所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述配置参数并对参数进行校验和覆盖包括以下步骤:
S31、用户可根据需求进行自定义参数配置或者使用默认参数配置;
S32、若用户进行了自定义参数,则对用户的自定义参数进行校验,并将用户的自定义参数作为优先级覆盖默认的参数。
5.根据权利要求4所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述参数包括编程语言的类型、算法权重选择、线程数量选择、是否手动确认语言类型、置信度。
6.根据权利要求1所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型包括以下步骤:
S41、根据用户自定义的参数和默认参数确定各个源代码模块的算法权重;
S42、利用多编程语言检测算法检测各个源代码模块的编程语言概率;
S43、采用加权融合算法计算最终权重,并选择最大概率的编程语言类型;
S44、若需要手动确认各源代码模块语言类型,则返回各源代码模块的语言类型供用户确认。
7.根据权利要求6所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述多编程语言检测算法包括文件后缀法、文件特征法及机器学习法。
8.根据权利要求6所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述加权融合算法的计算公式为:
其中,y(x)表示加权融合后的预测结果;
yi(x)表示第i种算法所预测的结果;
wi表示第i种算法对应的权重;
x表示各个源代码模块的序号。
9.根据权利要求1所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,所述将编译后的WASM字节码打包压缩包括以下步骤:
S61、若用户采用的二进制软件包操作方式,则在用户配置的输出目录或默认的输出目录获取编译结果;
S62、若用户采用的是网页上操作方式,则推送编译完成信息到网页页面,供用户下载WASM字节码包。
10.编程语言检测及自动编译为WASM字节码的系统,用于实现权利要求1-9任一项所述的编程语言检测及自动编译为WASM字节码的方法,其特征在于,该系统包括源代码上传模块、源代码预处理模块、参数配置模块、编程语言选择模块、源代码编译模块、字节码打包模块及统计检测模块;
所述源代码上传模块,用于用户将源代码进行上传;
所述源代码预处理模块,用于对上传的源代码进行预处理;
所述参数配置模块,用于配置参数并对参数进行校验和覆盖;
所述编程语言选择模块,用于根据配置的参数确定多编程语言检测算法的权重,并检测源代码模块编程语言类型的语言概率,选择概率最大的编程语言类型;
所述源代码编译模块,用于选择工具链并将源代码编译为WASM字节码;
所述字节码打包模块,用于将编译后的WASM字节码打包压缩;
所述统计检测模块,用于统计检测和编译花费的时间并进行输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310531560.9A CN116643727B (zh) | 2023-05-11 | 2023-05-11 | 编程语言检测及自动编译为wasm字节码的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310531560.9A CN116643727B (zh) | 2023-05-11 | 2023-05-11 | 编程语言检测及自动编译为wasm字节码的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116643727A CN116643727A (zh) | 2023-08-25 |
CN116643727B true CN116643727B (zh) | 2024-02-06 |
Family
ID=87642659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310531560.9A Active CN116643727B (zh) | 2023-05-11 | 2023-05-11 | 编程语言检测及自动编译为wasm字节码的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116643727B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7010784B1 (en) * | 1999-09-03 | 2006-03-07 | Cadence Design Systems, Inc. | Method and system for split-compiling a hybrid language program |
GB201302700D0 (en) * | 2013-02-15 | 2013-04-03 | Geeks Ltd | Compiler |
CN106354632A (zh) * | 2016-08-24 | 2017-01-25 | 北京奇虎测腾科技有限公司 | 一种基于静态分析技术的源代码检测系统及方法 |
CN111459463A (zh) * | 2019-01-21 | 2020-07-28 | 中科星图股份有限公司 | 算法模块生成方法和线状符号绘制方法 |
CN114625371A (zh) * | 2022-02-18 | 2022-06-14 | 北京理工大学 | 跨操作系统多源融合算法编译方法、编译器及存储介质 |
CN115686527A (zh) * | 2022-11-01 | 2023-02-03 | 深圳思谋信息科技有限公司 | 基于算子的编译方法、装置、计算机设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8387027B2 (en) * | 2010-01-15 | 2013-02-26 | Oracle America, Inc. formerly Sun Microsystems, Inc. | Method and system for compiling a dynamically-typed method invocation in a statically-typed programming language |
US8843907B2 (en) * | 2011-08-25 | 2014-09-23 | Myezapp Inc. | Compiler with error handling |
US9489184B2 (en) * | 2011-12-30 | 2016-11-08 | Oracle International Corporation | Adaptive selection of programming language versions for compilation of software programs |
KR102414250B1 (ko) * | 2015-07-30 | 2022-06-29 | 삼성전자주식회사 | 전자 장치, 컴파일링 방법 및 컴퓨터 판독가능 기록매체 |
US11392357B2 (en) * | 2019-12-13 | 2022-07-19 | Sap Se | Delegating bytecode runtime compilation to serverless environment |
US11301221B2 (en) * | 2019-12-13 | 2022-04-12 | Sap Se | Rapid code compiling system |
CN111770113B (zh) * | 2020-08-31 | 2021-07-30 | 支付宝(杭州)信息技术有限公司 | 一种执行智能合约的方法、区块链节点和节点设备 |
-
2023
- 2023-05-11 CN CN202310531560.9A patent/CN116643727B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7010784B1 (en) * | 1999-09-03 | 2006-03-07 | Cadence Design Systems, Inc. | Method and system for split-compiling a hybrid language program |
GB201302700D0 (en) * | 2013-02-15 | 2013-04-03 | Geeks Ltd | Compiler |
CN106354632A (zh) * | 2016-08-24 | 2017-01-25 | 北京奇虎测腾科技有限公司 | 一种基于静态分析技术的源代码检测系统及方法 |
CN111459463A (zh) * | 2019-01-21 | 2020-07-28 | 中科星图股份有限公司 | 算法模块生成方法和线状符号绘制方法 |
CN114625371A (zh) * | 2022-02-18 | 2022-06-14 | 北京理工大学 | 跨操作系统多源融合算法编译方法、编译器及存储介质 |
CN115686527A (zh) * | 2022-11-01 | 2023-02-03 | 深圳思谋信息科技有限公司 | 基于算子的编译方法、装置、计算机设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
Alan Romano ; Xinyue Liu ; Yonghwi Kwon ; Weihang Wang.An Empirical Study of Bugs in WebAssembly Compilers.2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE).2021,全文. * |
基于WebAssembly的JavaScript性能优化方案研究与实现;薛超;《西北大学》;全文 * |
编译技术的发展;贾巧兰;;数码世界(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116643727A (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11249887B2 (en) | Deep Q-network reinforcement learning for testing case selection and prioritization | |
CN111399853B (zh) | 机器学习模型与自定义算子的模板化部署方法 | |
CN107704238B (zh) | 一种对项目进行打包的方法及装置 | |
CN110377321A (zh) | 应用程序升级的方法、装置、终端及存储介质 | |
CN1591338A (zh) | 基于标记的链接 | |
JP2007141173A (ja) | コンパイルシステム、デバッグシステムおよびプログラム開発システム | |
EP4120068A1 (en) | Intent-based machine programming | |
CN111736954A (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 | |
CN109766261A (zh) | 覆盖测试方法、装置、计算机设备和存储介质 | |
CN112650487B (zh) | 混合应用程序开发方法、系统、计算机设备和存储介质 | |
CN114816417A (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
CN113076115A (zh) | 基于国产平台的基础软件封装方法 | |
CN111667231B (zh) | 自动化报税方法、装置、系统、计算机设备和存储介质 | |
KR102546424B1 (ko) | 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법 | |
CN116911588A (zh) | 业务流程执行方法、装置、设备及存储介质 | |
CN109492749B (zh) | 在局域网中实现神经网络模型线上服务的方法及装置 | |
CN116643727B (zh) | 编程语言检测及自动编译为wasm字节码的方法和系统 | |
CN114580346A (zh) | 结合rpa和ai的信息生成方法、装置、电子设备及存储介质 | |
CN116166907B (zh) | 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置 | |
CN111930419B (zh) | 基于深度学习模型的代码包生成方法和系统 | |
CN114546819A (zh) | 代码处理方法、装置、电子设备及可读介质 | |
CN117289841A (zh) | 基于大语言模型的交互方法和装置、存储介质和电子设备 | |
CN117113080A (zh) | 数据处理和代码处理方法、装置、一体机和存储介质 | |
CN112597037B (zh) | 一种Java和Python结合的自动化脚本开发方法和装置 | |
CN111427770B (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 |