CN110908710B - 一种Web前端代码依赖关系可视化方法 - Google Patents

一种Web前端代码依赖关系可视化方法 Download PDF

Info

Publication number
CN110908710B
CN110908710B CN201911137711.2A CN201911137711A CN110908710B CN 110908710 B CN110908710 B CN 110908710B CN 201911137711 A CN201911137711 A CN 201911137711A CN 110908710 B CN110908710 B CN 110908710B
Authority
CN
China
Prior art keywords
file
files
code
size
max
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
Application number
CN201911137711.2A
Other languages
English (en)
Other versions
CN110908710A (zh
Inventor
周圆
张岳
金明磊
赵恩伟
邓守峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin University
Original Assignee
Tianjin University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin University filed Critical Tianjin University
Priority to CN201911137711.2A priority Critical patent/CN110908710B/zh
Publication of CN110908710A publication Critical patent/CN110908710A/zh
Application granted granted Critical
Publication of CN110908710B publication Critical patent/CN110908710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种Web前端代码依赖关系可视化方法,该方法利用分析项目代码得到包含代码信息及引用关系的原始数据,对其增强得到强化数据,再将强化数据映射到可视化模型上,最后使用ECharts进行渲染得到代码依赖关系的可视化图形,可视化图形可支持人机交互,可通过筛选原始数据,重新得到新渲染的可视化图形。与现有技术相比,原本需要人工检查才能分析得到的依赖关系,本发明提出的一种Web前端代码依赖关系可视化方法可以自动化地分析并渲染成可视化的图形,有助于减少不必要的依赖,优化代码结构。

Description

一种Web前端代码依赖关系可视化方法
技术领域
本发明涉及Web前端开发技术领域,特别涉及代码依赖关系的分析方法。
背景技术
在现代软件项目的开发中,无论使用过程式、函数式还是面向对象的软件组织方式,最终程序的执行必然包括对一系列方法的调用,这意味着代码之间的依赖关系广泛存在软件项目中,在面向对象的开发方式中,继承和方法调用是比较常见的对象之间产生依赖的原因,代码依赖不可避免,但在软件项目代码量越来越庞大的今天,代码间的依赖关系日趋复杂,冗余的和高度耦合的代码依赖会增加代码理解和维护的难度。传统的依靠开发人员经验进行代码依赖检查的方式效率较低,对于代码依赖的自动化检查已经成为大型软件项目研发的常见手段。
软件开发过程传统上主要基于开发人员的经验进行。为了改进开发效率,需要引入数据驱动的方式,首要任务是充分利用开发过程中产生的各种数据,包括代码依赖数据,运用可视化分析的方法,结合人类视觉和计算机结构化信息处理的优势,使用人机交互的方式从数据中得出结论。
现代软件项目代码量的膨胀使得代码间的依赖关系日趋复杂,传统的依靠开发人员经验进行代码依赖检查的方式效率不仅低,分析结果还有不一定准确。使用可视化的代码依赖分析方法充分利用软件项目开发过程中产生的代码依赖数据,自动化地分析数据,运用可视化分析的方法,展示可视化的图形。对代码依赖分析有助于降低不必要和不合理的依赖,加以适时的重构,可以维护软件架构的稳定性,减少程序错误,提高开发效率和降低维护成本。
发明内容
本发明旨在提出一种Web前端代码依赖关系可视化方法,该方法利用分析项目代码得到包含代码信息及引用关系的原始数据,对其增强得到强化数据,再将强化数据映射到可视化模型上,最后使用ECharts进行渲染得到代码依赖关系的可视化图形,可视化图形可支持人机交互,可通过筛选原始数据,重新得到新渲染的可视化图形。
本发明的一种Web前端代码依赖关系可视化方法,该方法包括以下步骤:
步骤1、基于ECMAScript6的模块化语法获取原始数据包括项目关联的所有代码文件以及相关信息、依赖关系的数据,即得到此文件的引用信息;
步骤2、对原始数据进行增强,进而得到强化数据,即计算depth、deepen、depth_range、max_size、max_nums_as_source等信息从项目目录中筛选并且去除不相关文件的无效数据,depth表示文件的相对根目录的深度,由文件信息对象的id即文件的相对目录计算得到;deepen表示文件是否被同级的其他文件引用;depth_range表示每层目录中的文件总数;max_size表示所有文件中的文件大小的最大值;max_nums_as_source表示所有文件中文件引用数量的最大值;
步骤3、由强化数据映射到可视化模型;每个文件表示按被引次数表示为不同灰度、不同大小的圆圈;可视化模型显示为同心圆结构,同一级目录下的文件根据id按字典序均匀分布在同一个圆上,第一级目录为半径最小的圆,随半径增大依次为第二级、第三级等目录;在同一级目录中,如果某文件是被同级的其他文件引用,它将被向外移动到本目录和下一级目录之间的位置;模型建立过程如下:
(1)对大小规模不一的文件进行归一化处理,建立文件的半径模型,公式如下:
其中,r表示归一化的半径,file_size表示文件的大小,max_size表示最大的文件的大小。半径与文件的大小成正比关系;
(2)对文件引用数量进行归一化处理,建立文件的颜色模型,表达式如下:
其中,c表示归一化的引用数量,file_nums_as_source表示文件的引用数量,max_nums_as_source表示所有文件中引用数量的最大值;
(3)计算文件所在坐标:首先计算文件在极坐标系中的位置(ρ,θ),公式如下:
其中,m,t,w,b为用于调试显示效果的超参数;n表示代码文件在其所在层级目录中的顺序号;
获得极坐标(ρ,θ)后,再将极坐标转换成直角坐标(x,y),转换公式如下:
步骤4、借助ECharts工具渲染依赖关系的可视化图形;
步骤5、通过正则表达式参与对原始数据的筛选,渲染出一幅新的仅针对特定的文件的依赖关系的可视化图形。
与现有技术相比,原本需要人工检查才能分析得到的依赖关系,本发明提出的一种Web前端代码依赖关系可视化方法可以自动化地分析并渲染成可视化的图形,有助于减少不必要的依赖,优化代码结构。
附图说明
图1为本发明的一种Web前端代码依赖关系可视化方法流程图;
图2为本发明的实例示意图;
图3为实例的整体依赖关系可视化结果示意图;
图4为实例的引用数量最多的代码文件可视化结果示意图;
图5为实例的某类代码文档引用情况可视化结果示意图;
图6为实例的某类代码文档被引用情况可视化结果示意图。
具体实施方式
下面结合附图和实施例对本发明技术方案进行详细描述。
如图1所示,为本发明的一种Web前端代码依赖关系可视化方法流程图。该流程具体包括以下步骤
步骤1、获取原始数据:基于ECMAScript6的模块化语法得到项目关联的所有代码文件以及相关信息,依赖关系的数据也源于项目代码文件,具体地,首先读取相应JavaScript文件,去除代码中的注释,然后使用正则表达式匹配,提取出导入语句的部分,即可得到此文件的引用信息,以及文件的名称、大小、位置等信息;
步骤2、对原始数据进行增强,进而得到强化数据:根据需要计算depth、deepen、depth_range、max_size、max_nums_as_source等信息从项目目录中筛选并且去除不相关文件的无效数据,depth表示文件的相对根目录的深度,由文件信息对象的id即文件的相对目录计算得到;deepen表示文件是否被同级的其他文件引用;depth_range表示每层目录中的文件总数;max_size表示所有文件中的文件大小的最大值;max_nums_as_source表示所有文件中文件引用数量的最大值;
步骤3、由强化数据映射到可视化模型。如图2所示,为可视化实例示意图。图中,每个文件表示按被引次数表示为不同灰度、不同大小的圆圈。可视化模型显示为同心圆结构,同一级目录下的文件根据id按字典序均匀分布在同一个圆上,第一级目录为半径最小的圆,随半径增大依次为第二级、第三级等目录。在同一级目录中,如果某文件是被同级的其他文件引用,它将被向外移动到本目录和下一级目录之间的位置。模型建立过程如下:
(1)对大小规模不一的文件进行归一化处理,建立文件的半径模型,公式如下:
其中,r表示归一化的半径,file_size表示文件的大小,max_size表示最大的文件的大小。半径与文件的大小成正比关系。计算半径是归一化的半径,其值范围在0到1之间,为防止某些小文件的半径过小,无法分辨,实验中统一将小于0.1的值设置为0.1,归一化的半径需要放大合适的倍数才可正常显示,实验中放大的倍数为55。
(2)对文件引用数量进行归一化处理,建立文件的颜色模型,表达式如下:
其中,c表示归一化的引用数量,file_nums_as_source表示文件的引用数量,max_nums_as_source表示所有文件中引用数量的最大值。颜色与文件引用数量成正比,设计引用数量多的用深色(红色)表示,引用数量少的用浅色(绿色)表示。
上述的颜色表示利用HSL色彩模式自动实现。HSL色彩模式是一种常见的颜色标准,是通过对色相(H)、饱和度(S)、亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的。色相H从0到120表示了从红到绿的颜色变化,饱和度S取100%表示纯色,亮度L取50%表示亮度适中,所以使用HSL色彩模式表示颜色的公式为
H=120*(1-c)
S=100%
L=50%
(3)计算文件所在坐标。同心圆模型非常适合使用极坐标系,但实际渲染需要直角坐标,所以首先计算文件在极坐标系中的位置(ρ,θ),再将极坐标转换成直角坐标。ρ随着目录深度的增加而增大,同时deepen为1的值要比deepen为0的大,具体值由下述公式确定:
其中,m,t,w,b为用于调试显示效果的超参数,n表示代码文件在其所在层级目录中的顺序号。根据实验中调试取得最优值。经反复调试,实验最终采取的参数为:m=1.5,t=0.3,w=100,b=40,此时可以达到最佳的显示效果。
同一级目录下的文件从0°到360°平均分布,由depth_range计算每层中每个文件可占的角度θ大小。
获得极坐标(ρ,θ)后,使用以下公式转换成直角坐标(x,y):
步骤4、借助ECharts工具渲染图表;
步骤5、人机交互。在可视化图形渲染完成之后,还需要实现交互性功能以便于可视分析。由于在实际依赖代码可视化分析的时候节点往往非常密集,高亮鼠标覆盖的节点是交互性的基本要求,此外还需要实现仅对特定的文件进行依赖关系分析,通过正则表达式参与对原始数据的筛选,即可渲染出一幅新的仅针对特定的文件的依赖关系可视化图形。
上述流程中,原始数据即步骤1中的原始数据。步骤1到步骤4所用的原始数据包含所有代码文件,其中文件的唯一标识(即id)由文件路径与文件名表示(其数据类型为字符串)。正则表达式是一种描述字符串匹配模式的表达式,可以用来检查一个字符串是否匹配给定的表达式(在一些流行的编程语言如python、JavaScript中均有实现正则表达式的功能)。步骤5中所用的正则表达式根据需要编写而成,然后依次与所有代码文件的唯一标识进行匹配,筛选结果是与正则表达式匹配的代码文件,或是不含与正则表达式匹配的代码文件,总之,筛选结果是原始数据的子集。然后筛选结果继续步骤2至步骤4。
如图3所示,为实例的整体依赖关系可视化结果示意图。选用含有约350个代码文档的前端项目进行可视化分析,可以看出所有文件的引用关系、大小、颜色均直观的展示在图上。所有文件大小清晰可见,且由内向外、分层逐级展示出来。
如图4所示,为实例的引用数量最多的代码文件可视化结果示意图。选择图3中显示为深色(红色)的文件得到的可视化关系图,可以清楚的看到红色文件是引用文件数量最多的文件。
如图5所示,为实例的某类代码文档引用情况可视化结果示意图。如图6所示,为实例的某类代码文档被引用情况可视化结果示意图。分别是针对某一类文件分析的引用和被引用的关系,可以看出文件的引用关系十分清晰的展现出来。原本需要人工检查才能分析得到的依赖关系,本发明提出的方法可以自动化的分析并渲染成可视化的图形,有助于减少不必要的依赖,优化代码结构。

Claims (1)

1.一种Web前端代码依赖关系可视化方法,其特征在于,该方法包括以下步骤:
步骤1、基于ECMAScript6的模块化语法获取原始数据包括项目关联的所有代码文件以及相关信息、依赖关系的数据,即得到此文件的引用信息;
步骤2、对原始数据进行增强,进而得到强化数据,即计算depth、deepen、depth_range、max_size、max_nums_as_source信息从项目目录中筛选并且去除不相关文件的无效数据,depth表示文件的相对根目录的深度,由文件信息对象的id即文件的相对目录计算得到;deepen表示文件是否被同级的其他文件引用;depth_range表示每层目录中的文件总数;max_size表示所有文件中的文件大小的最大值;max_nums_as_source表示所有文件中文件引用数量的最大值;
步骤3、由强化数据映射到可视化模型;每个文件表示按被引次数表示为不同灰度、不同大小的圆圈;可视化模型显示为同心圆结构,同一级目录下的文件根据id按字典序均匀分布在同一个圆上,第一级目录为半径最小的圆,随半径增大依次为第二级、第三级目录;在同一级目录中,如果某文件是被同级的其他文件引用,它将被向外移动到本目录和下一级目录之间的位置;模型建立过程如下:
(1)对大小规模不一的文件进行归一化处理,建立文件的半径模型,公式如下:
其中,r表示归一化的半径,file_size表示文件的大小,max_size表示最大的文件的大小,半径与文件的大小成正比关系;
(2)对文件引用数量进行归一化处理,建立文件的颜色模型,表达式如下:
其中,c表示归一化的引用数量,file_nums_as_source表示文件的引用数量,max_nums_as_source表示所有文件中引用数量的最大值;
(3)计算文件所在坐标:首先计算文件在极坐标系中的位置(ρ,θ),公式如下:
其中,m,t,w,b为用于调试显示效果的超参数,n表示代码文件在其所在层级目录中的顺序号;
获得极坐标(ρ,θ)后,再将极坐标转换成直角坐标(x,y),转换公式如下:
步骤4、借助ECharts工具渲染依赖关系的可视化图形;
步骤5、通过正则表达式参与对原始数据的筛选,渲染出一幅新的仅针对特定的文件的依赖关系的可视化图形。
CN201911137711.2A 2019-11-19 2019-11-19 一种Web前端代码依赖关系可视化方法 Active CN110908710B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911137711.2A CN110908710B (zh) 2019-11-19 2019-11-19 一种Web前端代码依赖关系可视化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911137711.2A CN110908710B (zh) 2019-11-19 2019-11-19 一种Web前端代码依赖关系可视化方法

Publications (2)

Publication Number Publication Date
CN110908710A CN110908710A (zh) 2020-03-24
CN110908710B true CN110908710B (zh) 2023-08-29

Family

ID=69818067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911137711.2A Active CN110908710B (zh) 2019-11-19 2019-11-19 一种Web前端代码依赖关系可视化方法

Country Status (1)

Country Link
CN (1) CN110908710B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111610999A (zh) * 2020-05-26 2020-09-01 北京字节跳动网络技术有限公司 一种检查方法、装置、计算机设备及存储介质
CN112181370B (zh) * 2020-09-17 2023-02-28 武汉联影医疗科技有限公司 数据交互关系的生成方法、计算机设备和存储介质
CN112133146B (zh) * 2020-10-14 2022-05-27 天津之以科技有限公司 一种算法练习代码执行可视化系统
CN113448553B (zh) * 2021-06-23 2023-11-03 南京大学 一种c语言项目依赖信息管理和可视化的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052515A (en) * 1997-06-27 2000-04-18 Sun Microsystems, Inc. System and process for providing visualization of program code internal state in an object-oriented programming language
CN101650651A (zh) * 2009-09-17 2010-02-17 浙江大学 一种源代码级别程序结构的可视化方法
CN102385505A (zh) * 2010-08-30 2012-03-21 北京理工大学 针对面向对象程序设计语言源代码的软件可视化方法
CN109885295A (zh) * 2019-03-20 2019-06-14 山东浪潮云信息技术有限公司 一种Gradle配置文件的图形化展示方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052515A (en) * 1997-06-27 2000-04-18 Sun Microsystems, Inc. System and process for providing visualization of program code internal state in an object-oriented programming language
CN101650651A (zh) * 2009-09-17 2010-02-17 浙江大学 一种源代码级别程序结构的可视化方法
CN102385505A (zh) * 2010-08-30 2012-03-21 北京理工大学 针对面向对象程序设计语言源代码的软件可视化方法
CN109885295A (zh) * 2019-03-20 2019-06-14 山东浪潮云信息技术有限公司 一种Gradle配置文件的图形化展示方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
代码依赖可视化系统;刘旭;计算机系统应用;第28卷(第5期);7 *

Also Published As

Publication number Publication date
CN110908710A (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
CN110908710B (zh) 一种Web前端代码依赖关系可视化方法
CN111563509B (zh) 一种基于tesseract的变电站端子排识别方法及系统
CN109446221B (zh) 一种基于语义分析的交互式数据探查方法
CN111666824B (zh) 移动机器人的基于颜色属性和机器学习的指示灯识别方法
US8635598B2 (en) Automatic code decoration for code review
CN110599131A (zh) 一种电气图纸识别与审查方法、装置及可读存储介质
CN107203500A (zh) 基于递归替换展开回溯的excel公式面向对象语言的自动转换方法
CN104461906B (zh) 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法
CN115311130A (zh) 一种多风格中国书法文字图像风格迁移方法、系统及终端
CN105260300A (zh) 基于会计准则通用分类标准应用平台的业务测试方法
CN113139511B (zh) 水土保持生产建设项目扰动图斑提取方法、介质和设备
US20110142336A1 (en) Similar shader search apparatus and method using image feature extraction
CN111767004B (zh) 基于逆波兰算法的数字示波器数学运算处理方法
CN110989991B (zh) 检测应用程序中源代码克隆开源软件的方法及系统
CN115995092A (zh) 图纸文字信息提取方法、装置、设备
CN111240978A (zh) 数据报告生成与分析方法
CN110930393A (zh) 一种基于机器视觉的芯片料管计数方法、装置及系统
CN116012456A (zh) 一种电力巡检机器人视觉定位方法
Le Riche Identifying Building Footprints in Historic Map Data using OpenCV and PostGIS
CN104794236B (zh) 一种地图制图规则构建及其结构化组织方法与系统
CN104794495B (zh) 一种基于直线统计特征的大幅面遥感影像区域分类方法
CN111177866B (zh) 一种基于smooth t和matlab的涡轮特性处理方法
CN112766245A (zh) 基于pdf格式文件的可视化仪器采集方法及系统
Yan et al. Yolo-pd: Abnormal signal detection in gas pipelines based on improved yolov7
CN107563973A (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