发明内容
本公开实施方式的目的在于提供一种代码查看方法、装置、电子设备和存储介质,能够查看基于Flutter开发的软件程序运行过程中的代码。
为解决上述技术问题,本公开的实施方式提供了一种代码查看方法,应用在跨平台移动用户界面UI框架Flutter下,软件程序的代码运行的过程中,其中,所述软件程序的代码采用Dart语言编写,所述方法包括:
通过虚拟机服务模块接收用户发送的代码查看指令,对所述代码查看指令进行解析,确定所述代码查看指令对应的待获取内容,将所述待获取内容发送给Dart虚拟机;
通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包以及所述代码包在所述软件程序中的代码位置,通过所述虚拟机服务模块将所述代码包以及所述代码包在所述程序中的代码位置发送给代码查看工具;
通过所述代码查看工具显示所述代码包中的代码以及所述代码包在所述软件程序中的代码位置。
可选的,所述通过所述代码查看工具显示所述代码包的代码内容以及所述代码包在所述程序中的代码位置之后,还包括:
通过所述代码查看工具接收所述用户对所述代码包中的代码进行修改获得的更新代码包;
通过所述代码查看工具将所述更新代码包发送给所述Dart虚拟机;
通过所述Dart虚拟机使用所述更新代码包对所述软件程序进行更新。
可选的,所述通过所述代码查看工具将所述更新代码包发送给所述Dart虚拟机包括:
通过所述代码查看工具将所述更新代码包发送给所述虚拟机服务模块;
通过所述虚拟机服务模块采用无状态并且轻量级的远程过程调用JSON-RPC通信协议将所述更新代码包发送给所述Dart虚拟机。
可选的,所述通过虚拟机服务模块接收用户发送的代码查看指令,对所述代码查看指令进行解析,确定所述代码查看指令对应的待获取内容,将所述待获取内容发送给Dart虚拟机之后,还包括:
通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包的相关信息,通过所述虚拟机服务模块将所述代码包的相关信息发送给所述代码查看工具,其中,所述代码包的相关信息包括以下任意一种或组合:代码的脚本、代码的类、代码的行号以及代码使用的参数;
通过所述代码查看工具显示所述代码包的相关信息。
本公开的实施方式还提供了一种代码查看装置,应用在跨平台移动用户界面UI框架Flutter下,软件程序的代码运行的过程中,其中,所述软件程序的代码采用Dart语言编写,所述装置包括:
第一处理模块,用于通过虚拟机服务模块接收用户发送的代码查看指令,对所述代码查看指令进行解析,确定所述代码查看指令对应的待获取内容,将所述待获取内容发送给Dart虚拟机;
第二处理模块,用于通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包以及所述代码包在所述软件程序中的代码位置,通过所述虚拟机服务模块将所述代码包以及所述代码包在所述程序中的代码位置发送给代码查看工具;
显示模块,用于通过所述代码查看工具显示所述代码包中的代码以及所述代码包在所述软件程序中的代码位置。
可选的,所述代码查看装置,还包括:
接收模块,用于通过所述代码查看工具接收所述用户对所述代码包中的代码进行修改获得的更新代码包;
发送模块,用于通过所述代码查看工具将所述更新代码包发送给所述Dart虚拟机;
更新模块,用于通过所述Dart虚拟机使用所述更新代码包对所述软件程序进行更新。
可选的,所述发送模块包括:
第一发送子模块,用于通过所述代码查看工具将所述更新代码包发送给所述虚拟机服务模块;
第二发送子模块,用于通过所述虚拟机服务模块采用无状态并且轻量级的远程过程调用JSON-RPC通信协议将所述更新代码包发送给所述Dart虚拟机。
可选的,所述第二处理模块,还用于通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包的相关信息,通过所述虚拟机服务模块将所述代码包的相关信息发送给所述代码查看工具,其中,所述代码包的相关信息包括以下任意一种或组合:代码的脚本、代码的类、代码的行号以及代码使用的参数;
所述显示模块,还用于通过所述代码查看工具向所述用户显示所述代码包的相关信息。
本公开的实施方式还提供了一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行以上所述的代码查看方法。
本公开的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以上所述的代码查看方法。
本公开实施方式相对于现有技术而言,在Flutter框架下,采用Dart语言编写的软件程序代码运行的过程中,可以通过虚拟机服务模块接收用户发送的代码查看指令确定待获取内容,通过Dart虚拟机根据待获取内容获取代码包以及代码包在软件程序中的代码位置,并通过代码查看工具向用户显示代码包中的代码以及代码包在软件程序中的代码位置,从而达到使用户能够查看基于Flutter开发的软件程序运行过程中的代码目的,解决了现有技术无法在软件程序运行的过程中查看代码的问题;本实施例提供的技术方案可以在程序运行的过程中,获取正在运行的代码包以及代码包在软件程序中的代码位置,使得本发明实施例提供的技术方案更适用于程序开发人员在开发测试中应用本发明实施例提供的技术方案进行软件代码的错误查看以及软件代码的调试,从而更方便软件开发人员进行软件开发,简化了软件开发难度,提高了软件开发的使用体验。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合附图对本公开的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本公开各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本公开的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
本公开的一个实施方式涉及一种代码查看方法,应用于跨平台移动用户界面UI框架Flutter下的软件程序中,其中,软件程序的代码采用Dart语言编写。具体的,代码查看方法可以通过插件的形式集成在基于Flutter框架开发的软件程序中。
如图1所示,在软件程序的代码运行的过程中,本实施方式提供的代码查看方法,可以包括:
步骤101,通过虚拟机服务模块接收用户发送的代码查看指令,对代码查看指令进行解析,确定代码查看指令对应的待获取内容,将待获取内容发送给Dart虚拟机。
具体的,步骤101可以先通过代码查看工具接收用户发送的代码查看指令,然后通过虚拟机服务模块从代码查看工具接收该代码查看指令。在本实施例中,代码查看工具具体可以为可视化的用户操作界面,通过人机交互形式接收用户输入的代码查看指令,此时代码查看工具接收到的代码查看指令为自然语言指令,虚拟机服务模块接收到该代码查看指令后,进行解析,生成程序可识别的待获取内容,并将该待获取内容发送给Dart虚拟机。
在本实施例中,虚拟机服务模块具体通过无状态并且轻量级的远程过程调用(JSON-RPC)通信协议将程序可识别的待获取内容发送给Dart虚拟机。
在本实施例中,待获取内容可以包括:软件程序正在运行的代码包以及该代码包在软件程序中的代码位置。此时,步骤101通过JSON-RPC通信协议将待获取内容发送给Dart虚拟机具体可以通过如下示例性的代码实现:
例如:当待获取内容为正在运行的代码包时,可以通过如下代码实现:
又如:当待获取内容为正在运行的代码包在程序中的代码位置时,可以通过如下代码实现:
综上所述,步骤101可以通过如下JSON-RPC通信协议范式将用户发送的代码查看指令解析生成待获取内容发送给Dart虚拟机:
步骤102,通过Dart虚拟机根据待获取内容,获取软件程序正在运行的代码包以及代码包在软件程序中的代码位置,通过虚拟机服务模块将代码包以及代码包在程序中的代码位置发送给代码查看工具。
在本实施例中,Dart虚拟机是提供给Flutter框架,用于软件程序运行的模块,Dart虚拟机可以进行任何跟软件程序运行相关的操作。由于Dart虚拟机可以进行任何跟软件程序运行相关的操作,使得步骤102接收到虚拟机服务模块发送的待获取内容后,可以通过Dart虚拟机获取待获取内容请求的软件程序正在运行的代码包以及代码包在软件程序中的代码位置。
在本实施例中,Dart虚拟机可以采用JSON-RPC通信协议将软件程序正在运行的代码包以及代码包在软件程序中的代码位置发送给虚拟机服务模块,也可以通过其他任意一种可实现的通信协议发送,此处不做赘述。虚拟机服务模块接收到Dart虚拟机发送的包含软件程序正在运行的代码包以及代码包在软件程序中的代码位置的消息后,进行解析,获取其中包含的软件程序正在运行的代码包以及代码包在软件程序中的代码位置,并将其发送给代码查看工具。
步骤103,通过代码查看工具显示代码包中的代码以及代码包在软件程序中的代码位置。
在本实施例中,代码查看工具具体可以通过人机交互界面向用户显示代码包中的代码以及代码包在软件程序中的代码位置,本实施例不对人机交互界面的具体表现形式进行限定,在实际的使用过程中,可以根据实际的使用需求,设计代码查看工具的人机交互界面,此处不做赘述。
可选的,在本实施例中,为了能够使用户查看到更多与代码相关的信息,如图2所示,步骤101之后,还可以包括:
步骤104,通过Dart虚拟机根据待获取内容,获取软件程序正在运行的代码包的相关信息,通过虚拟机服务模块将代码包的相关信息发送给代码查看工具,其中,代码包的相关信息包括以下任意一种或组合:代码的脚本、代码的类、代码的行号以及代码使用的参数。
在本实施例中,当代码包的相关信息包括代码的行号时,步骤104可以进一步确定代码包中当前正在运行的代码的行号,并将该当前正在运行的代码的行号发送给代码查看工具。具体地,可以预先在软件程序的每一行代码中设置标记,在软件程序的代码运行的过程中,通过Dart虚拟机获取当前运行的代码的标记,根据该标记将当前正在运行的代码的行号发送给代码查看工具。
步骤105,通过代码查看工具显示代码包的相关信息。
需要说明的是,在本实施例中,当代码包的相关信息包括代码的行号时,步骤105的具体实现方法是:代码查看工具在显示代码包中的代码时,在每一行代码的旁边(如代码的左侧)显示该行代码的行号。进一步地,为了使用户能够更方便地查看软件程序正在运行的代码,在本实施例中,显示代码的行号的过程中,可以将当前正在运行的代码的行号突出显示,例如:以高亮的形式突出显示。
在本实施例中,步骤104和105可以作为两个独立的步骤执行在步骤101之后的任意位置,例如:如图2所示,步骤104和105在步骤103之后执行;步骤104和105也可以分别合并在步骤102和103中执行,即步骤104合并在步骤102中执行,步骤105合并在步骤103中执行。
通过以上步骤104和105公开的技术方案,可以使用户获取更多软件程序运行过程中与代码相关的信息,并对其进行查看,从而更进一步方便了软件开发人员在软件开发过程中对软件代码的查看以及使用。
本公开实施方式相对于现有技术而言,在Flutter框架下,采用Dart语言编写的软件程序代码运行的过程中,可以通过虚拟机服务模块接收用户发送的代码查看指令确定待获取内容,通过Dart虚拟机根据待获取内容获取代码包以及代码包在软件程序中的代码位置,并通过代码查看工具向用户显示代码包中的代码以及代码包在软件程序中的代码位置,从而达到使用户能够查看基于Flutter开发的软件程序运行过程中的代码目的,解决了现有技术无法在软件程序运行的过程中查看代码的问题;本实施例提供的技术方案可以在程序运行的过程中,获取正在运行的代码包以及代码包在软件程序中的代码位置,使得本发明实施例提供的技术方案更适用于程序开发人员在开发测试中应用本发明实施例提供的技术方案进行软件代码的错误查看以及软件代码的调试,从而更方便软件开发人员进行软件开发,简化了软件开发难度,提高了软件开发的使用体验。
本公开的另一个实施方式涉及一种代码查看方法,该方法的具体实现步骤与图1所示的基本相同,其区别在于,如图3所示,步骤103之后,还可以包括:
步骤106,通过代码查看工具接收用户对代码包中的代码进行修改获得的更新代码包。
在本实施例中,用户对代码包中的代码进行修改可以包括对代码包中的代码内容进行修改,也可以包括对代码包中的代码位置进行修改等,本实施例不对代码包中的代码具体的修改对象进行限定,在实际的使用过程中,用户可以根据软件程序的开发需要对代码包中的代码进行修改,此处对每种情况进行一一赘述。
步骤107,通过代码查看工具将更新代码包发送给Dart虚拟机。
具体的,如图4所示,步骤107可以包括:
步骤401,通过代码查看工具将更新代码包发送给虚拟机服务模块。
步骤402,通过虚拟机服务模块采用JSON-RPC通信协议将更新代码包发送给Dart虚拟机。
以上步骤401和402可以通过虚拟机服务模块对代码查看工具发送的更新代码包进行解析,生成Dart虚拟机可识别的更新代码包。
步骤108,通过Dart虚拟机使用更新代码包对软件程序进行更新。
具体的,如果更新代码包更新的内容为代码,则步骤108通过Dart虚拟机将步骤102获取的代码包替换为更新代码包,实现对软件程序的更新;如果更新代码包更新的内容为代码的位置或者其他信息,则步骤108通过Dart虚拟机根据该更新代码包对正在运行的软件程序代码进行修改,实现对软件程序的更新。
本实施例提供的技术方案,在达到如图1所示的技术方案带来的有益效果基础上,用户可以通过代码查看工具对查看的代码包的相关内容,例如:代码或者代码位置等,进行修改,从而实现了在软件程序运行过程中实时修改软件代码的目的,进而更加方便软件程序开发人员及时对软件程序进行调整,使得软件开发效率更好,开发过程更加方便,进而提高了软件开发人员开发软件的使用体验。
本公开的一个实施方式涉及一种代码查看装置,用于跨平台移动用户界面UI框架Flutter下的软件程序中,其中,软件程序的代码采用Dart语言编写。具体的,代码查看装置可以通过插件的形式集成在基于Flutter框架开发的软件程序中。
如图5所示,在软件程序的代码运行的过程中,本实施方式提供的代码查看装置,可以包括:
第一处理模块501,用于通过虚拟机服务模块接收用户发送的代码查看指令,对所述代码查看指令进行解析,确定所述代码查看指令对应的待获取内容,将所述待获取内容发送给Dart虚拟机;
第二处理模块502,用于通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包以及所述代码包在所述软件程序中的代码位置,通过所述虚拟机服务模块将所述代码包以及所述代码包在所述程序中的代码位置发送给代码查看工具;
显示模块503,用于通过所述代码查看工具显示所述代码包中的代码以及所述代码包在所述软件程序中的代码位置。
可选的,如图6所示,代码查看装置,还可以包括:
接收模块504,用于通过所述代码查看工具接收所述用户对所述代码包中的代码进行修改获得的更新代码包;
发送模块505,用于通过所述代码查看工具将所述更新代码包发送给所述Dart虚拟机;
更新模块506,用于通过所述Dart虚拟机使用所述更新代码包对所述软件程序进行更新。
其中,如图7所示,发送模块,505可以包括:
第一发送子模块5051,用于通过所述代码查看工具将所述更新代码包发送给所述虚拟机服务模块;
第二发送子模块5052,用于通过所述虚拟机服务模块采用无状态并且轻量级的远程过程调用JSON-RPC通信协议将所述更新代码包发送给所述Dart虚拟机。
可选的,所述第二处理模块502,还用于通过所述Dart虚拟机根据所述待获取内容,获取所述软件程序正在运行的代码包的相关信息,通过所述虚拟机服务模块将所述代码包的相关信息发送给所述代码查看工具,其中,所述代码包的相关信息包括以下任意一种或组合:代码的脚本、代码的类、代码的行号以及代码使用的参数;
所述显示模块503,还用于通过所述代码查看工具显示所述代码包的相关信息。
以上如图5-7所示的本发明实施例提供的代码查看装置的具体实现方法,可以参见本发明实施例提供的代码查看方法所述,此处不再赘述。
本公开实施方式相对于现有技术而言,在Flutter框架下,采用Dart语言编写的软件程序代码运行的过程中,可以通过虚拟机服务模块接收用户发送的代码查看指令确定待获取内容,通过Dart虚拟机根据待获取内容获取代码包以及代码包在软件程序中的代码位置,并通过代码查看工具向用户显示代码包中的代码以及代码包在软件程序中的代码位置,从而达到使用户能够查看基于Flutter开发的软件程序运行过程中的代码目的,解决了现有技术无法在软件程序运行的过程中查看代码的问题;本实施例提供的技术方案可以在程序运行的过程中,获取正在运行的代码包以及代码包在软件程序中的代码位置,使得本发明实施例提供的技术方案更适用于程序开发人员在开发测试中应用本发明实施例提供的技术方案进行软件代码的错误查看以及软件代码的调试,从而更方便软件开发人员进行软件开发,简化了软件开发难度,提高了软件开发的使用体验。
本公开一个实施方式涉及一种电子设备,如图8所示,包括:
至少一个处理器801;以及,
与所述至少一个处理器801通信连接的存储器802;其中,
所述存储器802存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器801执行,以使所述至少一个处理器801能够执行本公开实施方式提供的代码查看方法所述。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和收发机之间提供接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本公开一个实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本公开的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本公开的精神和范围。