The invention relates to an automatic method and system for generating source code annotations. By analyzing the semantics of the first source code and generating an abstract grammar tree, the internal mapping relationship between natural language and program language is established, and then the second source code is annotated by the mapping relationship. The invention enables the computer to efficiently analyze the program language and then map it to the corresponding natural language, thus enabling programmers to It is efficient and easy to understand the functions implemented by source code. To help programmers quickly understand the internal operation mechanism of computer programs, so as to help programmers quickly identify defects and vulnerabilities in software design. The invention has universality, solves the workload problem of the existing manual analysis of repetitive source code, and reduces the time and cost expenditure caused by the analysis of repetitive source code.
【技术实现步骤摘要】
源代码注释自动生成方法及系统
本专利技术涉及软件源代码分析工具,具体涉及一种基于递归神经网络及抽象语法树的源代码注释自动生成方法及系统。
技术介绍
人工智能已成为全球热门话题,其中基于深度学习的AlphaGo击败了李世石。人工智能算法不断在各个行业中得到应用。各个行业在工业时代后期积累的大量数据使得随机概率模型更加清晰,更加能反应客观规律。因此,合理使用概率理论分析能更加准确获取行业规律。概率理论作为人工智能的基石之一,随之能引申到各行各业中。现有的源代码分析工具能帮助程序员快速分析程序源代码的数据结构,程序源代码的内部模块执行流程。但是这些信息侧重从计算机角度分析和解决实际问题,其过程过于形式化和抽象,且与我们使用的自然语言描述和表达有大差异。因此,单看这些源代码工具提供的信息,很难理解程序所实现的功能。如控制红绿灯的计算机程序中,通过源代码分析工具能快速知道红绿灯的计算机程序的数据结构,并知道程序功能的模块,实现红绿灯的关闭开启功能。但是,通过源代码阅读工具程序员无法快速理解哪部分代码实现关闭、开启红灯这个功能。程序员必须通过理解数据结构所描述的现实信息以及该 ...
【技术保护点】
1.一种源代码注释自动生成方法,其特征在于,包括如下步骤:步骤S1:利用第一源代码的第一抽象语法树,建立语法标识tid‑句子标识sid映射关系;步骤S2:对第二源代码进行词法及语法分析,得到第二抽象语法树,并对该第二抽象语法树进行匹配计算,得到第二语法标识tid;步骤S3:根据步骤S1中的语法标识tid‑句子标识sid映射关系以及步骤S2中的第二语法标识tid,得到第二句子标识sid;步骤S4:构建注释生成模型;步骤S5:根据步骤S3中的第二句子标识sid以及步骤S4中的注释生成模型,生成第二源代码的注释;其中,第一源代码为已有注释的软件程序源代码,第二源代码为欲对其注释的 ...
【技术特征摘要】
1.一种源代码注释自动生成方法,其特征在于,包括如下步骤:步骤S1:利用第一源代码的第一抽象语法树,建立语法标识tid-句子标识sid映射关系;步骤S2:对第二源代码进行词法及语法分析,得到第二抽象语法树,并对该第二抽象语法树进行匹配计算,得到第二语法标识tid;步骤S3:根据步骤S1中的语法标识tid-句子标识sid映射关系以及步骤S2中的第二语法标识tid,得到第二句子标识sid;步骤S4:构建注释生成模型;步骤S5:根据步骤S3中的第二句子标识sid以及步骤S4中的注释生成模型,生成第二源代码的注释;其中,第一源代码为已有注释的软件程序源代码,第二源代码为欲对其注释的源代码;第一抽象语法树为已有注释的软件程序源代码的抽象语法树,第二抽象语法树为欲对其注释的源代码的抽象语法树;第二语法标识tid及第二句子标识sid分别为欲对其注释的源代码的语法标识tid及句子标识sid。2.如权利要求1所述的源代码注释自动生成方法,其特征在于,步骤S1包括:步骤S11:对第一源代码进行词法及语法分析,得到第一源代码中的每一个功能模块的第一抽象语法树,并为每棵第一抽象语法树分配一个唯一的第一语法标识tid;步骤S12:提取出第一源代码中各个层次的代码注释,并为每个独立的第一句子分配一个唯一的第一句子标识sid;步骤S13:根据步骤S11的第一语法标识tid及步骤S12的第一句子标识sid,建立语法标识tid与句子标识sid的一一映射关系;步骤S14:将第一源代码的第一句子标识sid保存到递归神经网络训练数据集中,供后续的递归神经网络模型学习;并且,在所述步骤S4中,根据步骤S14中的递归神经网络训练数据集,对由递归神经网络神经元组成的递归神经网络进行学习训练,应用领域问题知识体系结构,构建注释生成模型;其中,第一语法标识tid及第一句子标识sid分别为已有注释的软件程序源代码的语法标识tid及句子标识sid,第一句子为已有注释的软件程序源代码的句子。3.如权利要求2所述的源代码注释自动生成方法,其特征在于,所述步骤S4中,递归神经网络进行的学习训练过程包括:S41:前向计算每个递归神经网络神经元的五个向量输出值;S42:反向计算每个递归神经网络神经元的误差项δ值;S43:根据相应的误差项δ值,计算每个权重的梯度;其中,步骤S42中,神经元的反向计算包括延时间的反向传播及将误差项向上一层传播。4.如权利要求2所述的源代码注...
【专利技术属性】
技术研发人员:劳生,刘艳彬,吴春光,罗飞,范凡,申利飞,
申请(专利权)人:中标软件有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。