CN115203016A - 一种matlab语言代码质量检测系统及其检测方法 - Google Patents
一种matlab语言代码质量检测系统及其检测方法 Download PDFInfo
- Publication number
- CN115203016A CN115203016A CN202210566682.7A CN202210566682A CN115203016A CN 115203016 A CN115203016 A CN 115203016A CN 202210566682 A CN202210566682 A CN 202210566682A CN 115203016 A CN115203016 A CN 115203016A
- Authority
- CN
- China
- Prior art keywords
- module
- analysis
- code
- matlab
- quality detection
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种MATLAB语言代码质量检测系统及其检测方法,涉及MATLAB语言代码质量检测领域,解决了现有的MATLAB语言代码没有快速有效的质量检测手段,不能有效的避免代码中留存隐性漏洞的问题,现提出如下方案,其包括前端系统、后端系统,所述前端系统包括首页、登录/注册界面、查看项目界面、分析结果展示,所述后端系统包括多文件处理模块、代码静态分析处理模块、语法树监听器模块、符号表与作用域模块、工具类模块、结果展示模块与CRUD模块。本系统方法实现了MATLAB变量的类型推导,不占用用户本地资源,实现了绘制函数之间调用关系的功能,且分析速度快的特点。
Description
技术领域
本发明涉及MATLAB语言代码质量检测领域,尤其涉及一种MATLAB语言代码质量检测系统及其检测方法。
背景技术
代码质量检测是代码编写和软件开发过程中十分重要的一环。针对MATLAB语言,有效的代码检测手段能够在编码阶段及时发现可能存在的错误,并检测代码是否符合编码标准。这不仅有助于节省编程人员排查错误的时间,还能避免代码中留存隐性漏洞,为未来的程序运行造成安全隐患。
然而,由于MATLAB的动态类型语言特性,市面上十分缺乏针对MATLAB代码质量检测手段,更多的是针对C/C++等传统语言的代码静态检测工具,如何对MATLAB代码进行快速有效的质量检测,成为亟待解决的问题之一。因此提出一种MATLAB语言代码质量检测系统及其检测方法。
发明内容
本发明的目的在于提供一种MATLAB语言代码质量检测系统及其检测方法,解决了现有的MATLAB语言代码没有快速有效的质量检测手段,不能有效的避免代码中留存隐性漏洞的问题。
为实现上述目的,本发明提供如下技术方案:一种MATLAB语言代码质量检测系统,包括前端系统、后端系统,所述前端系统包括首页、登录/注册界面、查看项目界面、分析结果展示,所述后端系统包括多文件处理模块、代码静态分析处理模块、语法树监听器模块、符号表与作用域模块、工具类模块、结果展示模块与CRUD模块。
优选的,所述分析结果展示模块还包括详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面。
优选的,所述首页、登录/注册界面、查看项目界面、分析结果展示用于用户在前端系统登录账户并上传文件。
优选的,所述多文件处理模块用于接收文件以及转储,所述代码静态分析处理模块用于对词法、语法进行分析并生成抽象语法树,以及还用于遍历语法分析树,检测词法与语法错误,记录函数及函数参数,代码静态分析。
优选的,所述语法树监听器模块用于在语法树遍历过程中监听,处理静态分析内容,所述符号表与作用域模块用于描述。记录MATLAB的符号表和作用域。
优选的,所述工具类模块用于生成DOT代码、绘制调用关系图,所述结果展示模块用于传送分析结果与图片,所述CRUD模块用于与数据库交互、听随前端系统命令进行增删改查。
一种MATLAB语言代码质量检测方法,包括以下步骤:
S1:在前端系统登录后上传文件,并通过分析结果展示模块的详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面对相关信息进行展示。
S2:通过后端系统的多文件处理模块对上传的文件进行接收、转储,同时通过代码静态分析处理模块对将文件信息调用并分别通过语法树监听模块、符号表与作用域模块与工具类模块对文件信息在语法树遍历过程中监听,处理静态分析内筒,描述、记录MATLAB的符号表和作用域,生成DOT代码,绘制调用关系图;
S3:通过结果展示模块对进行各种分析数据进行传送分析结果、图片,以及展示、表格式查询;
S4:用户、项目CRUD模块分别与数据库以及前端系统连接,以方便对用户登录、项目展示、项目新建进行的操作。
优选的,所述S2中生成抽象语法树,首先要对代码进行词法分析和语法分析,并使用ANTLR4引擎来实现这一过程。
优选的,所述ANTLR4引擎来首先使用正则表达式对MATLAB词法和语法规则进行描述,编写为.g4文件,然后使用ANTLR引擎,生成词法分析器Lexer、语法分析器Parser,以及用于遍历抽象语法树的Listener和Visitor。
优选的,所述Listener监听器在遍历抽象语法树(深度优先遍历)的过程中,每当进入和退出一个语法结点时,ANTLR都会捕获到这一行为,然后执行相应Listener中的代码,进而在相应的语法节点处获取我们需要的代码信息,从而进行代码静态分析,且整个遍历过程分为三轮。
与相关技术相比较,本发明提供的一种MATLAB语言代码质量检测系统及其检测方法具有如下有益效果:
1、本发明提供一种MATLAB语言代码质量检测系统及其检测方法,提供了针对MATLAB语言的一种代码质量检测手段,采用代码静态分析技术,通过遍历语法分析树的方式对MATLAB代码进行分析,并基于MATLAB的特征,为其设计了作用域和符号表,实现了MATLAB变量的类型推导。
2、本发明提供一种MATLAB语言代码质量检测系统及其检测方法,通过一个位于云端的代码分析平台,在分析之后返回结果到用户端,不占用用户本地资源。
3、本发明提供一种MATLAB语言代码质量检测系统及其检测方法,基于函数调用关系的图特征,实现了绘制函数之间调用关系的功能。
4、本发明提供一种MATLAB语言代码质量检测系统及其检测方法,采用了代码静态分析技术,分析速度仅取决于代码长度,与代码复杂度无关,分析速度快。
附图说明
图1为本发明的一种MATLAB语言代码质量检测系统及其检测方法的架构图。
图2为本发明的一种MATLAB语言代码质量检测系统及其检测方法的控制方法流程图。
图3为本发明的一种MATLAB语言代码质量检测系统及其检测方法的首页界面图。
图4为本发明的一种MATLAB语言代码质量检测系统及其检测方法的登录界面图。
图5为本发明的一种MATLAB语言代码质量检测系统及其检测方法的无账号转跳界面图。
图6为本发明的一种MATLAB语言代码质量检测系统及其检测方法的登录成功界面图。
图7为本发明的一种MATLAB语言代码质量检测系统及其检测方法的仓库界面图。
图8为本发明的一种MATLAB语言代码质量检测系统及其检测方法的新建项目界面图。
图9为本发明的一种MATLAB语言代码质量检测系统及其检测方法的上传进度界面图。
图10为本发明的一种MATLAB语言代码质量检测系统及其检测方法的项目展示界面图。
图11为本发明的一种MATLAB语言代码质量检测系统及其检测方法的删除项目界面图。
图12为本发明的一种MATLAB语言代码质量检测系统及其检测方法的结果展示界面图。
图13为本发明的一种MATLAB语言代码质量检测系统及其检测方法的详细问题查询界面图。
图14为本发明的一种MATLAB语言代码质量检测系统及其检测方法的详细代码与调用界面展示图。
图15为本发明的一种MATLAB语言代码质量检测系统及其检测方法的分析结果展示界面图。
图16为本发明的一种MATLAB语言代码质量检测系统及其检测方法的ANTLR4引擎流程图。
图17为本发明的一种MATLAB语言代码质量检测系统及其检测方法的抽象语法树存储流程图。
图18为本发明的一种MATLAB语言代码质量检测系统及其检测方法的遍历器信息接收图。
图19为本发明的一种MATLAB语言代码质量检测系统及其检测方法的遍历过程流程图。
图20为本发明的一种MATLAB语言代码质量检测系统及其检测方法的同名变量联系图。
图21为本发明的一种MATLAB语言代码质量检测系统及其检测方法的符号表和作用域实现图。
图22为本发明的一种MATLAB语言代码质量检测系统及其检测方法的多函数文件调用关系图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参阅图1-22,本发明提供一种技术方案:一种MATLAB语言代码质量检测系统,包括前端系统、后端系统,前端系统包括首页、登录/注册界面、查看项目界面、分析结果展示,后端系统包括多文件处理模块、代码静态分析处理模块、语法树监听器模块、符号表与作用域模块、工具类模块、结果展示模块与CRUD模块。
分析结果展示模块还包括详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面。
首页、登录/注册界面、查看项目界面、分析结果展示用于用户在前端系统登录账户并上传文件。
多文件处理模块用于接收文件以及转储,代码静态分析处理模块用于对词法、语法进行分析并生成抽象语法树,以及还用于遍历语法分析树,检测词法与语法错误,记录函数及函数参数,代码静态分析。
语法树监听器模块用于在语法树遍历过程中监听,处理静态分析内容,符号表与作用域模块用于描述。记录MATLAB的符号表和作用域。
工具类模块用于生成DOT代码、绘制调用关系图,结果展示模块用于传送分析结果与图片,CRUD模块用于与数据库交互、听随前端系统命令进行增删改查。
实施例二:
请参阅图1-22,本发明提供一种技术方案:一种MATLAB语言代码质量检测方法,包括以下步骤:
S1:在前端系统登录后上传文件,并通过分析结果展示模块的详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面对相关信息进行展示。
S2:通过后端系统的多文件处理模块对上传的文件进行接收、转储,同时通过代码静态分析处理模块对将文件信息调用并分别通过语法树监听模块、符号表与作用域模块与工具类模块对文件信息在语法树遍历过程中监听,处理静态分析内筒,描述、记录MATLAB的符号表和作用域,生成DOT代码,绘制调用关系图;
S3:通过结果展示模块对进行各种分析数据进行传送分析结果、图片,以及展示、表格式查询;
S4:用户、项目CRUD模块分别与数据库以及前端系统连接,以方便对用户登录、项目展示、项目新建进行的操作。
S2中生成抽象语法树,首先要对代码进行词法分析和语法分析,并使用ANTLR4引擎来实现这一过程。
ANTLR4引擎来首先使用正则表达式对MATLAB词法和语法规则进行描述,编写为.g4文件,然后使用ANTLR引擎,生成词法分析器Lexer、语法分析器Parser,以及用于遍历抽象语法树的Listener和Visitor。
Listener监听器在遍历抽象语法树(深度优先遍历)的过程中,每当进入和退出一个语法结点时,ANTLR都会捕获到这一行为,然后执行相应Listener中的代码,进而在相应的语法节点处获取我们需要的代码信息,从而进行代码静态分析,且整个遍历过程分为三轮。
本实施方案中:
1.1.1首页
用户输入网址打开首页。首页对mSonar进行了简要的介绍。
(如说明书附图3所示)
1.1.2注册/登录界面
用户在首页点击注册/登录按钮,即可进入注册/登录界面,如说明书附图4所示:
若没有账号,用户可以点击“没有账号?点击注册”按钮进行账号的注册,如说明书附图5所示:按照要求输入用户名与密码,完成注册。
注册完成后,将再次跳转到登录界面。用户输入刚才注册的账号和密码,即可登录。登录成功即会出现如说明书附图6所示提示:
1.1.3项目展示界面(无项目)
登录成功后,将会自动跳转到项目展示界面。若用户为新用户,此时其项目仓库为空,则会出现如说明书附图7所示界面的提示:
用户可以点击新建项目按钮,进行新项目的创建。
1.1.4新建项目界面,如说明书附图8所示。
点击新建项目按钮,即进入如上界面。用户可以在该界面进行项目名称、项目描述内容等信息的填写,并完成文件上传。上传成功后会出现进度提示,如说明书附图9所示:
之后,用户可以点击最下方的保存项目按钮,完成项目的新建。
1.1.5项目展示界面(有项目)
项目新建后,即重新跳转到项目展示界面,如说明书附图10所示:
该界面对仓库中所有的项目进行显示。点击删除项目,会提示如说明书附图11是的内容:
点击确认删除,即可删除项目。
点击进入项目,即可对项目进行分析。
1.1.6分析结果展示界面(无词法、语法错误),如说明书附图12所示。
在项目展示界面点击进入项目后,即可对项目进行分析,并在分析结果展示界面展示MATLAB项目的基本信息,如代码行总数、bug总数、不规范总数、注释率、重复率等内容。
在左侧边栏点击详细问题按钮,即可进入详细问题查询界面。
点击下方的查看详细代码与函数调用流程图按钮,即可进入详细代码与调用图界面(见3.1.8)。
1.1.7详细问题查询界面
详细问题查询界面如说明书附图13所示:
用户在选择框中选择相应的文件和查询的类型,点击展示按钮即可展示对应的质量检测信息。
1.1.8详细代码与调用图界面
在3.1.6界面中点击查看详细代码与函数调用流程图按钮,即可展示详细代码与调用图界面,如说明书附图14所示:
其中,最左侧列出了上传的所有文件,点击文件名,即可切换到相应文件的代码解析结果。
中间一栏以编辑框的形式展示了被分析的代码和分析的结果,有潜在问题的行将会被红色高亮标注,对应右侧的文字对问题进行了简要说明。
右侧一栏的函数调用关系图对多个文件之间的函数调用关系进行了展示。
1.1.9分析结果展示界面(有词法、语法错误)
若用户的代码有词法、语法错误,则将出现以下界面(如说明书附图15所示):
表示用户代码存在词法或语法错误,用户可以点击查看错误按钮,查询具体的错误。(3.1.7)
1.2数据库设计
本作品主要在数据库中存储了用户的注册信息和创建项目的基础信息。
用户的注册信息如下表所示:
字段哦 | username | password | uid |
用途 | 保存用户的用户名 | 保存用户的密码 | 用户编号 |
创建项目的基础信息如下表所示:
字段 | project_name | project_disc | project_path | username | pid |
用途 | 项目名称 | 项目描述 | 项目的存储路径 | 所属的用户名称 | 项目编号 |
1.3关键算法
1.3.1抽象语法树的生成
为了生成抽象语法树,首先要对代码进行词法分析和语法分析。本项目采用ANTLR4引擎来实现这一过程。首先使用正则表达式对MATLAB词法和语法规则进行描述,编写为.g4文件。然后使用ANTLR引擎,生成词法分析器Lexer、语法分析器Parser,以及用于遍历抽象语法树的Listener和Visitor。整个过程如说明书附图16所示:
生成这些内容后,我们只需将文件依次送入Lexer、Parser,即可实现抽象语法树的生成,该抽象语法树存储于ParserTree中。如说明书附图17所示:
1.3.2抽象语法树的遍历
经过词法分析(Lexer)、语法分析(Parser)后,我们就构建好了抽象语法树。接下来需要对语法树进行三次遍历。我们采用了ANTLR提供的Listener监听器对构建生成的抽象语法树进行遍历。如下图所示,分别将抽象语法树ParserTree和监听器Listener送入遍历器中,对抽象语法树进行遍历。(如说明书附图18所示)
Listener监听器的主要原理为:在遍历抽象语法树(深度优先遍历)的过程中,每当进入和退出一个语法结点时,ANTLR都会捕获到这一行为,然后执行相应Listener中的代码。我们利用这一特点,可以准确地在相应的语法结点处获取我们需要的代码信息,从而进行代码静态分析。
整个遍历过程分为三轮。如说明书附图19所示:
第一轮遍历的主要目的为检测代码是否有词法、语法错误。ANTLR会自动检测不符合我们编写的词法、语法规则的错误,并给出提示信息。如果文件有词法、语法错误,则跳过第二、第三次遍历,直接在前端给出错误信息。
第二轮遍历的目的为记录上传文件中的函数名称,生成相应函数作用域,提取函数参数信息,并将它们放入到对应函数作用域中。
第三轮遍历即为正式的代码静态检查环节。
1.3.3作用域和符号表的建立
(1)作用域
函数和变量是编程语言中最为重要的内容。为了对变量进行类型推导和静态检查,我们需要建立变量符号表和作用域。
与其他编程语言不同,MATLAB文件有函数、脚本两种文件类型。所有的脚本文件共用一个叫做主工作区的作用域,每个函数文件都有着自己的作用域,且函数文件不能使用脚本主工作区的变量。此外,被global声明的变量是可以在函数和脚本之间互用的。
基于这样的事实,我们分别创建一个全局作用域,一个脚本作用域,并为每个函数创建一个作用域。其次,每个文件都有一个Global_list,当该文件中出现被global声明的变量时,就将其加入到Global_list中,说明该变量与全局作用域的同名变量建立了联系。(如说明书附图20所示)
综上所述,我们需要函数作用域、脚本作用域、全局作用域三种类型。
(2)符号表
符号表是记录变量名称、类型、作用域的结构。为了区分普通变量和函数,我们建立了普通符号和函数符号两种类型。
(3)实现
符号表和作用域的实现如说明书附图21所示:
其中Symbol为基本符号类,可以存储所有变量符号。Scope接口为作用域提供统一的接口协议,实现了查询作用域是否有某一个变量、为作用域添加变量等功能。BaseScope为作用域基类,其中保存该作用域中的所有符号。GlobalScope和LocalScope继承自BaseScope,分别表示全局和脚本作用域。较为特殊的是FunctionScope,它既是一个函数符号,又是一个函数作用域,因此它继承自Symbol,且实现了Scope接口。
1.3.4变量类型的推导和静态分析检测
MATLAB语言是动态类型语言,变量类型推导是静态分析过程中必须完成的一步。我们主要在第三次遍历抽象语法树的过程中对变量的类型进行推导。
我们将MATLAB的类型分为UNDEF,FN,ARRAY,CELL,STRING,INT,FLOAT,BOOLEAN,IMAGINARY等9种类型,其中UNDEF类型表示该变量类型无法确定。
由于导致变量类型改变的语句主要是赋值语句,因此我们主要对赋值语句展开分析。我们使用了Listener监听器,当遍历到赋值语句时,我们分别对语句等号左侧和等号右侧的变量进行读取。如果等号右侧是常量,则判断常量的类型,由此可以确定等号左侧变量的类型。如果等号右侧是变量,则在作用域中查找该变量,从而确定左变量的类型。如果作用域中没有该变量,则报出一个错误信息。
此外,若作用域中已有左变量,则查看左变量的类型是否改变,并报出相关提示信息;肉作用域中没有左变量,则在作用域中对左变量进行新建保存。
1.3.5if语句/while语句的静态分析检测
在Listener监听器遍历到if语句时,我们对if语句中的statement(语句)子结点进行检测,若为空,则报出提示信息(if语句为空);若有多个语句有重复内容,则报出提示(语句重复)。
在Listener监听器遍历到while语句时,同样对while语句的循环条件进行判断,若为1,则报出提示信息(while语句为死循环);若其statement(语句)子结点为空,则报出提示信息(循环体为空)。
1.3.6函数调用关系图的绘制
我们实现了绘制多函数文件之间调用关系图的功能,其主要流程如说明书附图22所示:
我们将函数之间的调用关系抽象为了图论中最基本的边和点。在第二次、第三次语法树遍历中,分别记录文件的名字、调用者和被调用者之间的关系,然后生成点集和边集,转换为DOT语句,DOT是一种方便画图的描述图的一种语言。在生成DOT之后,我们调用graphviz画图工具,生成了最终的函数调用关系图。
1.3.7多人在线实时使用的处理
为了避免多人在线实时使用导致上传文件冲突,我们对每个用户上传的文件进行分文件夹放置,并且随机生成字符串作为文件夹的文件名,从而避免文件混乱与冲突。
1.4创新点与优势
本项目主要有如下创新点:
(1)理论创新:本项目提供了针对MATLAB语言的一种代码质量检测手段。
(2)应用创新:本项目是一个位于云端的代码分析平台,在分析之后返回结果到用户端,不占用用户本地资源。
(3)函数调用关系图的绘制:本项目基于函数调用关系的图特征,实现了绘制函数之间调用关系的功能。
(4)分析速度快:本项目采用了代码静态分析技术,分析速度仅取决于代码长度,与代码复杂度无关,分析速度快。
mSonar是一个MATLAB代码质量检测云平台。我们尝试通过它打破MATLAB语言缺乏质量检测工具的现状,为工程计算和科研领域人员提供一个能够快速对MATLAB语言进行代码质量检测的Web云平台。
在诸多的代码质量检测工具中,仍没有出现针对MATLAB语言的工具。常见的代码质量检测工具及其特征如下:
Claims (10)
1.一种MATLAB语言代码质量检测系统,包括前端系统、后端系统,其特征在于,所述前端系统包括首页、登录/注册界面、查看项目界面、分析结果展示,所述后端系统包括多文件处理模块、代码静态分析处理模块、语法树监听器模块、符号表与作用域模块、工具类模块、结果展示模块与CRUD模块。
2.根据权利要求1所述的一种MATLAB语言代码质量检测系统,其特征在于,所述分析结果展示模块还包括详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面。
3.根据权利要求1所述的一种MATLAB语言代码质量检测系统,其特征在于,所述首页、登录/注册界面、查看项目界面、分析结果展示用于用户在前端系统登录账户并上传文件。
4.根据权利要求1所述的一种MATLAB语言代码质量检测系统,其特征在于,所述多文件处理模块用于接收文件以及转储,所述代码静态分析处理模块用于对词法、语法进行分析并生成抽象语法树,以及还用于遍历语法分析树,检测词法与语法错误,记录函数及函数参数,代码静态分析。
5.根据权利要求1所述的一种MATLAB语言代码质量检测系统,其特征在于,所述语法树监听器模块用于在语法树遍历过程中监听,处理静态分析内容,所述符号表与作用域模块用于描述。记录MATLAB的符号表和作用域。
6.根据权利要求1所述的一种MATLAB语言代码质量检测系统,其特征在于,所述工具类模块用于生成DOT代码、绘制调用关系图,所述结果展示模块用于传送分析结果与图片,所述CRUD模块用于与数据库交互、听随前端系统命令进行增删改查。
7.一种MATLAB语言代码质量检测方法,其特征在于,包括以下步骤:
S1:在前端系统登录后上传文件,并通过分析结果展示模块的详细代码与函数调用图页面、分析信息查询页面与分析数据展示界面对相关信息进行展示。
S2:通过后端系统的多文件处理模块对上传的文件进行接收、转储,同时通过代码静态分析处理模块对将文件信息调用并分别通过语法树监听模块、符号表与作用域模块与工具类模块对文件信息在语法树遍历过程中监听,处理静态分析内筒,描述、记录MATLAB的符号表和作用域,生成DOT代码,绘制调用关系图;
S3:通过结果展示模块对进行各种分析数据进行传送分析结果、图片,以及展示、表格式查询;
S4:用户、项目CRUD模块分别与数据库以及前端系统连接,以方便对用户登录、项目展示、项目新建进行的操作。
8.根据权利要求7所述的一种MATLAB语言代码质量检测方法,其特征在于,所述S2中生成抽象语法树,首先要对代码进行词法分析和语法分析,并使用ANTLR4引擎来实现这一过程。
9.根据权利要求8所述的一种MATLAB语言代码质量检测方法,其特征在于,所述ANTLR4引擎来首先使用正则表达式对MATLAB词法和语法规则进行描述,编写为.g4文件,然后使用ANTLR引擎,生成词法分析器Lexer、语法分析器Parser,以及用于遍历抽象语法树的Listener和Visitor。
10.根据权利要求9所述的一种MATLAB语言代码质量检测方法,其特征在于,所述Listener监听器在遍历抽象语法树(深度优先遍历)的过程中,每当进入和退出一个语法结点时,ANTLR都会捕获到这一行为,然后执行相应Listener中的代码,进而在相应的语法节点处获取我们需要的代码信息,从而进行代码静态分析,且整个遍历过程分为三轮。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210566682.7A CN115203016A (zh) | 2022-05-23 | 2022-05-23 | 一种matlab语言代码质量检测系统及其检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210566682.7A CN115203016A (zh) | 2022-05-23 | 2022-05-23 | 一种matlab语言代码质量检测系统及其检测方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115203016A true CN115203016A (zh) | 2022-10-18 |
Family
ID=83575501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210566682.7A Withdrawn CN115203016A (zh) | 2022-05-23 | 2022-05-23 | 一种matlab语言代码质量检测系统及其检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115203016A (zh) |
-
2022
- 2022-05-23 CN CN202210566682.7A patent/CN115203016A/zh not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10162611B2 (en) | Method and apparatus for business rule extraction | |
Yang et al. | Stack overflow in github: any snippets there? | |
AU2010350247B2 (en) | Code inspection executing system for performing a code inspection of ABAP source codes | |
CN110688307B (zh) | JavaScript代码检测方法、装置、设备和存储介质 | |
CN110059006B (zh) | 代码审计方法及装置 | |
CN110245270A (zh) | 基于图模型的数据血缘关系存储方法、系统、介质和设备 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
Zhang et al. | Analyzing and supporting adaptation of online code examples | |
CN102662825B (zh) | 一种面向堆操作程序的内存泄漏检测方法 | |
US20140101097A1 (en) | Template based database analyzer | |
CN115422201A (zh) | 一种层级数据分析方法、装置及电子设备 | |
CN115454702A (zh) | 日志故障分析方法、装置、存储介质及电子设备 | |
CN113806429A (zh) | 基于大数据流处理框架的画布式日志分析方法 | |
CN115098368A (zh) | 一种识别脑图用例的智能验证方法和装置 | |
CN104461890B (zh) | 一种航管训练系统开发中Qt程序内存使用静态检查方法 | |
CN116010444B (zh) | 低代码交互式的图查询语句构建方法 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN117216092A (zh) | 一种优化tdsql脚本的方法、装置、设备及可读存储介质 | |
CN116610558A (zh) | 代码检测方法、装置、电子设备及计算机可读存储介质 | |
CN115203016A (zh) | 一种matlab语言代码质量检测系统及其检测方法 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
Grechanik et al. | Differencing graphical user interfaces | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
Shute et al. | SQL Has Problems. We Can Fix Them: Pipe Syntax In SQL | |
CN106484706B (zh) | 用于分布式系统的执行过程化sql语句的方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20221018 |
|
WW01 | Invention patent application withdrawn after publication |