CN105867930B - 一种函数调用关系的显示方法、装置及终端 - Google Patents

一种函数调用关系的显示方法、装置及终端 Download PDF

Info

Publication number
CN105867930B
CN105867930B CN201610206728.9A CN201610206728A CN105867930B CN 105867930 B CN105867930 B CN 105867930B CN 201610206728 A CN201610206728 A CN 201610206728A CN 105867930 B CN105867930 B CN 105867930B
Authority
CN
China
Prior art keywords
function
file
business
location information
objective
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
CN201610206728.9A
Other languages
English (en)
Other versions
CN105867930A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610206728.9A priority Critical patent/CN105867930B/zh
Publication of CN105867930A publication Critical patent/CN105867930A/zh
Application granted granted Critical
Publication of CN105867930B publication Critical patent/CN105867930B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Abstract

本发明实施例涉及计算机领域,尤其涉及一种函数调用关系的显示方法、装置及终端,用于更加直观的显示函数的调用关系,从而减少开发人员查看函数调用关系的时间,进而提高工作效率。本发明实施例中,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。如此,可通过图形化界面更加直观的显示函数调用关系,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。

Description

一种函数调用关系的显示方法、装置及终端
技术领域
本发明实施例涉及计算机领域,尤其涉及一种函数调用关系的显示方法、装置及终端。
背景技术
软件产品的生命周期主要包括调研、设计、开发、测试、发行、运营和变现等阶段。通常开发者在开发阶段借助集成开发环境(Integrated Development Environment,简称IDE)工具完成软件的编码调试工作。在软件开发的过程中,编辑函数调用是构建软件系统必不可少的组成部分,所有的软件实体都是由函数间的层层调用所组成。因此,在开发过程和调试过程中,确定函数调用关系显得尤为重要。
现有技术中,开发人员需要查看函数调用关系时,通常通过IDE提供的全局搜索或调用层级视图(Call Hierachy)命令来调出函数调用关系,函数调用关系以列表形式出现。图1示例性示出了现有技术中函数调用关系视图的结构示意图。如图1所示,函数调用关系视图包括表头101,目标函数的名称以及路径,与目标函数具有调用关系的函数的名称和路径,如图1所示,以列表形式列出了目标函数onlayout102以及目标函数onlayout路径103,还列出了与onlayout具有调用关系的函数showlog104及函数showlog路径105。开发者通过如图1所示的列表像素的函数调用关系视图可以查看函数调用关系。
上述方案中,将与目标函数具有调用关系的函数均用列表的形式呈现,不能直观的显示出各个函数之间的调用关系,需要花费开发者大量的时间去查看列表形式的函数调用关系。
综上,亟需一种函数调用关系的显示方法、装置及终端,用于更加直观的显示函数的调用关系,从而减少开发人员查看函数调用关系的时间,进而提高工作效率。
发明内容
本发明实施例提供一种函数调用关系的显示方法、装置及终端,用于更加直观的显示函数的调用关系,从而减少开发人员查看函数调用关系的时间,进而提高工作效率。
本发明实施例提供一种函数调用关系的显示方法,包括:
获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息;
根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。
可见,本发明实施例通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
可选地,根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息,包括:
根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;
针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
本发明实施例中,采用了更加合理的程序文件的划分方式,即将程序文件按业务功能进行划分,进而在图形化界面中用一个图形表示该业务功能的标识对应的业务功能,如此,开发人员可更加直观的查看每个业务功能中的函数之间的调用关系。
可选地,针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能,包括:
根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;
针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
本发明实施例中,通过力布局算法优化用于表示每个业务功能的图形在图形化界面上的位置,可从力学角度上更加合理的实现用于表示每个业务功能的图形在图形化界面上的布局,从而使图形化界面上所显示的图形更加美观清楚,进一步提升开发人员查看函数调用关系的效率。
可选地,将该函数对应显示在用于表示该函数对应的业务功能的图形上,包括:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
本发明实施例中,将每个业务功能所包括的文件的数量,以及每个文件的大小均表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能包括的文件的数量以及文件的大小,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
可选地,根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段,包括:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上,包括:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
本发明实施例中,将每个业务功能所包括的文件的次序表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能包括的文件的数量和文件的大小,以及文件的次序,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
可选地,根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上,包括:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
本发明实施例中,将每个业务功能所包括的每个文件中包括的函数的数量和每个函数的大小表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能所包括的每个文件中包括的函数的数量和每个函数的大小,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
可选地,根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段,包括:
以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;
其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上,包括:
根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
本发明实施例中,将每个业务功能所包括的每个文件中包括的函数的次序表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能所包括的每个文件中包括的函数的数量和每个函数的大小,以及函数的次序,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
可选地,表示业务功能的图形为圆形、椭圆形或多边形。如此,可通过这些图形的边界或者内部这些图形的覆盖面积简单且清楚的表示出业务功能所对应的函数,从而使开发人员更加快速直观的从图形化界面中查看函数调用关系,进而提升程序的开发效率。
可选地,根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系,包括:
在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。如此,可清晰的通过连线表示出函数之间的调用关系和被调用关系,从而使开发人员更加直观的得到函数之间的调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。如此,无需文字的帮助,仅仅通过常用的形状类的区别,即可使开发人员了解函数之间的调用和被调用的关系,从而提升了开发人员查看函数调用关系的效率,进而提高了程序的开发效率。
可选地,为了使两个函数之间的连线更加清晰简洁,且使连线从数学的角度来看更加合理和美观,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
本发明实施例中,无需文字辅助,仅仅以连线即可标识出函数之间的调用次数或异常路径,可更加直观且清楚的为开发人员提供额外的辅助信息,以便开发人员更快的抉择出下一步的执行计划,或者更快的抉择出针对异常路径的解决方案,从而提升程序的开发效率。
可选地,用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。如此,可更加完整的显示函数的相关信息,从而可使开发人员与该函数的编写人员取得联系,从而进一步加快程序开发进程,或者更快的找到解决异常路径的方案。
可选地,用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
由于当开发人员将操作焦点放置于函数标识上时,才以悬浮框形式显示该函数对应的函数编写人员的信息的联系方式,因此,不会因为在图形化界面上显示过多的内容而使整个界面不清楚,另外,可更加完整的显示函数的相关信息,从而可使开发人员与该函数的编写人员取得联系,从而进一步加快程序开发进程,或者更快的找到解决异常路径的方案。进一步,可选地,在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求,如此,开发人员可快速的与该函数的编写人员建立联系,从而加快程序的开发。
可选地,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息之前,还包括;
接收查看目标函数的调用关系的查询命令,根据查询命令获取目标函数的标识;或者获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识。一方面,可满足用户经常需要查看函数调用关系的需求,另一方面,可将报错信息中包括的函数的调用关系进行图形化表示,从而可更加直观的使开发人员了解报错信息中的内容,进而更加快速的找到解决方案,从而提升程序开发进程。
可选地,与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。如此,本发明实施例中可通过图形化界面展示一级或多级函数调用关系,从而更加完整的展现与目标函数相关联的所有函数之间的关系,从而可使开发人员得到该目标函数相关的更加完整的信息,进而提高程序开发效率。
基于相同构思,本发明实施例还提供一种函数调用关系的显示装置,包括:
获取单元,用于获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息;
处理单元,用于根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。
可见,本发明实施例通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
可选地,处理单元,在根据至少一个函数的位置信息和目标函数的位置信息在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息时,用于:
根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;
针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
可选地,处理单元,在针对至少一个业务功能的标识中的每个业务功能的标识生成一个图形表示该业务功能的标识对应的业务功能时,用于:
根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;
针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
可选地,处理单元,在将该函数对应显示在用于表示该函数对应的业务功能的图形上时,用于:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
可选地,处理单元,在根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段时,用于:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
可选地,处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
可选地,处理单元,在根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段时,用于:
以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;
其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上时,用于:
根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
可选地,表示业务功能的图形为圆形、椭圆形或多边形。
可选地,处理单元,在根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系时,用于:
在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;
其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者
具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。
可选地,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或
连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
可选地,处理单元,还用于:
在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。
可选地,处理单元,还用于:
在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;
在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;
在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
可选地,获取单元,还用于:
接收查看目标函数的调用关系的查询命令,根据查询命令获取目标函数的标识;或者
获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识。
可选地,与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:
直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。
基于相同构思,本发明实施例还提供一种用于显示函数调用关系的终端,终端包括存储器和处理器:
存储器,用于存储程序和指令;
处理器,用于通过调用存储器中存储的程序和指令,执行下列过程:
用于获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系;
其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息。
可见,本发明实施例通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
可选地,处理器,在根据至少一个函数的位置信息和目标函数的位置信息在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息时,用于:
根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;
针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
可选地,处理器,在针对至少一个业务功能的标识中的每个业务功能的标识生成一个图形表示该业务功能的标识对应的业务功能时,用于:
根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;
针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
可选地,处理器,在将该函数对应显示在用于表示该函数对应的业务功能的图形上时,用于:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
可选地,处理器,在根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段时,用于:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
处理器,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
可选地,处理器,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
可选地,处理器,在根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段时,用于:
以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;
其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
处理器,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上时,用于:
根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
可选地,表示业务功能的图形为圆形、椭圆形或多边形。
可选地,处理器,在根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系时,用于:
在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;
其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者
具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。
可选地,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或
连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
可选地,处理器,还用于:
在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。
可选地,处理器,还用于:
在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;
在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;
在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
可选地,处理器,还用于:
通过收发单元接收查看目标函数的调用关系的查询命令,根据查询命令获取目标函数的标识;或者
通过收发单元获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识。
可选地,与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:
直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。
本发明实施例中,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息;根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。如此,可通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1为现有技术中函数调用关系视图的结构示意图;
图2为本发明实施例适用的一种系统架构示意图;
图3为本发明实施例提供的一种函数调用关系的显示方法的流程示意图;
图3a为本发明实施例提供的一种图形化界面上业务功能随机排布的示意图;
图3b为对图3a中的v1的位置进行优化的示意图;
图3c为对图3a中的所有节点的位置进行优化的示意图;
图3d为本发明实施例提供的一种业务功能的结构示意图;
图3e为本发明实施例提供的通过三次贝塞尔曲线的函数方程确定连线的示意图;
图3f为本发明实施例提供的在一个业务功能内绘制连线的示意图;
图3g为本发明实施例提供的一种在业务功能之间连线的示意图;
图3h为本发明实施例提供的一种图形化界面显示函数调用关系的示意图;
图3i为图3h中函数对应的函数编写人员的信息的示意图;
图3j为图3i中与函数编写人员建立通讯的示意图;
图3k为本发明实施例提供的一种函数调用关系的显示装置的结构示意图;
图4为本发明实施例提供的一种函数调用关系的显示装置的结构示意图;
图5为本发明实施例提供的一种用于显示函数调用关系的终端的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图2示例性示出了本发明实施例适用的一种系统架构示意图,如图2所示,本发明实施例适用的系统架构包括终端201、代码地图服务器205和数据服务器204,代码地图服务器205可为代码地图云服务202或代码地图插件服务器203。开发人员通过终端201进行代码编辑调试,并通过终端201向代码地图服务器205发送命令。代码地图服务器205响应开发人员的命令,并将结果返回并呈现在终端201上,以使开发人员在终端201上进行下一步的操作。代码地图服务器205通过分析代码文件,将分析得到的结果存储在数据服务器204,并在接收到命令时读取数据服务器204中的数据集。
举个例子,比如开发人员通过终端201发送查询目标函数的调用关系的命令,代码地图服务器205接收到查询目标函数的调用关系的命令后,读取数据服务器204中的数据集,得到查询结果,并将查询结果返回给终端201,终端201在图形化界面上显示查询结果,即终端201在图形化界面上显示目标函数的调用关系,以使开发人员查看该函数调用关系之后执行下一步的操作。
本发明实施例适用于开发人员使用IDE、代码编辑器等编程工具进行程序开发过程中的代码书写、调试等环节。本发明实施例可应用于所有基于代码函数编辑的编辑器、编辑环境和工具中,以便辅助开发人员快速、智能完成编码工作。
本发明实施例的函数调用关系的显示方法可通过终端来执行,终端可为具有数据处理能力,能够显示图形化界面的终端,比如计算机、智能手机和平板电脑等。
图3示例性示出了本发明实施例提供的一种函数调用关系的显示方法的流程示意图。
基于上述内容,如图3所示,本发明实施例提供一种函数调用关系的显示方法,包括:
步骤301,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息;
步骤302,根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。
本发明实施例中可通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。本发明实施例中的开发人员为查看函数调用关系的开发人员。
可选地,与目标函数具有调用关系具体是指调用目标函数或被目标函数调用。与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。间接调用目标函数的函数具体是指通过调用了其它函数而调用目标函数的函数,间接被目标函数所调用的函数具体是指目标函数通过调用其它函数而调用了的函数。可见,本发明实施例中可图形化的展示与目标函数具有多级调用关系的函数与目标函数之间的调用关系,举个例子,比如函数A调用目标函数,函数B调用了函数A,函数C调用了函数B,此时函数B和函数C与目标函数之间均为间接调用关系。函数A与目标函数之间是直接调用关系。如此,本发明实施例中可通过图形化界面展示一级或多级函数调用关系,从而更加完整的展现与目标函数相关联的所有函数之间的关系,从而可使开发人员得到该目标函数相关的更加完整的信息,进而提高程序开发效率。
本发明实施例中,上述步骤301之前,首先确定目标函数,确定目标函数的方式有多种。可选地,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息之前,接收查看目标函数的调用关系的查询命令,根据查询命令获取目标函数的标识。具体实施中,在开发过程中,开发人员通常需要频繁的查看函数调用关系以确定不同函数的功能、调用场景、调用时机从而加快开发过程,此时,开发人员将自己需要查看函数关系的函数确定为目标函数,终端为开发人员显示该目标函数的函数调用关系,从而加快开发人员的开发过程。一方面,可满足用户经常需要查看函数调用关系的需求,另一方面,可将报错信息中包括的函数的调用关系进行图形化表示,从而可更加直观的使开发人员了解报错信息中的内容,进而更加快速的找到解决方案,从而提升程序开发进程。
另外一种方式为,获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息之前,获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识。具体实施中,在程序的调试过程中,终端发现程序中出现错误时,会反馈给开发人员一个报错信息,报错信息中通常会包括出现异常的函数的位置和函数调用关系,开发人员需要根据报错信息分析出现异常原因,从而得出解决方案,本发明实施例中终端将报错信息中出现异常的函数确定为目标函数,进而显示目标函数的函数调用关系,从而使开发人员可更加直观的了解报错信息中出现错误的函数的函数调用关系,进而更快的确定出解决方案。
通常一个程序是由一个程序文件组成的,一个程序文件下包括一个或多个文件,每个文件中还可包括一个或多个文件,程序文件是由大量的函数组成的。在上述步骤301中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息,具体是指目标函数的位置信息为目标函数的路径,也就是说可在目标函数的位置信息所指向的位置找到该目标函数。至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息,具体是指一个函数的位置信息为该函数的路径,即在该函数的位置信息所指向的位置可找到该函数。
本发明实施例中获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息的方式有多种。举个例子,比如可使代码地图服务器监测开发人员所开发的程序,并将程序文件中函数之间的调用关系保存至数据库,监测开发者在开发过程或调试过程中对函数的创建、修改、删除等操作,并记录修改之后的函数名称、调用参数、创建者、函数调用位置、被该函数调用的函数信息等等一切程序文件的修改信息,并将修改后的程序文件对应的新的函数之间的调用关系保存至数据库,当确定了目标函数之后,可从数据库中的查询与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息。
可选地,根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息,包括:
根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
本发明实施例中,一个应用对应一个程序文件,本发明实施例中针对一个程序文件为例进行描述。一个程序文件有一个或多个业务功能组成。可选地,一个业务功能也可称为一个story,一个业务功能对应实现该业务功能的程序段,程序段中包括一个或多个文件,每个文件中包括一个或多个函数,举个例子,比如微信对应的程序文件是一个较大的程序文件,微信对应的一个业务功能“支付”在程序文件中所对应的程序段可划分为一个业务功能,即“支付”业务功能对应的程序段可实现微信的“支付”业务功能。程序文件中的程序段所对应的业务功能可在开发阶段定义,也可在查询到与目标函数具有调用关系的至少一个函数和目标函数的位置信息和至少一个函数的位置信息之后,再划分函数所对应的业务功能。
本发明实施例中,采用了更加合理的程序文件的划分方式,即将程序文件按业务功能进行划分,进而在图形化界面中用一个图形表示该业务功能的标识对应的业务功能,如此,开发人员可更加直观的查看每个业务功能中的函数之间的调用关系。
具体来说,开发人员根据至少一个函数的位置信息和目标函数的位置信息,按照业务功能或文件将至少一个函数和目标函数划分业务功能。每个业务功能包括该业务功能下的所有函数。
至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数。举例来说,比如指示一个函数为五个函数,加上目标函数一共六个函数,该六个函数可能分别属于六个业务功能,也可能分别属于四个业务功能,比如其中三个函数为同一个业务功能中的函数,其余三个函数分别属于三个业务功能中。
针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能。具体来说,比如在图形化界面上,生成一个图形表示一个业务功能。可选地,表示业务功能的图形为圆形、椭圆形或多边形。多边形比如为三角形、四边形、五边形和六边形等等。如此,可通过这些图形的边界或者内部这些图形的覆盖面积简单且清楚的表示出业务功能所对应的函数,从而使开发人员更加快速直观的从图形化界面中查看函数调用关系,进而提升程序的开发效率。
一种可能的实现方式为,确定出与目标函数具有调用关系的至少一个函数和目标函数共对应五个业务功能,在图形化界面上生成五个用于分别表示五个业务功能的图形。另一种可选地的实施方式为,根据力布局算法,在图形化界面的有限的空间内,合理的分配五个业务功能的位置,从而使图形化界面上的五个业务功能的位置排布更加美观、简洁和清晰,从而为开发人员提供更优的图形来表示函数之间的调用关系。
可选地,针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能,包括:
根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;
针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
本发明实施例中,通过力布局算法优化用于表示每个业务功能的图形在图形化界面上的位置,可从力学角度上更加合理的实现用于表示每个业务功能的图形在图形化界面上的布局,从而使图形化界面上所显示的图形更加美观清楚,进一步提升开发人员查看函数调用关系的效率。
本发明实施例中,图形化界面为一个有边界的界面,比如图形化界面为一个10厘米乘10厘米的正方形区域。在图形化界面所限定的区域内,根据力布局算法优化各个业务功能的位置。力布局算法遵循美学原则:在限定的现实空间内,有连接关系的业务功能应该相互靠近,且业务功能间应维持一基准距离且均匀分布。且力布局算法将每个业务功能模拟为原子间的力场来计算业务功能间的位置关系,通过考虑原子间引力和斥力的相互作用来计算业务功能的动态平衡状态,从而确定每个业务功能的中心在图形化界面上的位置。举个例子,比如每个业务功能为一个圆形,则根据力布局算法确定出的为每个业务功能的圆心的位置,若每个业务功能为一个正方形,则根据力布局算法确定出的为每个业务功能的正方形的正中心的位置。
力布局算法的模型的迭代计算过程主要分为三个部分:
第一,计算业务功能间相互的排斥力;第二,计算图形化界面中有连接关系的业务功能之间相互的吸引力;第三,计算吸引力和排斥力的合力所引起的每个业务功能的位移。
图3a示例性示出了本发明实施例提供的一种图形化界面上业务功能随机排布的示意图,如图3a所示,共有8个业务功能的中心的位置,下面称业务功能的中心的位置为节点,即giant8个节点分别为v1、v2、v3、v4、v5、v6、v7和v8,该8个节点在图形化界面所限定的区域范围内随机分布,如图3a所示。
如图3a所示,各个节点之间的连线表示与目标函数具有调用关系的至少一个函数和目标函数中的各个函数在业务功能之间的调用关系,即v7对应的业务功能中的函数与v6对应的业务功能中的函数具有调用关系,举例来说,假设目标函数在v6中,则v7对应的业务功能中的与目标函数有调用关系的函数与v6对应的业务功能中的目标函数具有调用关系。类似的,图3a中,v6对应的业务功能中的函数与v5对应的业务功能中的函数具有调用关系,v5对应的业务功能中的函数与v4对应的业务功能中的函数具有调用关系,v4对应的业务功能中的函数与v1对应的业务功能中的函数具有调用关系,v1对应的业务功能中的函数与v2对应的业务功能中的函数具有调用关系,v1对应的业务功能中的函数与v3对应的业务功能中的函数具有调用关系,v1对应的业务功能中的函数与v8对应的业务功能中的函数具有调用关系。
图3b示例性示出了对图3a中的v1的位置进行优化的示意图,如图3b所示,计算v1所受到的排斥力和吸引力,之后计算v1所受到的排斥力和吸引力的合力所引起的v1的位移。具体来说,v1节点所受的排斥力Fr为节点v1同v2、v3、v4、v5、v6、v7和v8中的每个节点之间的排斥力的总和;节点v1所受的吸引力Fa为与v1相连的节点v2、v3、v4和v8中的每个节点之间的吸引力的总和;通过计算排斥力Fr和吸引力Fa的合力,得到节点v1产生的位置偏移量disp,从而得到v1的新的位置坐标v1’。如图3b所示,经计算,v1从原来的位置应移动至v1`的位置。本发明实施例中节点移动后的新位置不会超出图形化界面所限定的区域范围。类似的,计算v2、v3、v4、v5、v6、v7和v8中的每个节点的位置偏移量。
图3c示例性示出了对图3a中的所有节点的位置进行优化的示意图,如图3c所示,经过力布局算法的计算,图3a中的8个节点的最优的位置分布如图3a所示,根据力布局算法迭代结束,各个节点达到平衡状态,此时各个节点中的每个节点所受到的合力的作用接近于0,每个节点所受到的合力所引起的位移小于位移阈值,位移阈值接近于0。
上述基于图3a所描述的排斥力Fr、吸引力Fa和位置偏移disp的计算过程和公式可参照以下力布局算法的描述:
假设图形化界面为高度为H,宽度为W的显示区域,针对与目标函数有调用关系的至少一个函数和目标函数的所有函数所对应的所有业务功能,每个业务功能的中心位置为一个节点,针对图形化界面上的所有stoty的所有节点,每个节点包括两个布局参数,分别为该节点的位置pos和该节点因合力所产生的位置偏移量disp。
力布局算法模型基本定义如下:
图形化界面的显示区域面积通过公式1计算:
area=W*H……公式(1)
在公式(1)中,W为图形化界面为高度;H为图形化界面为宽度;area为图形化界面的显示区域面积。
各个节点之间的理想距离如公式(2)所示:
在公式(2)中,|v|为图形化界面节点的总个数,k为各个节点之间的理想距离;area为图形化界面的显示区域面积。
业务功能节点间的距离如公式(3):
在公式(3)中,u和v分别为图形化界面上的任两个节点;dist(u,v)为u和v之间的距离;u.posx为u在图形化界面上的x轴坐标,u.posy为u在图形化界面上的y轴坐标;v.posx为v在图形化界面上的x轴坐标,v.posy为v在图形化界面上的y轴坐标;图形化界面上的x轴和y轴为两个相互垂直的坐标轴。
节点之间吸引力根据公式(4)计算:
fα(u,v)=(dist(u,v))2/k……公式(4)
在公式(4)中,u和v分别为图形化界面上的任两个节点;dist(u,v)为u和v之间的距离;k为各个节点之间的理想距离;fα(u,v)为u和v之间的吸引力。
节点之间排斥力根据公式(4)计算:
fr(u,v)=k2/dist(u,v)……公式(4)
在公式(4)中,u和v分别为图形化界面上的任两个节点;dist(u,v)为u和v之间的距离;k为各个节点之间的理想距离;fr(u,v)为u和v之间的排斥力。
本发明实施例提供一种可选地力布局算法的伪代码,如下:
通过上述内容的论述,本发明实施例中可优化在图形化界面上的各个业务功能的中心的位置,进一步,将每个业务功能对应的函数对应显示在用于表示该函数对应的业务功能的封闭式图形上有多种方式,比如在业务功能上确定一个位置用于表示该函数。本发明实施例中提供另一种可选地实施方式,如下:
将该函数对应显示在用于表示该函数对应的业务功能的封闭式图形上,包括:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
本发明实施例中,将每个业务功能所包括的文件的数量,以及每个文件的大小均表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能包括的文件的数量以及文件的大小,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
具体来说,每个业务功能包括一个或多个文件,具体是指,每个业务功能对应的程序段中包括一个或多个文件。每个文件中包括多个函数,每个文件的大小可相同也可不同,比如一个文件中对应程序段较长,即对应函数数量较多,则该文件则较大;相应的,一个文件中对应程序段较短,即对应函数数量较少,则该文件则较小。如此,则可通过标识业务功能的图形表示出该业务功能中包括的文件的数量,以及每个文件的大小。举个例子,比如一个业务功能中共包括三个文件,分别为第一文件、第二文件和第三文件,则将该函数对应的业务功能的封闭式图形的边界分为三段,比如第一文件的大小为20,第二文件的大小为30,第三文件的大小为50,此时比如业务功能的封闭式图形的边界为一个圆环,则该圆环的10分之2的弧度表示第一文件,该圆环的10分之3的弧度表示第二文件,该圆环的10分之5的弧度表示第三文件,再比如,该业务功能中对应的函数位于第三文件中,则将该函数标识于用于表示第三文件的10分之5的弧度的部分。该业务功能中对应的函数为与目标函数有调用关系的函数和目标函数中的函数。
再比如,业务功能的封闭式图形的边界为一个圆环,设定一个文件的大小为A时,A对应的弧度长度为a,因此,若确定出一个业务功能中包括多少个文件,则也可确定出该业务功能的圆环的周长。举例来说,设定文件大小为10时,对应弧度长为1厘米,若一个业务功能的所有文件的大小为100,则该业务功能的周长为10厘米。
可选地,根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段,包括:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上,包括:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
本发明实施例中,将每个业务功能所包括的文件的次序表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能包括的文件的数量和文件的大小,以及文件的次序,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
具体来说,一个业务功能的封闭式图形的边界可以表示该业务功能中包括的所有文件,通过上述方式,还可通过一个业务功能的封闭式图形的边界表示出该业务功能中包括的文件之间的顺序,比如该业务功能对应的程序段依次包括第一文件、第二文件和第三文件,则预设图形化界面上的所有业务功能的起始点均为钟表盘上的0点,预设方向为顺时针方向,则从起始点开始,沿着顺时针方向依次排布第一文件、第二文件和第三文件。
可选地,根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上,包括:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
本发明实施例中,将每个业务功能所包括的每个文件中包括的函数的数量和每个函数的大小表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能所包括的每个文件中包括的函数的数量和每个函数的大小,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
具体来说,每个业务功能包括一个或多个文件,具体是指该业务功能对应的程序段包括一个或多个文件。每个文件中包括多个函数,每个文件中包括的函数的数量可相同也可不同。如此,则可通过标识业务功能的图形表示出该业务功能中的每个文件中包括的函数的数量,从而更加完整的为开发人员显示目标函数以及与目标函数有调用关系的函数所处环境的状况。举个例子,比如一个业务功能的一段弧BC用于表示该业务功能中第三文件,第三文件包括50个函数,该业务功能对应的函数位于该第三文件中,则将弧BC分割为50段,之后将该50段中的一段用于表示该函数。该业务功能中对应的函数为与目标函数有调用关系的函数和目标函数中的函数。
可选地,根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段,包括:
以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;
其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上,包括:
根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
本发明实施例中,将每个业务功能所包括的每个文件中包括的函数的次序表现在图形化界面上,如此,可使开发人员在查看函数调用关系的同时,可直观的看到函数所在的业务功能所包括的每个文件中包括的函数的数量和每个函数的大小,以及函数的次序,从而为开发人员下一步所执行的动作提供更多的辅助信息,进而提高程序开发效率。
具体来说,一个业务功能的封闭式图形的边界可以表示该业务功能中包括的所有文件,以及每个文件中包括的所有函数,通过上述方式,还可通过一个业务功能的封闭式图形的边界表示出该业务功能中的每个文件包括的所有函数之间的顺序,比如该业务功能的封闭式图形为圆,该业务功能的一段弧BC用于表示该业务功能中第三文件,该业务功能对应的第三文件的程序段依次包括50个函数,预设方向为顺时针方向,则沿着顺时针方向,从弧BC的起始位置为起始,按照50个函数的顺序依次排布该50个函数。比如该业务功能对应的函数位于第10个函数,此时弧BC的起始位置为起始,沿顺时针方向的第10个函数即为该业务功能对应的函数。起始位置为沿着顺时针方向在弧BC上首先遇到的一端。该业务功能中对应的函数为与目标函数有调用关系的函数和目标函数中的函数。
通过下面的示例详细介绍根据每个业务功能中文件的数量和每个文件的大小,以及每个文件的排序,以及每个文件中包括的函数的数量和函数的排序绘制业务功能对应的函数的方法。
图3d示例性示出了本发明实施例提供的一种业务功能的结构示意图。如图3d所示,业务功能为圆形,业务功能对应的函数为函数d,该业务功能中对应的函数为与目标函数有调用关系的函数和目标函数中的函数。该业务功能中共包括三个文件,分别为第一文件3401、第二文件3402和第三文件3403,则预设图形化界面上的业务功能的起始点3404均为钟表盘上的0点,预设方向3405为顺时针方向,第一文件中包括函数的数量为20,第二文件中包括函数的数量为30,第三文件中包括函数的数量为50,函数d3406位于第三文件中的第10个函数。本发明实施例中,文件的大小与文件中包括的函数的数量成正比,因此此示例中直接用文件中包括的函数的数量标识该文件的大小。假设预设的一个业务功能中包括的总的函数的数量为10时,对应该业务功能的周长为1,此时该业务功能的所有函数的数量为100,则该业务功能的周长为10。根据圆的周长公式推导出该业务功能对应的圆的半径R的值。
如图3d所示,从圆的0点开始,沿顺时针方向依次排布第一文件、第二文件和第三文件,第一文件占该圆的总周长的10分之2,第二文件占该圆的总周长的10分之3,第三文件占该圆的总周长的10分之5。该第三文件对应的弧长平均分为50段,其中以起始位置3407起始,沿预设方向,即沿顺时针方向的第10段弧即表示函数d3406。
本发明实施例中,可选地,一个业务功能中的一个函数所占的弧长根据公式(6)计算:
avarage_rad=2π/N……公式 (6)
在公式(6)中,π为常数,为3.14;N为该业务功能中包括的所有函数的总数量;avarage_rad表示一个函数所占的弧长。
本发明实施例中,可选地,一个业务功能中的一个文件所占的弧长根据公式(7)计算:
β=avarage_rad*M……公式 (7)
在公式(7)中,avarage_rad表示一个函数所占的弧长,M表示该文件中包括的函数的数量,β表示该文件所占的弧长。
本发明实施例中,以几何形状来表示当前程序文件中的业务功能,可选地,一个业务功能包括程序文件中的一个业务功能的模块对应的程序段,一种可选地方式为使用圆形来表示一个业务功能;在用以表示业务功能的几何形状中的中段或者中等大小的区域表示文件,之后使用中段中段的小段来表示函数,或者使用中等大小的区域中的一小块区域表示文件中函数。用以表示函数的小段或者区域的大小根据该业务功能中函数的总数量来决定。
本发明实施例中,通过上述方法在图形化界面上用图形表示目标函数的位置信息和至少一个函数的位置信息,之后用连线表示目标函数和至少一个函数之间的调用关系。用连线表示目标函数和至少一个函数之间的调用关系的方式有很多。可选地,根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系,包括:
在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。如此,可清晰的通过连线表示出函数之间的调用关系和被调用关系,从而使开发人员更加直观的得到函数之间的调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。如此,无需文字的帮助,仅仅通过常用的形状类的区别,即可使开发人员了解函数之间的调用和被调用的关系,从而提升了开发人员查看函数调用关系的效率,进而提高了程序的开发效率。
举个例子,比如两类外形不同的连线为颜色不同的两类连线,红线和蓝线,红线所连接的函数表示与目标函数之间是调用关系,蓝线所连接的函数表示与目标函数之间是被调用关系。再比如,两类外形不同的连线为粗细不同的两类连线,粗线和细线,粗线所连接的函数表示与目标函数之间是调用关系,细线所连接的函数表示与目标函数之间是被调用关系。再比如,可通过直线、虚线、折线等等连线连接函数。
可选地,为了使两个函数之间的连线更加清晰简洁,且使连线从数学的角度来看更加合理和美观,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线。举个例子,比如使用颜色区分调用次数,红色表示被调用次数为10次至20次的范围内,蓝色表示被调用次数为1次至10次的范围内,此时若一个函数被目标函数调用了15次,则将目标函数与该函数之间的连线设置为红色,若一个函数被目标函数调用了5次,则将目标函数与该函数之间的连线设置为蓝色。可选地,使用粗线和细线来表示函数的调用次数,如果一条连线所连接的两个函数之间的调用次数越多,或者被调用次数越多,则该连线越粗;如果一条连线所连接的两个函数之间的调用次数越少,或者被调用次数越少,则该连线越细。可选地,本发明实施例中函数调用或被调用也可称为函数的引用,若连线所连接的函数的引用次数越多,则该连线越粗。
可选地,连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。举个例子,比如函数调用关系中某两个函数之间的调用路径出现错误,可将该两个函数之间的连线用高亮表示,以便提示开发人员此处路径出现错误,以便使开发人员尽快找到解决方案。可选地,可通过调试程序确定出异常路径,或者根据报错信息确定出报错信息中包括的异常路径。
本发明实施例中,无需文字辅助,仅仅以连线即可标识出函数之间的调用次数或异常路径,可更加直观且清楚的为开发人员提供额外的辅助信息,以便开发人员更快的抉择出下一步的执行计划,或者更快的抉择出针对异常路径的解决方案,从而提升程序的开发效率。
图3e示例性示出了本发明实施例提供的通过三次贝塞尔曲线的函数方程确定连线的示意图。
三次贝塞尔曲线的函数方程如公式(8)所示:
B(t)=P0(1-t)3+3P1t(1-t)2+3P2t2(1-t)+P3t3……公式 (8)
在公式(8)中,P0为连线的起点,P3为连线的目标点,目标点也称终点;即P0和P3分别为具有调用或被调用关系的两个函数的位置,两个函数为与目标函数具有调用关系的至少一个函数和目标函数中的函数;P1、P2为连线的控制点,用于定义该连线的方向;t的取值范围为[0,1];B(t)为连线上的点。
如图3e所示,公式(8)中的P0、P3、P1、P2如图3e所示。通过上述内容可知,根据给定四点,通过三次贝塞尔曲线即可唯一确定一条平滑的连线。
在本发明实施例中中,通过力布局算法确定业务功能的圆心O的位置坐标,之后确定该业务功能对应的函数在该业务功能的圆周上的位置。该业务功能对应的极坐标方程如公式(9)所示:
P.x=O.x+cosθ*R
P.y=O.y+sinθ*R……公式 (9)
在公式(9)中,θ表示业务功能中各个函数在圆周上所占的弧度;O.x表示该业务功能的圆心O在x轴上的坐标值,O.y表示该业务功能的圆心O在y轴上的坐标值;R为该业务功能的半径;P.x表示该业务功能对应函数P的中心在x轴上的坐标值,P.y表示该业务功能对应函数P的中心在y轴上的坐标值;x轴与y轴为两条相互垂直的坐标轴;该业务功能对应的函数P为与目标函数具有调用关系的至少一个函数和目标函数中的函数;函数P的一段弧长为从函数P的中心起始向该圆周的两端延伸的一端弧。
图3f示例性示出了本发明实施例提供的在一个业务功能内绘制连线的示意图,如图3f所示,P0为目标函数的中心的位置,P3为与目标函数有调用关系的函数的中心的位置,与目标函数有调用关系可为调用目标函数或被目标函数调用,P1为P0与圆心O的连线上的一点,P2为P3与圆心O的连线上的一点。连线上的某一点可通过公式(10)确定:
P.x=P1.x+λ*(P1.x-P2.x)
P.y=P1.y+λ*(P1.y-P2.y) λ∈(-1,0)∪(0,1)……公式 (10)
在公式(10)中,P1.x表示P1在x轴上的坐标值,P1.y表示P1在y轴上的坐标值;P2.x表示P2在x轴上的坐标值,P2.y表示P2在y轴上的坐标值;P.x表示连线上的一点在x轴上的坐标值,P.y表示连线上的一点在y轴上的坐标值;P1.x、P1.y、P2.x、P2.y为已知点的坐标;λ为控制因子,决定连线的弯曲的角度和方向,λ的取值范围为(-1,0)和(0,1),可以通过图3f中P0和P3的相对位置动态确定λ的值。
根据上述论述可知,由P1、P2、P3和P4可唯一确定一条连线。
与上述过程类似,用于绘制两个业务功能之间的连线时也通过三次贝塞尔曲线的方程来确定一条曲线。图3g示例性示出了本发明实施例提供的一种在业务功能之间连线的示意图,如图3g所示,P0为目标函数的中心的位置,P3为与目标函数有调用关系的函数的中心的位置,与目标函数有调用关系可为调用目标函数或被目标函数调用,P1为P0与P0所在的业务功能的圆心O1的连线上的一点,P2为P3与P3所在的业务功能的圆心O2的连线上的一点。其余计算过程与上述内容类似,在此不再赘述,图3g中示例性示出了P0和P3之间的连线3701的示意图。图3g中P3对应的业务功能中还包括函数P5,P5与圆心O2的连线上的一点为P6,连线3702用于连接P0和P5。
可选地,用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。如此,可更加完整的显示函数的相关信息,从而可使开发人员与该函数的编写人员取得联系,从而进一步加快程序开发进程,或者更快的找到解决异常路径的方案。
可选地,用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;用连线表示目标函数和至少一个函数之间的调用关系之后,还包括:在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
由于当开发人员将操作焦点放置于函数标识上时,才以悬浮框形式显示该函数对应的函数编写人员的信息的联系方式,因此,不会因为在图形化界面上显示过多的内容而使整个界面不清楚,另外,可更加完整的显示函数的相关信息,从而可使开发人员与该函数的编写人员取得联系,从而进一步加快程序开发进程,或者更快的找到解决异常路径的方案。可选地,函数对应的函数编写人员的信息可包括编写人员的真实姓名、昵称、联系方式、编写该函数的代码的日期、与该函数编写人员关联的人员的姓名和联系方式等等与该函数相关的信息,从而可使开发人员尽快找到该函数的函数编写人员,进而更加完整清楚的了解该函数对应代码段的编写情况。
可选地,在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。举个例子,比如悬浮框内该函数对应的函数编写人员的信息包括一个电话号码,此时当捕捉到操作焦点位于该电话号码上时,比如开发人员将鼠标移动该电话号码上,或者开发人员点击该电话号码,此时终端通过联系方式向该函数对应的函数编写人员发起建立通讯的请求,即终端拨打该电话号码。再举个例子,比如比如悬浮框内该函数对应的函数编写人员的信息包括一个即时聊天软件的标识,此时当捕捉到操作焦点位于该即时聊天软件的标识上时,终端直接打开该即时聊天软件,并打开与该即时聊天软件的标识的对话窗口。如此,开发人员可快速的与该函数的编写人员建立联系,从而加快程序的开发。
图3h示例性示出了本发明实施例提供的一种图形化界面显示函数调用关系的示意图。如图3h所示,目标函数3705位于业务功能3701的边界上,与目标函数具有调用关系的函数分别为函数3706、函数3707、函数3708,以及函数3713和函数3712。函数3706位于业务功能3702的边界上,函数3707位于业务功能3703的边界上,函数3708、函数3713和函数3712位于业务功能3704的边界上。目标函数3705调用函数3708,函数3708调用函数3713和函数3712;目标函数3705被函数3706调用,函数3706被函数3707调用。目标函数3705与函数3706之间的连线3709的箭头朝向目标函数3705,表示目标函数3705被函数3706调用;函数3706与函数3707之间的连线3710的箭头朝向目标函数3706,表示函数3706被函数3707调用;目标函数3705与函数3708之间的连线3711的箭头朝向函数3708,表示目标函数3705调用函数3708;函数3708与函数3713之间的连线3715的箭头朝向函数3713,表示函数3708调用函数3713;函数3708与函数3712之间的连线3714的箭头朝向函数3712,表示函数3708调用函数3712。
假设图3h中出现异常的路径为:函数3707调用函数3706的路径,以及函数3706调用目标函数3705的路径。此时将连线3709和连线3710加粗,或者高亮,或者用其它颜色标识出,以便使开发人员看到该异常路径。
图3i示例性示出了显示图3h中函数对应的函数编写人员的信息的示意图。如图3i所示,函数都包括一个函数标识,比如目标函数3705的函数标识3801。若开发人员将鼠标移动至某个函数的函数标识上,比如开发人员将鼠标移动至目标函数3705的函数标识3801上,此时即终端捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上,此时图形化界面上以悬浮框形式显示目标函数3705对应的函数编写人员的信息3802。函数编写人员的信息3802中包括函数编写人员的名称和联系方式。可选地,当终端捕捉到操作焦点位于函数编写人员的信息的联系方式时,终端发起与该联系方式的通信,具体来说,终端拨打该电话号码。图3j示例性示出了图3i中与函数编写人员建立通讯的示意图。如图3j所示,当开发人员用鼠标点击函数编写人员的信息3802中联系电话139123456789时,终端自动发起对139123456789的呼叫,呼叫界面3803如图3j所示。
本发明实施例中,可选地,当开发人员点击或者将鼠标移动至某条连线时,与该连线所连接的两个函数具有调用关系的所有连线都可高亮显示,如此,开发人员可完整清楚的看到任意函数的完整的调用路径。可选地,开发人员双击任一个函数的标识,可以打开代码编辑器并定位到该函数在程序文件中的位置。
可选地,当开发人员点击图形化界面上其它函数时,其它函数为图形化界面上所显示的所有业务功能中的函数中的除了目标函数和与目标函数具有调用关系的函数之外的函数,此时,终端将开发人员点击的其它函数作为新的目标函数,根据上述方法,重新在该图形化界面上生成图形化的该新的目标函数的调用关系。
图3k示例性示出了本发明实施例提供的一种函数调用关系的显示装置的结构示意图。如图3k所示,终端的处理流程从逻辑上可划分为三个层次,分别为用户界面层3909、业务逻辑层3910和基础服务层3911。用户界面层3909主要为开发人员提供使开发人员进行编辑的界面,且处理开发人员交互操作,并响应开发人员请求,进而为开发人员呈现图形化界面上的可视化结果;业务逻辑层3910主要用于提供各项业务规则处理以及业务逻辑实现;基础服务层3911主要用于资源数据的存储和访问。
具体实施中,用户界面层3909主要包括终端显示模块3901,终端显示模块3901用于处理开发人员的编辑操作,呈现图形化界面上的可视化结果,同开发人员进行交互。业务逻辑层3910包括代码地图可视化模块3902、文件监测模块3903、代码分析模块3904、函数规则提取模块3905、函数规则持久化模块3906、开发人员沟通模块3908。代码地图可视化模块3902用于处理开发人员希望在图形化界面通过图形来表示函数调用关系的请求,包括通过图形来表示函数调用关系、呈现出现错误的调用路径、显示函数编写人员的信息等。文件监测模块3903用于监测程序文件的改变,包括程序文件的创建、修改、删除、移动等。代码分析模块3904用于分析处理程序文件信息,包括对程序文件中划分业务功能、函数调用和被调用关系分析、函数编写人员的信息的分析、报错信息的处理等。函数规则提取模块3905用于根据函数规则提取程序文件分析结果中的调用路径关系,包括业务功能关系提取、函数调用和被调用路径提取、函数编写人员的关联人员的信息的提取、报错信息中包括的异常路径的提取等。函数规则持久化模块3906用于提供函数规则数据持久化服务。开发人员沟通模块3908用于提供开发人员间的沟通服务。基础服务层3911包括数据库3907。数据库3907用于提供所有数据的访问和存储服务。
从上述内容可看出,本发明实施例中通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。且以图形表示出异常的调用路径,可使开发人员更加快速的确定出现问题的地方,从而更快的找出解决方案。第三,本发明实施例中可以方便开发人员快速的与函数编写人员建立通讯,从而加快沟通效率,以及函数修改的效率,进而提高程序开发进程。
图4示例性示出了本发明实施例提供的一种函数调用关系的显示装置的结构示意图。
基于相同构思,本发明实施例还提供一种函数调用关系的显示装置,用于执行上述方法流程,如图4所示,函数调用关系的显示装置400包括获取单元401和处理单元402:
获取单元401,用于获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息;
处理单元402,用于根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系。
可见,本发明实施例通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
可选地,处理单元402,在根据至少一个函数的位置信息和目标函数的位置信息在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息时,用于:根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
可选地,处理单元402,在针对至少一个业务功能的标识中的每个业务功能的标识生成一个图形表示该业务功能的标识对应的业务功能时,用于:根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
可选地,处理单元402,在将该函数对应显示在用于表示该函数对应的业务功能的图形上时,用于:确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
可选地,处理单元402,在根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段时,用于:确定该函数对应的业务功能的封闭式图形的边界的起始点;以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
处理单元402,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
可选地,处理单元402,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
可选地,处理单元402,在根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段时,用于:以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
处理单元402,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上时,用于:
根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
可选地,表示业务功能的图形为圆形、椭圆形或多边形。可选地,处理单元402,在根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系时,用于:在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。
可选地,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
可选地,处理单元402,还用于:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。
可选地,处理单元402,还用于:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
可选地,获取单元401,还用于:接收查看目标函数的调用关系的查询命令,根据查询命令获取目标函数的标识;或者获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识。
可选地,与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。
从上述内容可看出,本发明实施例中通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。且以图形表示出异常的调用路径,可使开发人员更加快速的确定出现问题的地方,从而更快的找出解决方案。第三,本发明实施例中可以方便开发人员快速的与函数编写人员建立通讯,从而加快沟通效率,以及函数修改的效率,进而提高程序开发进程。
图5示例性示出了本发明实施例提供的一种用于显示函数调用关系的终端的结构示意图。
基于相同构思,本发明实施例还提供一种用于显示函数调用关系的终端,用于执行上述方法流程,该终端500包括处理器501、存储器502,可选地,还包括收发器503:
存储器502,用于存储程序和指令;
处理器501,用于通过调用存储器502中存储的程序和指令,执行下列过程:
用于获取与目标函数具有调用关系的至少一个函数,以及目标函数的位置信息和至少一个函数的位置信息;根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上,用图形表示目标函数的位置信息和至少一个函数的位置信息,用连线表示目标函数和至少一个函数之间的调用关系;其中,目标函数的位置信息为目标函数在程序文件中所位于的位置的信息;至少一个函数的位置信息为至少一个函数在程序文件中所位于的位置的信息。
可见,本发明实施例通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。
本发明实施例提供一种可选地实施方式,通过收发器503接收查看目标函数的调用关系的查询命令;之后通过处理器501调用存储器502中存储的程序和指令根据查询命令获取目标函数的标识,并执行上述方法流程。
本发明实施例提供另一种可选地实施方式,通过收发器503获取包括目标函数的标识的报错信息,之后通过处理器501通过调用存储器502中存储的程序和指令,获取包括目标函数的标识的报错信息,根据报错信息确定出目标函数的标识,并执行上述方法流程。
可选地,处理器501,在根据至少一个函数的位置信息和目标函数的位置信息在图形化界面上用图形表示出目标函数的位置信息和至少一个函数的位置信息时,用于:
根据至少一个函数的位置信息和目标函数的位置信息,确定出至少一个函数和目标函数中对应的至少一个业务功能的标识;其中,至少一个函数和目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;针对至少一个函数和目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
可选地,处理器501,在针对至少一个业务功能的标识中的每个业务功能的标识生成一个图形表示该业务功能的标识对应的业务功能时,用于:
根据力布局算法,确定至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在图形化界面上的位置;针对至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
可选地,处理器501,在将该函数对应显示在用于表示该函数对应的业务功能的图形上时,用于:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,M段中的每段对应每个文件中的一个文件;M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上。
可选地,处理器501,在根据文件数量M和每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段时,用于:
确定该函数对应的业务功能的封闭式图形的边界的起始点;以预设方向为方向,以起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;其中,M段中以起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
处理器501,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中的用于显示该函数所位于的文件对应的第j段上。
可选地,处理器501,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在M段中用于显示该函数所位于的文件对应的一段上时,用于:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,K段中的每段对应该函数所位于的文件中的一个函数,K段中的每段的长度与该段对应的函数的大小成正比;根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上。
可选地,处理器501,在根据函数的数量K和每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段时,用于:
以预设方向为方向,以M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所有函数中的次序,以及所有函数的数量K和所有函数中每个函数的大小,将M段中用于显示该函数所位于的文件对应的一段依据所有函数的次序依次分为K段;其中,K段中以起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
处理器501,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中用于显示该函数对应的一段上时,用于:根据该函数的位置信息,确定出该函数在所有函数中的次序q;q为大于等于1、且小于等于K的整数;在该函数对应的业务功能的封闭式图形上,将该函数显示在K段中的用于显示该函数对应的第q段上。
可选地,表示业务功能的图形为圆形、椭圆形或多边形。可选地,处理器501,在根据至少一个函数的位置信息和目标函数的位置信息,在图形化界面上用连线表示目标函数和至少一个函数之间的调用关系时,用于:
在图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;其中,具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
可选地,具有指向性的连线为带箭头的连线;带箭头的连线中箭头所指的函数为被调用函数;或者具有指向性的连线为两类外形不同的连线;两类外形不同的连线中的一类连线所连接的函数为调用目标函数的函数;两类外形不同的连线中的另一类连线所连接的函数为被目标函数调用的函数。
可选地,具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。可选地,连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
可选地,处理器501,还用于:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数编写人员的信息。
可选地,处理器501,还用于:在图形化界面上显示至少一个函数和目标函数中的每个函数对应的函数标识;在捕捉到操作焦点位于至少一个函数和目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过联系方式向该函数对应的函数编写人员发起建立通讯的请求。
可选地,与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:直接调用目标函数的函数、直接被目标函数所调用的函数、间接调用目标函数的函数、间接被目标函数所调用的函数。
其中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器代表的一个或多个处理器和存储器代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发器可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器负责管理总线架构和通常的处理,存储器可以存储处理器在执行操作时所使用的数据。
从上述内容可看出,本发明实施例中通过图形化界面更加直观的显示函数调用关系,相比现有技术中使用列表形式展现函数调用关系的方式,可减少开发人员查看函数调用关系的时间,进而提高开发人员的工作效率。且以图形表示出异常的调用路径,可使开发人员更加快速的确定出现问题的地方,从而更快的找出解决方案。第三,本发明实施例中可以方便开发人员快速的与函数编写人员建立通讯,从而加快沟通效率,以及函数修改的效率,进而提高程序开发进程。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (33)

1.一种函数调用关系的显示方法,其特征在于,包括:
获取与目标函数具有调用关系的至少一个函数,以及所述目标函数的位置信息和所述至少一个函数的位置信息;其中,所述目标函数的位置信息为所述目标函数在程序文件中所位于的位置的信息;所述至少一个函数的位置信息为所述至少一个函数在程序文件中所位于的位置的信息;
根据所述至少一个函数的位置信息和所述目标函数的位置信息,在图形化界面上,用图形表示所述目标函数的位置信息和所述至少一个函数的位置信息,用连线表示所述目标函数和所述至少一个函数之间的调用关系。
2.如权利要求1所述的方法,其特征在于,所述根据所述至少一个函数的位置信息和所述目标函数的位置信息,在图形化界面上用图形表示出所述目标函数的位置信息和所述至少一个函数的位置信息,包括:
根据所述至少一个函数的位置信息和所述目标函数的位置信息,确定出所述至少一个函数和所述目标函数中对应的至少一个业务功能的标识;其中,所述至少一个函数和所述目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对所述至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;
针对所述至少一个函数和所述目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
3.如权利要求2所述的方法,其特征在于,所述针对所述至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能,包括:
根据力布局算法,确定所述至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在所述图形化界面上的位置;
针对所述至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
4.如权利要求 2或3所述的方法,其特征在于,所述将该函数对应显示在用于表示该函数对应的业务功能的图形上,包括:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据所述文件数量M和所述每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,所述M段中的每段对应所述每个文件中的一个文件;所述M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上。
5.如权利要求4所述的方法,其特征在于,根据所述文件数量M和所述每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段,包括:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以所述起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及所述文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,所述M段中以所述起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
所述根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上,包括:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中的用于显示该函数所位于的文件对应的第j段上。
6.如权利要求4所述的方法,其特征在于,所述根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上,包括:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据所述函数的数量K和所述每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,所述K段中的每段对应该函数所位于的文件中的一个函数,所述K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中用于显示该函数对应的一段上。
7.如权利要求6所述的方法,其特征在于,根据所述函数的数量K和所述每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段,包括:
以预设方向为方向,以所述M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所述所有函数中的次序,以及所述所有函数的数量K和所述所有函数中每个函数的大小,将所述M段中用于显示该函数所位于的文件对应的一段依据所述所有函数的次序依次分为K段;
其中,所述K段中以所述起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
所述根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中用于显示该函数对应的一段上,包括:
根据该函数的位置信息,确定出该函数在所述所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中的用于显示该函数对应的第q段上。
8.如权利要求2或3所述的方法,其特征在于,表示业务功能的图形为圆形、椭圆形或多边形。
9.如权利要求1至3任一权利要求所述的方法,其特征在于,根据所述至少一个函数的位置信息和所述目标函数的位置信息,在图形化界面上用连线表示所述目标函数和所述至少一个函数之间的调用关系,包括:
在所述图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;
其中,所述具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
10.如权利要求9所述的方法,其特征在于,所述具有指向性的连线为带箭头的连线;所述带箭头的连线中箭头所指的函数为被调用函数;或者
所述具有指向性的连线为两类外形不同的连线;所述两类外形不同的连线中的一类连线所连接的函数为调用所述目标函数的函数;所述两类外形不同的连线中的另一类连线所连接的函数为被所述目标函数调用的函数。
11.如权利要求9所述的方法,其特征在于,所述具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
12.如权利要求1至3任一权利要求所述的方法,其特征在于,所述连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或
所述连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
13.如权利要求1至3任一权利要求所述的方法,其特征在于,用连线表示所述目标函数和所述至少一个函数之间的调用关系之后,还包括:
在所述图形化界面上显示所述至少一个函数和所述目标函数中的每个函数对应的函数编写人员的信息。
14.如权利要求1至3任一权利要求所述的方法,其特征在于,用连线表示所述目标函数和所述至少一个函数之间的调用关系之后,还包括:
在所述图形化界面上显示所述至少一个函数和所述目标函数中的每个函数对应的函数标识;
用连线表示所述目标函数和所述至少一个函数之间的调用关系之后,还包括:
在捕捉到操作焦点位于所述至少一个函数和所述目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;
在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过所述联系方式向该函数对应的函数编写人员发起建立通讯的请求。
15.如权利要求1至3任一权利要求所述的方法,其特征在于,所述获取与目标函数具有调用关系的至少一个函数,以及所述目标函数的位置信息和所述至少一个函数的位置信息之前,还包括;
接收查看所述目标函数的调用关系的查询命令,根据所述查询命令获取所述目标函数的标识;或者
获取包括所述目标函数的标识的报错信息,根据所述报错信息确定出所述目标函数的标识。
16.如权利要求1至3任一权利要求所述的方法,其特征在于,所述与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:
直接调用所述目标函数的函数、直接被所述目标函数所调用的函数、间接调用所述目标函数的函数、间接被所述目标函数所调用的函数。
17.一种函数调用关系的显示装置,其特征在于,包括:
获取单元,用于获取与目标函数具有调用关系的至少一个函数,以及所述目标函数的位置信息和所述至少一个函数的位置信息;其中,所述目标函数的位置信息为所述目标函数在程序文件中所位于的位置的信息;所述至少一个函数的位置信息为所述至少一个函数在程序文件中所位于的位置的信息;
处理单元,用于根据所述至少一个函数的位置信息和所述目标函数的位置信息,在图形化界面上,用图形表示所述目标函数的位置信息和所述至少一个函数的位置信息,用连线表示所述目标函数和所述至少一个函数之间的调用关系。
18.如权利要求17所述的装置,其特征在于,所述处理单元,在根据所述至少一个函数的位置信息和所述目标函数的位置信息在图形化界面上用图形表示出所述目标函数的位置信息和所述至少一个函数的位置信息时,用于:
根据所述至少一个函数的位置信息和所述目标函数的位置信息,确定出所述至少一个函数和所述目标函数中对应的至少一个业务功能的标识;其中,所述至少一个函数和所述目标函数中一个函数对应一个业务功能的标识,一个业务功能的标识对应多个函数;
针对所述至少一个业务功能的标识中的每个业务功能的标识,生成一个图形表示该业务功能的标识对应的业务功能;
针对所述至少一个函数和所述目标函数中的每个函数,将该函数对应显示在用于表示该函数对应的业务功能的图形上。
19.如权利要求18所述的装置,其特征在于,所述处理单元,在针对所述至少一个业务功能的标识中的每个业务功能的标识生成一个图形表示该业务功能的标识对应的业务功能时,用于:
根据力布局算法,确定所述至少一个业务功能的标识中的每个业务功能的标识对应的业务功能在所述图形化界面上的位置;
针对所述至少一个业务功能的标识中的每个业务功能的标识,在确定的该业务功能的标识对应的业务功能的位置上,生成一个封闭式图形表示该业务功能的标识对应的业务功能。
20.如权利要求 18或19所述的装置,其特征在于,所述处理单元,在将该函数对应显示在用于表示该函数对应的业务功能的图形上时,用于:
确定该函数对应的业务功能中包括的文件数量M,以及该函数对应的业务功能中包括的文件中每个文件的大小;
根据所述文件数量M和所述每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段;其中,所述M段中的每段对应所述每个文件中的一个文件;所述M段中的每段的长度与该段对应的文件的大小成正比,M为正整数;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上。
21.如权利要求20所述的装置,其特征在于,所述处理单元,在根据所述文件数量M和所述每个文件的大小,将该函数对应的业务功能的封闭式图形的边界分为M段时,用于:
确定该函数对应的业务功能的封闭式图形的边界的起始点;
以预设方向为方向,以所述起始点为起始,根据该函数对应的业务功能中包括的各文件的次序,以及所述文件数量M和每个文件大小,将该函数对应的业务功能的封闭式图形的边界依据各文件的次序依次分为M段;
其中,所述M段中以所述起始点为起始的第i段表示该函数对应的业务功能中的第i个文件;i为大于等于1、且小于等于M的整数;
所述处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上时,用于:
根据该函数的位置信息,确定出该函数所位于的文件在该函数对应的业务功能包括的所有文件中的次序j;j为大于等于1、且小于等于M的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中的用于显示该函数所位于的文件对应的第j段上。
22.如权利要求20所述的装置,其特征在于,所述处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述M段中用于显示该函数所位于的文件对应的一段上时,用于:
确定该函数所位于的文件中包括的函数的数量K,以及所有函数中每个函数的大小;
根据所述函数的数量K和所述每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段;其中,所述K段中的每段对应该函数所位于的文件中的一个函数,所述K段中的每段的长度与该段对应的函数的大小成正比;
根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中用于显示该函数对应的一段上。
23.如权利要求22所述的装置,其特征在于,所述处理单元,在根据所述函数的数量K和所述每个函数的大小,在该函数对应的业务功能的封闭式图形的边界上,将用于显示该函数所位于的文件对应的一段边界分为K段时,用于:
以预设方向为方向,以所述M段中用于显示该函数所位于的文件对应的一段的起始位置为起始,根据该函数在所述所有函数中的次序,以及所述所有函数的数量K和所述所有函数中每个函数的大小,将所述M段中用于显示该函数所位于的文件对应的一段依据所述所有函数的次序依次分为K段;
其中,所述K段中以所述起始位置为起始的第p段表示该函数所位于的文件中的第p个函数;p为大于等于1、且小于等于K的整数;
所述处理单元,在根据该函数的位置信息,在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中用于显示该函数对应的一段上时,用于:
根据该函数的位置信息,确定出该函数在所述所有函数中的次序q;q为大于等于1、且小于等于K的整数;
在该函数对应的业务功能的封闭式图形上,将该函数显示在所述K段中的用于显示该函数对应的第q段上。
24.如权利要求18或19所述的装置,其特征在于,表示业务功能的图形为圆形、椭圆形或多边形。
25.如权利要求17至19任一权利要求所述的装置,其特征在于,所述处理单元,在根据所述至少一个函数的位置信息和所述目标函数的位置信息,在图形化界面上用连线表示所述目标函数和所述至少一个函数之间的调用关系时,用于:
在所述图形化界面上,使用具有指向性的连线,将具有调用关系两个函数进行连接;
其中,所述具有指向性的连线能够表示出该连线所连接的两个函数之间的调用和被调用关系。
26.如权利要求25所述的装置,其特征在于,所述具有指向性的连线为带箭头的连线;所述带箭头的连线中箭头所指的函数为被调用函数;或者
所述具有指向性的连线为两类外形不同的连线;所述两类外形不同的连线中的一类连线所连接的函数为调用所述目标函数的函数;所述两类外形不同的连线中的另一类连线所连接的函数为被所述目标函数调用的函数。
27.如权利要求25所述的装置,其特征在于,所述具有指向性的连线为通过三次贝塞尔曲线的函数方程确定的曲线。
28.如权利要求17至19任一权利要求所述的装置,其特征在于,所述连线为能够表示出该连线所连接的函数之间的调用次数的连线;和/或
所述连线为能够表示出该连线所连接的函数之间的调用路径为异常路径的连线。
29.如权利要求17至19任一权利要求所述的装置,其特征在于,所述处理单元,还用于:
在所述图形化界面上显示所述至少一个函数和所述目标函数中的每个函数对应的函数编写人员的信息。
30.如权利要求17至19任一权利要求所述的装置,其特征在于,所述处理单元,还用于:
在所述图形化界面上显示所述至少一个函数和所述目标函数中的每个函数对应的函数标识;
在捕捉到操作焦点位于所述至少一个函数和所述目标函数中的一个函数标识上时,以悬浮框形式显示该函数对应的函数编写人员的信息;
在捕捉到操作焦点位于悬浮框内该函数对应的函数编写人员的信息中的联系方式时,通过所述联系方式向该函数对应的函数编写人员发起建立通讯的请求。
31.如权利要求17至19任一权利要求所述的装置,其特征在于,所述获取单元,还用于:
接收查看所述目标函数的调用关系的查询命令,根据所述查询命令获取所述目标函数的标识;或者
获取包括所述目标函数的标识的报错信息,根据所述报错信息确定出所述目标函数的标识。
32.如权利要求17至19任一权利要求所述的装置,其特征在于,所述与目标函数具有调用关系的至少一个函数包括以下内容中的任一项或任多项:
直接调用所述目标函数的函数、直接被所述目标函数所调用的函数、间接调用所述目标函数的函数、间接被所述目标函数所调用的函数。
33.一种用于显示函数调用关系的终端,其特征在于,所述终端包括存储器和处理器:
所述存储器,用于存储程序和指令;
所述处理器,用于通过调用所述存储器中存储的程序和指令,执行如权利要求1至16任一权利要求所述的方法。
CN201610206728.9A 2016-04-05 2016-04-05 一种函数调用关系的显示方法、装置及终端 Active CN105867930B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610206728.9A CN105867930B (zh) 2016-04-05 2016-04-05 一种函数调用关系的显示方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610206728.9A CN105867930B (zh) 2016-04-05 2016-04-05 一种函数调用关系的显示方法、装置及终端

Publications (2)

Publication Number Publication Date
CN105867930A CN105867930A (zh) 2016-08-17
CN105867930B true CN105867930B (zh) 2019-03-19

Family

ID=56627807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610206728.9A Active CN105867930B (zh) 2016-04-05 2016-04-05 一种函数调用关系的显示方法、装置及终端

Country Status (1)

Country Link
CN (1) CN105867930B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106598804A (zh) * 2016-11-29 2017-04-26 武汉斗鱼网络科技有限公司 异常处理方法及装置
CN106873875B (zh) * 2017-02-14 2020-07-31 广州神马移动信息科技有限公司 数据的图形化展示方法、装置及计算设备
CN107817986A (zh) * 2017-09-25 2018-03-20 北京奇艺世纪科技有限公司 一种软件结构生成方法、装置及电子设备
CN111078559B (zh) * 2019-12-18 2023-10-13 广州品唯软件有限公司 java代码中函数调用的提取方法、装置、介质及计算机设备
CN115509869B (zh) * 2022-08-26 2023-10-31 国科础石(重庆)软件有限公司 服务调用链数据可视化展示的方法、装置以及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100545807C (zh) * 2004-09-14 2009-09-30 微软公司 作用于任意几何路径的函数
CN102279738A (zh) * 2010-06-10 2011-12-14 微软公司 标识强连通分量的入口和出口的技术
CN103631573A (zh) * 2012-08-24 2014-03-12 中兴通讯股份有限公司 可迁移函数执行时间的获得方法及系统
CN104035772A (zh) * 2014-06-09 2014-09-10 中国科学院软件研究所 基于静态分析的源码多版本函数调用关系差异性标识方法
CN105224305A (zh) * 2014-07-01 2016-01-06 华为技术有限公司 函数调用路径编解码方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9471461B2 (en) * 2013-03-27 2016-10-18 Nec Corporation Guarding a monitoring scope and interpreting partial control flow context

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100545807C (zh) * 2004-09-14 2009-09-30 微软公司 作用于任意几何路径的函数
CN102279738A (zh) * 2010-06-10 2011-12-14 微软公司 标识强连通分量的入口和出口的技术
CN103631573A (zh) * 2012-08-24 2014-03-12 中兴通讯股份有限公司 可迁移函数执行时间的获得方法及系统
CN104035772A (zh) * 2014-06-09 2014-09-10 中国科学院软件研究所 基于静态分析的源码多版本函数调用关系差异性标识方法
CN105224305A (zh) * 2014-07-01 2016-01-06 华为技术有限公司 函数调用路径编解码方法、装置及系统

Also Published As

Publication number Publication date
CN105867930A (zh) 2016-08-17

Similar Documents

Publication Publication Date Title
CN105867930B (zh) 一种函数调用关系的显示方法、装置及终端
US8605092B2 (en) Method and apparatus of animation planning for a dynamic graph
CN107424069A (zh) 一种风控特征的生成方法、风险监控方法及设备
CN109831478A (zh) 基于规则及模型的分布式实时处理智能决策系统及方法
Morozov et al. Distributed contour trees
CN107193894A (zh) 数据处理方法、个体识别方法及相关装置
CN109669709A (zh) 一种区块链升级的数据迁移方法及数据迁移系统
CN105404507A (zh) 一种流程模板的构建方法及系统
CN102054217B (zh) 基于元模型的工具中的实体变形
CN109271561B (zh) 一种图谱信息检索方法及装置
CN109447635A (zh) 用于区块链的信息存储方法和装置
CN105808244A (zh) 一种基于工作流的动态数据可视化分析工具
CN111046237A (zh) 用户行为数据处理方法、装置、电子设备及可读介质
WO2023197864A1 (zh) 一种调用拓扑图生成方法及装置
CN109144969A (zh) 用于区块链网络系统的数据处理方法、装置和存储介质
CN112115276A (zh) 基于知识图谱的智能客服方法、装置、设备及存储介质
Hao et al. iTaskOffloading: intelligent task offloading for a cloud-edge collaborative system
CN110516120A (zh) 信息处理方法及装置、存储介质、电子装置
CN110389812A (zh) 用于管理虚拟机的方法、设备和计算机可读存储介质
CN109241151A (zh) 一种数据结构的转换方法、装置及电子设备
CN109271453A (zh) 一种数据库容量的确定方法和装置
CN106294530A (zh) 规则匹配的方法和系统
CN108280154A (zh) 一种地图标注信息展示方法、装置、终端及可读存储介质
US10089703B2 (en) Realtime land use rights management with object merges
CN103942675B (zh) 一种信息处理方法及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant