CN117908930B - 代码与代码文档的同步方法、装置、设备、介质及产品 - Google Patents
代码与代码文档的同步方法、装置、设备、介质及产品 Download PDFInfo
- Publication number
- CN117908930B CN117908930B CN202410316472.1A CN202410316472A CN117908930B CN 117908930 B CN117908930 B CN 117908930B CN 202410316472 A CN202410316472 A CN 202410316472A CN 117908930 B CN117908930 B CN 117908930B
- Authority
- CN
- China
- Prior art keywords
- target
- code
- information
- document
- content
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 105
- 230000001360 synchronised effect Effects 0.000 claims description 54
- 230000006399 behavior Effects 0.000 claims description 37
- 238000013461 design Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 9
- 230000003993 interaction Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 28
- 238000012986 modification Methods 0.000 abstract description 21
- 230000004048 modification Effects 0.000 abstract description 21
- 238000012545 processing Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 5
- 238000012827 research and development Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000011160 research Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- VIKNJXKGJWUCNN-XGXHKTLJSA-N norethisterone Chemical compound O=C1CC[C@@H]2[C@H]3CC[C@](C)([C@](CC4)(O)C#C)[C@@H]4[C@@H]3CCC2=C1 VIKNJXKGJWUCNN-XGXHKTLJSA-N 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及集成电路技术领域和软件开发领域,并提出代码与代码文档的同步方法、装置、设备、介质及产品,所述代码与代码文档的同步方法包括:将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,所述目标代码与所述目标代码文档相对应;基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,以使所述目标内容在所述目标代码和所述目标代码文档之间同步。根据本申请的代码与代码文档的同步方法、装置、设备、介质及产品可以解决代码和文档的信息修改过程繁琐的问题,可以自动化地完成同步过程,简化问题处理流程,减少处理问题的耗时,提高工作效率。
Description
技术领域
本申请涉及集成电路技术领域和软件开发领域,尤其涉及一种代码与代码文档的同步方法、装置、设备、介质及产品。
背景技术
集成电路电子设计自动化(Electronic design automation,EDA)软件是集成电路设计人员常用的电子设计自动化软件。EDA软件可以进一步细分为多个产品,例如低功耗设计静态验证工具(Low Power Checker,LPC)、门级功耗分析工具(Gate-level PowerAnalyzer,GPA)等。
在这些工具的开发和维护中,代码和与代码对应的文档(下文中也称为“代码文档”)通常需要保持同步。这里,代码例如可以由软件开发人员基于框架或数据结构进行编写和开发,对于不同需要实现的功能和行为,每个工具可以拥有自己的技术手册和文档对功能进行规范,开发人员需要根据不同的需求对代码进行适配,同时需要确保文档中与代码相关的信息保持一致,文档内容的写入或修订通常会由专门的文档工程师来进行维护。
在相关技术中,当文档工程师发现文档的内容存在问题时,需要通知到对应代码的研发工程师,对相关问题进行修改,整个处理流程包括问题提交、解决、验证、关闭等多个步骤,待所有流程完成后,才能实现文档内容的修改。
然而,这样的流程会导致问题的处理过程非常复杂,即使是对于一些简单的格式、拼写等问题的修改,也需要经过完整的流程,耗时较长,这导致代码和文档的信息修改和编辑较为繁琐,需要人员之间的协调,不利于提高工作效率。
发明内容
本申请提供一种代码与代码文档的同步方法、装置、设备、介质及产品,以至少解决相关技术中代码和文档的信息修改过程繁琐、不利于提高工作效率的问题。本申请的技术方案如下:
根据本申请的第一方面,提供一种代码与代码文档的同步方法,所述代码与代码文档的同步方法应用于集成电路电子设计自动化软件中的工具,所述代码与代码文档的同步方法包括:将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,所述目标代码与所述目标代码文档相对应;基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,以使所述目标内容在所述目标代码和所述目标代码文档之间同步。
可选地,所述代码与代码文档的同步方法还包括:将所述目标内容与所述同步文件中的目标信息比较,得到比较结果,其中,所述目标信息表征所述目标代码与所述目标代码文档共有的信息;响应于所述比较结果表示所述目标内容与所述目标信息匹配,执行所述将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件的步骤,响应于所述比较结果表示所述目标内容与所述目标信息不匹配,保持所述同步文件不变。
可选地,通过以下方式确定所述目标信息:基于所述目标代码,将所述目标代码中需要写入到所述目标代码文档中的信息确定为所述目标信息;和/或,基于所述目标代码文档,将所述目标代码文档中需要通过所述目标代码实现的信息确定为所述目标信息。
可选地,所述目标工具为多个,所述同步文件为多个,其中,通过以下方式创建所述同步文件:基于与各目标工具对应的目标信息,确定与各目标工具对应的各目标信息中共有的公共信息以及各目标信息各自的专有信息;基于所述公共信息,创建公共同步文件;基于所述专有信息,创建与各目标工具对应的专有同步文件。
可选地,所述基于所述公共信息,创建公共同步文件,包括:基于所述公共信息中的工具级公共信息,创建工具级公共同步文件;和/或,基于所述公共信息中的代码级公共信息,创建代码级公共同步文件,其中,所述工具级公共信息是指各目标工具的工具行为之间的公共信息,所述代码级公共信息是指各目标工具的目标代码之间的公共信息。
可选地,通过以下方式确定所述专有信息:确定各目标信息在各目标工具中的表现行为;响应于目标信息在不同的目标工具中具有不同的表现行为,将目标信息的表现行为确定为相应的目标工具的专有信息;响应于目标信息在不同的目标工具中具有相同的表现行为,根据目标信息在不同的目标工具中的调用关系,将目标信息的表现行为确定为被调用的目标工具的专有信息。
可选地,所述基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,包括:响应于在调用或运行所述至少一者之前或者响应于到达预设的定时,从所述同步文件中提取待更新内容,其中,所述待更新内容为:上一次更新所述至少一者的时刻到当前时刻之间同步到所述同步文件中的目标内容,或者所述同步文件中与所述至少一者相关的全部内容;基于所述待更新内容,更新所述至少一者。
可选地,所述基于所述待更新内容,更新所述至少一者,包括:基于预设的序列化规则,将所述待更新内容序列化为所述至少一者的信息格式,并且确定所述待更新内容在所述至少一者中的嵌入位置;将序列化的所述待更新内容更新到所述嵌入位置中。
可选地,所述代码与代码文档的同步方法在所述目标工具中实现,所述同步文件为JSON格式文件或XML格式文件,所述目标信息包括以下中的至少一者:所述目标代码或所述目标代码文档中的命令选项、命令或选项的帮助信息、命令或选项的相互作用、命令或选项所接受的参数以及功能的生效时间。
根据本申请的第二方面,提供一种代码与代码文档的同步装置,所述代码与代码文档的同步装置应用于集成电路电子设计自动化软件中的工具,所述代码与代码文档的同步装置包括:更新单元,被配置为将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,所述目标代码与所述目标代码文档相对应;同步单元,被配置为基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,以使所述目标内容在所述目标代码和所述目标代码文档之间同步。
根据本申请的第三方面,提供一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器,其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据本申请所述的代码与代码文档的同步方法。
根据本申请的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据本申请所述的代码与代码文档的同步方法。
根据本申请的第五方面,提供一种计算机程序产品,该计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现根据本申请所述的代码与代码文档的同步方法。
本申请提供的技术方案至少带来以下有益效果:
本申请的技术方案可以通过将目标内容更新到为目标代码和目标代码文档预设的同步文件,使得目标内容可以存在于更新后的同步文件中,从而可以基于该同步文件更新目标代码和/或目标代码文档,使得目标内容可以在目标代码和目标代码文档之间同步,如此,无论在文档侧还是在代码侧,当需要对相关信息进行更新时,只需要将该信息更新到同步文件,即可实现代码和文档二者的信息同步,而无需如相关技术那样通过人员之间的通知和反馈来完成同步更新,本申请的技术方案可以自动化地完成同步过程,简化问题处理流程,减少处理问题的耗时,提高工作效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是根据相关技术的代码修改流程的示意图。
图2是根据本申请的示例性实施例示出的代码与代码文档的同步方法的示意性流程图。
图3是根据本申请的示例性实施例示出的代码与代码文档的同步方法中比较目标内容与目标信息的步骤的示意性流程图。
图4是根据本申请的示例性实施例示出的代码与代码文档的同步方法中更新待更新内容的示意图。
图5是根据本申请的示例性实施例示出的代码与代码文档的同步方法的文档片段的示例的示意图。
图6是根据本申请的示例性实施例示出的代码与代码文档的同步方法中创建同步文件的步骤的示意性流程图。
图7是根据本申请的示例性实施例示出的代码与代码文档的同步方法中确定专有信息的步骤的示意性流程图。
图8是根据一示例性实施例示出的一种代码与代码文档的同步装置的框图。
图9是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请的实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本申请中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
如前所述,文档工程师在发现代码问题时的处理过程非常复杂,即使是对于一些简单的格式、拼写等问题的修改,也需要经过完整的流程,耗时较长,这导致代码和文档的信息修改和编辑较为繁琐,需要人员之间的协调,不利于提高工作效率。
具体来说,开发人员在基于架构进行代码开发时常常会遇到核心业务架构行为需要兼容的情况,开发人员对其进行兼容和适配的时候会将代码结构变得更为复杂。因此,诸如文档工程师的文档管理工作者在发现软件中有不符合规范的行为时,为了避免额外的错误,无法对代码进行直接更改,而是需要通知到对应功能的研发工程师,通过提交问题报告流程(file issue)进行修改。
这里,常规的提交问题报告流程包括问题提交、解决、验证、关闭等多个步骤。图1示出了相关技术中标准的代码修改流程的示例,如图1所示,文档工程师在发现问题后,需要先提交问题报告给研发工程师处理,研发工程师在处理完成后再交给测试工程师验证和测试,最后再将结果返回给文档工程师,直至完成整个流程后,才能实现文档中代码相关内容的修改。若在此过程中,存在修改不到位的问题,则需要再次执行上述流程。
在这样的方案中,代码与文档分开,对文档稍作改变,便使整个修改流程变得极为复杂,即便是修改帮助信息、格式、标点符号或者拼写错误等最普通的问题,文档工程师也不能对代码进行直接修改,而需要通过上述一系列的复杂流程实现。
在实际软件开发过程中,对文档的修改大多数是不涉及代码的复杂逻辑的,例如对某个命令的帮助信息或者某个产品的版本号的更改等。在这种情况下,若每次修改都要完整执行如图1所示的流程,不仅大大降低了效率,而且对于软件产品而言,无法及时更新关键信息,可能会导致产品多次短期或长期与作为文档的技术手册不匹配,容易造成混乱,对整个产品的研发具有不利的影响。
鉴于上述问题,本申请的示例性实施例提出一种代码与代码文档的同步方法、代码与代码文档的同步装置、电子设备、计算机可读存储介质及计算机程序产品,其能够解决或至少缓解上述问题。
在本申请的示例性实施例的第一方面,提供一种代码与代码文档的同步方法,下面将参照图2至图7进行描述。
根据本申请的示例性实施例的代码与代码文档的同步方法可以应用于在集成电路电力电子设计自动化软件中的工具中,例如,用户终端上可以加载有集成电路电力电子设计自动化软件中的一种或多种工具,这些工具可以实现根据本申请的实施例的代码与代码文档的同步方法。
具体来说,集成电路电力电子设计自动化软件中的工具可以将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,这里,目标代码与目标代码文档相对应。
集成电路电力电子设计自动化软件中的工具还可以基于更新后的同步文件,更新目标代码和目标代码文档中的至少一者,以使目标内容在目标代码和目标代码文档之间同步。
根据本申请的示例性实施例的代码与代码文档的同步方法,可以通过同步文件实现对目标代码和目标代码文档的同步更新,从而可以自动化地完成同步过程,简化问题处理流程,减少处理问题的耗时,提高工作效率。
上述用户终端可以是诸如平板电脑、笔记本电脑、数字助理、可穿戴设备等,然而,上面代码与代码文档的同步方法的实施场景仅是一示例场景,根据本申请的示例性实施例的代码与代码文档的同步方法还可以应用于其他应用场景,例如也可以是用户在用户终端(例如,手机、台式电脑、平板电脑等)通过网络向服务器中加载的工具请求同步,并且可以将目标内容发送至服务器,服务器可以通过执行根据本申请的示例性实施例的代码与代码文档的同步方法来完成目标代码和目标代码文档之间的同步,这里,服务器可以是独立服务器,也可以是服务器集群,还可以是云计算平台或虚拟化中心。
下面将参照图2描述根据一示例性实施例的一种代码与代码文档的同步方法的具体步骤。该代码与代码文档的同步方法可以应用于集成电路电子设计自动化软件中的工具。这里,集成电路电子设计自动化软件中的工具例如可以是但不限于EDA软件的不同产品,例如包括UPF(低功耗设计静态验证工具,Low Power Checker,LPC)、PWR(门级功耗分析工具,Gate-level Power Analyzer,GPA)等。此外,该代码与代码文档的同步方法可以用于任何需要代码文档和代码同步的场景,例如软件开发、文档编写和数据分析等。
如图2所示,该代码与代码文档的同步方法可以包括以下步骤:
在步骤S210,可以将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件。
这里,目标代码可以与目标代码文档相对应。代码文档可以是对代码中的功能和行为进行规范或说明的文档,其可以记录代码的设计原则、功能和模块等内容。
目标工具可以是一个或多个,其可以包括集成电路电子设计自动化软件中任意一种或多种工具,该代码与代码文档的同步方法例如可以在目标工具中实现,例如可以将该方法的全流程嵌入到代码中,并且可以使用诸如GIT分布式版本控制***的第三方控制工具进行管理,一旦在更新或同步过程中出现问题,可以快速地回退到任何一个版本。如此,实现该方法的代码可以作为工具的一部分与目标代码共存,并且可以通过使用管理软件与业务代码进行共同迭代更新,自动地对目标代码和目标代码文档件同步管理,无需通过手动或者插件的形式对同步进行干预。然而,本申请的实施例不限于此,该方法也可以通过另外的软件来实现,并且在目标工具的运行中自动地对目标代码和目标代码文档件同步管理。
作为示例,同步文件可以为JSON格式文件或XML格式文件,该同步文件可以作为数据中心,用于对代码和代码文档进行同步,具体地,在同步文件中的内容发生改变时,相应的目标代码和目标代码文档也会自动改变,以实现同步。
同步文件例如可以但不限于存储在数据库中,该数据库的位置可以是任意的,例如,可以是单独的数据服务器,存储有用于多个目标工具的同步文件;也可以与目标代码或目标文档位于同一终端上。这里,同步文件的创建和编辑是可以根据不同需求的代码和文档而选择和改变的,从而可以提高该方法的灵活性,创建同步文件的若干示例过程将在下文中详细描述。
目标内容可以是需要在目标代码和目标代码文档之间同步的内容。例如,以上面图1的场景为例,目标内容可以是文档工程师在发现代码中存在的错误后进行修改的内容。然而其不限于此,也可以是代码相关的工程师发现需要在代码和文档中同步更新的内容。
此外,作为示例,在更新同步文件前,还可以对更新到同步文件的内容进行评估,判断其是否为需要在目标代码和目标代码文档之间同步的信息,若为需要同步的信息,则可以更新到同步文件;若为不需要同步的信息,则可以不被更新到同步文件。
作为一示例,该评估过程可以由研发工程师或文档工程师根据经验或实际需要来完成,例如在工程师认为目标内容属于需要同步的信息的情况下,可以直接切换到同步文件,将其更新到同步文件中。
具体来说,在首次将需要同步的目标信息写入同步文件的过程中,当研发工程师发现目标代码中的目标信息时,可以切换到同步文件中填写与目标信息相关的数据。而在后续修改或维护过程中,当研发工程师或文档工程师需要在目代码或目代码文档中更新的内容是目标信息时,可以切换到同步文件,在同步文件中进行对应的修改或维护。这里,目标信息可以表征目标代码与目标代码文档共有的信息,其具体示例将在下文中详细描述。
作为另一示例,对目标内容进行判断的过程也可以根据预设的规则来自动实现。
例如,以图3为例,根据本申请的实施例的代码与代码文档的同步方法还可以包括以下步骤:
在步骤S310,可以将目标内容与同步文件中的目标信息比较,得到比较结果。
如上所述,目标信息可以表征目标代码与目标代码文档共有的信息。作为示例,目标信息可以是EDA软件文档和EDA源代码中需要被同步更新、保持一致的信息,其包括但不限于代码中需要写入到文档里的信息、文档中需要代码实现的信息。
此外,作为示例,目标信息是可修改和可变的信息,例如其可以根据实际开发需求被反复修改、更正和改变。具体来说,诸如研发工程师和文档工程师的不同部门的工程师的业务重合部分可能会随着软件的生命周期或者针对不同用户的要求进行改动,因此,在本申请的实施例中,允许对目标信息进行修改、添加或删除,在执行这里所述的步骤S310时,可以先获取当前最新的目标信息,以用于与目标内容进行比较。
作为示例,可以通过以下方式确定目标信息:基于目标代码,将目标代码中需要写入到目标代码文档中的信息确定为目标信息;和/或,基于目标代码文档,将目标代码文档中需要通过目标代码实现的信息确定为目标信息。
具体来说,根据本申请的实施例,一方面,可以从代码侧来确定目标信息,例如,可以响应于编辑目标代码,基于所编辑的代码内容中需要写入到目标代码文档中的信息,确定目标信息,例如在编辑代码时,若识别到当前编辑的代码内容与要写入代码文档的信息相关,例如与代码中的命令(command)或选项(option)相关的信息等,则可以基于该代码内容确定目标信息。然而,从代码侧确定目标信息的示例不限于此,也可以从已经完成的目标代码中查找和提取出需要写入到目标代码文档的信息,例如可以为与代码中的命令或选项相关的信息。
另一方面,附加地或者替代地,可以从文档侧来确定目标信息,例如,可以响应于编辑目标代码文档,基于所编辑的文档内容中需要通过目标代码实现的信息,确定目标信息,例如在编辑代码文档时,若识别到当前编辑的文档内容与代码重复,例如与代码中的命令或选项相关的信息等,则可以基于该文档内容确定目标信息。然而,从文档侧确定目标信息的示例不限于此,可以从已经完成的目标代码文档中提取出与代码相关的信息,作为目标信息。
通过上述方式,可以灵活地确定目标信息,无论是文档工程师还是研发工程师都能够指定需要同步的目标信息,避免遗漏一些需要同步的关键信息,有利于更好地实现同步过程。
作为示例,目标信息可以包括但不限于以下中的至少一者:目标代码或目标代码文档中的命令选项、命令或选项的帮助信息、命令或选项的相互作用、命令或选项所接受的参数以及功能的生效时间。
这里,命令或选项的相互作用例如可以包括互斥、协同等;命令或选项所接受的参数例如可以包括多参数、单参数、工具命令语言(Tool Command Language,TCL)中的对象obj、布尔值、整型、浮点型等;功能的生效时间例如可以包括低功耗检测中的post syn阶段、post pr阶段、rtl阶段的控制等。然而,目标信息的示例不限于此,任何可以作为标志位或者标志字段(在计算机语言中,也称为“flag”标志位)的信息均可以作为目标信息,也可以根据实际需要自定义一些感兴趣的信息或关键信息作为目标信息,通过设置目标信息,可以对同步的内容提供极大的控制灵活性。
在获取到当前的目标信息的情况下,可以将待更新的目标内容与目标信息进行比较,判断目标内容是否属于目标信息。
在步骤S320,可以响应于比较结果表示目标内容与目标信息匹配,执行将目标内容更新到同步文件的步骤。
在步骤S330,可以响应于比较结果表示目标内容与目标信息不匹配,保持同步文件不变。
作为示例,目标内容与目标信息匹配可以是指目标内容属于任意一种或多种目标信息或者目标内容与任意一种或多种目标信息相关,而目标内容与目标信息不匹配可以是指目标内容与目标信息不相关。
在目标内容与目标信息匹配的情况下,可以认为该目标内容需要在目标代码和目标代码文档之间同步,此时可以执行上述步骤S210,将目标内容更新到同步文件;而在目标内容与目标信息不匹配的情况下,可以认为该目标内容无需同步,无需更新同步文件。
通过上述方式,可以自动判断当前待更新的目标内容,便于提高信息识别和同步的准确性,避免人工处理时遗漏需要同步的信息。
返回参照图2,在步骤S220,可以基于更新后的同步文件,更新目标代码和目标代码文档中的至少一者,以使目标内容在目标代码和目标代码文档之间同步。
在目标内容更新到同步文件后,在运行或调用目标代码和目标代码文档时,目标内容将从同步文件同步到目标代码和目标代码文档中,以保持目标代码和目标代码文档中的信息一致性。
在该步骤S220中,作为示例,可以通过以下方法更新目标代码和目标代码文档中的至少一者:响应于在调用或运行目标代码和目标代码文档中的至少一者之前或者响应于到达预设的定时,从同步文件中提取待更新内容;基于待更新内容,更新目标代码和目标代码文档中的所述至少一者。
这里,待更新内容可以为:上一次更新目标代码和目标代码文档中的所述至少一者的时刻到当前时刻之间同步到同步文件中的目标内容,或者,同步文件中与目标代码和目标代码文档中的所述至少一者相关的全部内容。
具体来说,更新目标代码和/或目标代码文档的时机(或者说同步目标代码和目标代码文档的时机)可以是在调用或运行目标代码和/或目标代码文档时,也可以是根据预设的时间间隔定时执行。
在一种情况下,在到达同步时机时,可以自动识别同步文件中上一次更新目标代码(和/或目标代码文档)的时刻到当前时刻之间同步到同步文件中的目标内容。在此情况下,待更新内容可以包括一次或多次更新到同步文件的一个或多个目标内容,具体来说,在上一次更新目标代码(和/或目标代码文档)之后,直至当前时刻,同步文件可以被更新过多次,在每次更新时,该次更新的目标内容将被写入到同步文件中,多次更新的目标内容均需要同步到目标代码(和/或目标代码文档)中,因此,可以记录每次更新目标代码(和/或目标代码文档)的时刻以及每次更新同步文件的时刻,从而可以准确地将同步文件中相应的内容同步到目标代码(和/或目标代码文档)中,可以实现快速同步。
在另一种情况下,在到达同步时机时,可以自动拉取同步文件中与目标代码(和/或目标代码文档)相关的所有最新内容,以更新目标代码(和/或目标代码文档)。在该示例中,可以无需记录更新同步文件、目标代码(和/或目标代码文档)的时刻,减少存储资源的占用。
上面所述的同步过程可以由同步引擎来实现,同步引擎可以是任意格式的脚本或程序等,其可以与目标代码和目标代码文档共存,例如,在目标代码侧和目标代码文档侧可以分别设置有同步引擎,在达到同时时机时,相应的同步引擎会对目标代码和目标代码文档进行更新,以实现同步。
作为示例,如图4所示,可以通过以下方式对目标代码和目标代码文档中的至少一者进行更新:在步骤S410,可以基于预设的序列化规则,将待更新内容序列化为目标代码和目标代码文档中的所述至少一者的信息格式,并且确定待更新内容在目标代码和目标代码文档中的所述至少一者中的嵌入位置;在步骤S420,可以将序列化的待更新内容更新到嵌入位置中。
这里,可以预设有序列化规则,该序列化规则可以包括目标代码与同步文件之间的信息对应关系以及目标代码文档与同步文件之间的信息对应关系。具体来说,同一信息在目标代码、目标代码文档以及同步文件中可以具有不同的表现形式,例如存储格式不同,下面示出了目标代码片段和同步文件中的信息片段的示例:
目标代码片段的示例可以为:
“testComRedirect::testComRedirect(const set<int>&enumSet)
:testCommand(“redirect”/*cmd name*/, “Redirects the output of anycommand.”/*cmd help*/, enumSet)
{
const char* help = “Name of attribute”;// option help
Add(new StringArg(0, help, “report violation”/*Example*/, “N/A”/*Remarks*/, \
1 /*arg optional*/,1 /*arg exclusive group*/,0 /*arg default*/));
RecordOptionLevel(“0” /*option level*/, LicenseLevel::Level3);”。
同步文件中的信息片段的示例可以为:
““cmd_name”: “redirect”,
“cmd_help”: “Redirects the output of any command. ”,
“options”: [
{
“option_name”: “cmd arg”,
“option_help”: “Executes the command and gets the output.”,
“arg_type”: “StringArg”,
“arg_optional”: “0”,
“arg_exclusive_group”: “0”,
“arg_default_value”: “0”
},”。
从上面的示例可以看出,目标代码和同步文件的数据格式可以是不同的,而图4示出了目标代码文档片段的一示例,如图5所示,目标代码文档可以具有与目标代码和同步文件均不同的数据格式,其可以是更易读的格式,例如表格等。这里,需要说明的是,上面给出的目标代码的示例、同步文件的示例以及图5中的目标代码文档的示例均为示意性的,给出这些示例的目的在于便于理解目标代码、同步文件和目标代码文档之间的数据格式的区别,这些示例中的内容并不是完全对应的关系。
由于目标代码与同步文件之间的数据格式的不同以及目标代码文档与同步文件之间的数据格式的不同,可以预先确定好它们之间的信息对应关系,即上面所述的序列化规则,如此,在从同步文件提取到待更新内容的情况下,可以基于序列化规则,将待更新内容自动组装为目标代码和目标代码文档的格式,以能够直接嵌入到目标代码和目标代码文档中,而无需人工解析或匹配,在相关人员打开目标代码和目标代码文档时,其所看到的可以是已经嵌入待更新内容后的内容。
作为示例,如上所述的同步引擎可以包括序列化工具,该序列化工具可以用于执行从同步文件中提取待更新内容并且基于待更新内容更新目标代码和目标代码文档的过程。
以EDA软件的工具为例,在工具运行启动或者生成代码时,同步引擎可以加载诸如JSON文件的同步文件,在加载同步文件后,可以查询同步文件中需要同步的数据,序列化工具可以基于这些数据生成所需要的代码或文档片段,其中,对于目标代码,在初始化时,可以将组装成功的代码填充到对应的嵌入位置,使其生效,得到根据最新配置设置的目标代码。对于目标代码文档,在文档自动化生成时,可以将组装成功的文档内容填充到对应的嵌入位置,对目标文档进行关键数据替换,得到对应的目标文档。
通过上述序列化的方式,可以自动将同步文件中待更新的内容组装成适应目标代码和目标代码文档的格式,并且可以自动嵌入到目标代码和目标代码文档中的对应的嵌入位置,实现全自动化的同步过程,使得人员在查看目标代码和目标代码文档时更新的目标内容已经自动填充在正确的位置,整个过程无需人工参与即可完成。
上面描述了在根据本申请的实施例的代码与代码文档的同步方法中利用同步文件实现同步的过程,下面将参照图6和图7描述创建同步文件的示例过程。
作为一示例,目标工具可以为一个或多个,同步文件可以与目标工具对应地创建,可以为每个目标工具创建对应的一个或多个同步文件,例如目标工具可以包括多个目标代码,每个目标代码可以对应于一个同步文件。在该示例中,每个同步文件中存储的内容仅用于一个目标工具。
然而,本申请的实施例不限于此,优选地,在目标工具为多个的情况下,可以创建多个同步文件,这些同步文件中可以包括:存储这些目标工具中的共有的、可复用的信息的公共同步文件;以及,存储相应目标工具各自的专有信息的专有同步文件。
例如,如图6所示,可以通过以下方式创建同步文件:
在步骤S610,可以基于与各目标工具对应的目标信息,确定与各目标工具对应的各目标信息中共有的公共信息以及各目标信息各自的专有信息。
在该步骤中,可以根据目标信息的特征,判断目标信息属于公共信息还是专有信息,从而将目标信息保存在对应的同步文件中。
这里,各目标工具例如可以包括EDA软件中的不同工具,诸如UPF、PWR等。
在步骤S620,可以基于公共信息,创建公共同步文件。
公共同步文件可以用于多个目标工具,其可以存储有这些目标工具的共有的、可复用的信息,例如可以创建公共同步文件或者公共数据中心“DataGen”。在这些目标工具中的每个目标工具到达同步时机时,均可以从该公共同步文件拉取最新的配置信息,以进行相应的目标代码或目标代码文档的同步。
这里,公共同步文件可以为一个或多个,例如,可以创建存储不同维度或级别的公共信息的多个公共同步文件。
作为示例,公共信息可以包括工具级公共信息和代码级公共信息,工具级公共信息可以是指各目标工具的工具行为之间的公共信息,代码级公共信息可以是指各目标工具的目标代码之间的公共信息。
在该示例中,步骤S620可以包括:基于公共信息中的工具级公共信息,创建工具级公共同步文件;和/或,基于公共信息中的代码级公共信息,创建代码级公共同步文件。
以目标工具包括UPF和PWR为例,可以创建工具级公共同步文件“CmdGen.json”和代码级公共同步文件“CmdBaseClass.json”。
作为示例,工具级公共同步文件“CmdGen.json”可以记录所有EDA软件中的所有工具中具有一致行为和选项的命令,例如,如下表1所示的read_design命令、read_library命令等。代码级公共同步文件“CmdBaseClass.json”可以记录各目标工具的代码中共有的类名、基类以及命令选项等,例如,命令“get_nets”属于公共信息,在命令“genComGetNets”中具有选项的实现,例如“默认cmd arg”、“filter”、“all”和“transitive”,因此需要记录在代码级公共同步文件“CmdBaseClass.json”中。
表1
序号 | UPF命令 | 特性 | 分配的同步文件 |
1 | get_nets | 在不同工具行为不一致 | CmdUPF.json |
2 | find_objects | 选项不完全相同 | CmdUPF.json |
3 | report_library | 所有工具通用且行为一致 | CmdGen.json |
4 | read_design | 所有工具通用且行为一致 | CmdGen.json |
通过创建存储不同维度或级别的公共信息的多个公共同步文件,可以更细化地管理公共信息,避免在目标工具较多时通过一个同步文件管理公共信息而导致不易于查找和修改,提高信息维护的便利性和效率。
此外,尽管这里以工具级和代码级为例进行了说明,但是其不限于此,划分公共信息以及创新相应的公共同步文件的维度或级别也可以包括其他示例。
在步骤S630,可以基于专有信息,创建与各目标工具对应的专有同步文件。
仍以目标工具包括UPF和PWR为例,可以创建与UPF对应的专有同步文件“CmdUPF.json”或者专有数据中心“DataUPF”,并且创建与PWR对应的专有同步文件“Cmdpwr.json”或者专有数据中心“DataPWR”。专有同步文件“CmdUPF.json”和“Cmdpwr.json”可以分别记录UPF和PWR各自独立的行为和选项的命令。
作为示例,如图7所示,在步骤S630中,可以通过以下方式确定专有信息:
在步骤S710,可以确定各目标信息在各目标工具中的表现行为。
表现行为可以是指目标信息所要实现或者所关联的工具功能,其可以指的是工具的某个整体性的功能,也可以指的是在整体性的功能中实现局部或部分作用的子功能。
在步骤S720,可以响应于目标信息在不同的目标工具中具有不同的表现行为,将目标信息的表现行为确定为相应的目标工具的专有信息。
在目标信息在不同的目标工具中具有不同的表现行为的情况下,可以认为该目标信息在不同的目标工具中执行不同的功能,因此需要作为专有信息在不同的同步文件中分别管理。
例如,如表1所示,作为目标信息的命令“get_nets”在UPF和PWR中具有不同的表现行为,因此,该命令不属于公共信息,进一步判断,命令“get_nets”在UPF中具有专有的选项“canonical”和“redo_canonical”,因此,命令“get_nets”的这两个选项需要作为专有信息记录在与UPF对应的“CmdUPF.json”中。
在步骤S730,可以响应于目标信息在不同的目标工具中具有相同的表现行为,根据目标信息在不同的目标工具中的调用关系,将目标信息的表现行为确定为被调用的目标工具的专有信息。
具体来说,即使在不同的目标工具中具有相同的表现行为,目标信息也可能不属于公共信息。例如,如表1所示,作为目标信息的命令“find_objects”在UPF和PWR中有同样的表现行为,但是在作为公共信息的“genComfindobjects”中没有选项的实现,而在UPF中实现了所有的选项,并且在PWR中直接调用了UPF的“upfcomfindobjects”。如此,尽管命令“find_objects”表面上在UPF和PWR中是相同的,但是实际上其属于UPF,因此命令“find_objects”不属于公共信息,而应当记录在与UPF对应的“CmdUPF.json”中。
通过上面图7所示的方式,可以准确识别出哪些目标信息是专有信息,即使在具有相同的表现行为的情况下,也能够通过进一步判断目标工具之间的调用关系,深入判断属于个别目标工具的专有信息。
上面参照步骤S610至步骤S630描述了创建同步文件的示例,这里,需要说明的是,上述步骤S620和步骤S630的执行顺序可以是任意的,例如也可以先执行步骤S630,后执行步骤S620,或者也可以并行执行步骤S620和步骤S630。
通过图6所示的方式,可以区分公共信息和专有信息来创建多个同步文件,如此,既能够确保每个目标工具各自的特有功能被单独管理,也能够将目标工具之间共同的特征提取出来,简化这些共同特征的管理,使得在同步过程中可以对多个目标工具的内容一并更新,进一步提高同步效率,减小信息修改的工作量。
根据本申请的实施例的代码与代码文档的同步方法,可以解决相关技术中使用问题报告流程同步代码文档与代码的相关信息而存在的信息修改繁琐、效率低下的问题,该同步方法能够提高整个研发团队的效率,通过创建同步文件,将代码和代码文档中的部分信息同源,并且利用代码配合脚本以及诸如JSON数据格式的同步文件,实现代码文档和代码关键信息同步的功能。根据本申请的实施例的代码与代码文档的同步方法通过修改代码文档和代码共同使用的数据源(即同步文件)的方式,替代了相关技术中使用问题报告流程实现文档和代码的同步修改,文档工程师不再需要复杂的流程对代码中对应的信息进行修改,直接通过修改源同步文件达到目的。
此外,根据本申请的实施例的代码与代码文档的同步方法,还能够快速、准确地同步代码文档和代码,并且适用于各种文档和代码格式。
具体来说,该方法可以实现代码与文档的实时同步,避免了人工手动同步过程中的错误和重复劳动,从而提高了工作效率。此外,由于代码和代码文档是同步更新的,因此可以保证它们之间的数据一致性,避免了因为操作失误或时间延迟等原因导致的不一致问题。在一些情况下,还可以允许开发团队的成员同时编辑代码文档和代码,并且及时看到对方的修改,极大的简化了涉及文档部分代码修改流程,从而提高了团队协作的效率和质量。
此外,通过该方法,软件或工具的管理员可以方便地管理和维护代码和文档,并快速发现和解决问题,从而降低了管理和维护成本。
下面将结合具体的应用场景,描述利用本申请的实施例的代码与代码文档的同步方法实现快速同步的示例过程。
在一场景下,在文档工程师运行某目标代码时,发现提示以下错误信息:
“%
% find_objects –obj_type {port net}
ERROR : -obj_type only accept one arg
%”。
从上述错误信息中,文档工程师发现命令“find_objects”的选项“obj_type”出现异常,该选项在设计时应该可接受多种不同的类型(type)作为数据进行检索,但是在实际运行中,该选项只能接受单个参数,例如“find_objects -obj_type port”,而当输入两个参数时,即会报错,例如“find_objects -obj_type {port net}”。
在此情况下,文档工程师可以迅速根据需求,查找同步文件中的相关信息“find_objects”的选项“obj_type”是否接受多个参数,其查找结果如下:
“{
“option_name”: “object_type”,
“option_help”: “help message”,
“option_level”: “0”,
“arg_type”: “StringArg”,
“arg_optional”: “1”,
“arg_accepts_multiple_string”: “0”,
“arg_default_value”: “0”,”。
从上述结果可知,信息““arg_accepts_multiple_string” : “0””表示选项“obj_type”为不接受多个参数,因此,文档工程师可以及时在同步文件中输入目标内容,将该参数“0”改变为“1”,以使其可以接受多个参数。而在研发工程师运行代码时,可以先从已由文档工程师修改的同步文件中获取到更新的目标内容,即参数“0”改变为“1”,如此,研发工程师的错误操作所导致的问题可以被文档工程师快速的更改,并且在代码侧进行自动同步。
在另一场景下,研发工程师发现代码文档中关于命令“find_objects”的描述信息不准确,具体来说,其描述如下:
“%
% find_objects -help
“find_objects”: Finds objects within a scope
%”。
而实际上,命令“find_objects”的正确描述应为“Finds logic hierarchyobjects within a scope.”,在上述文档片段中,被文档工程师错误描述。
在此情况下,研发工程师可以在同步文件中搜索命令“find_objects”的相关信息,并将其改正,改正后的同步文件片段如下:
“{
“cmd_name”: “find_objects”,
“cmd_help”: “Finds logic hierarchy objects within a scope.”,
“cmd_level”: “0”,
“cmd_format”: “NA”,”。
在文档工程师打开代码文档时,可以先从已由研发工程师修改的同步文件中获取到更新的目标内容,即更新正确的描述,如此,文档工程师的错误描述可以被研发工程师快速定位并改正,并且在代码文档侧进行自动同步。
根据本申请的实施例的同步方法可以将代码和代码文档中需要同步的信息进行解耦合,并且把它们业务重合部分的数据(例如目标信息)放到数据中心,从而可以实现代码和代码文档的关键信息的同步功能。通过这种方式,不再需要依赖于传统的流程手动修改和同步文档与代码的相关信息,从而提高工作效率和信息同步的时效性。
此外,根据本申请的实施例的同步方法可以针对不同的代码逻辑和业务进行不同的适配,同时可以处理代码中复杂的类的继承关系,区别于普通的纯数据同步软件,该方法更契合代码业务的逻辑,使得开发者无需对复杂的继承关系进行抽象化处理,可以直接使用该方法中已经支持的技巧进行操作。
图8是根据一示例性实施例示出的一种代码与代码文档的同步装置的框图。参照图8,代码与代码文档的同步装置应用于集成电路电子设计自动化软件中的工具,该代码与代码文档的同步装置可以包括更新单元100和同步单元200。
更新单元100被配置为将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,目标代码与目标代码文档相对应。
同步单元200被配置为基于更新后的同步文件,更新目标代码和目标代码文档中的至少一者,以使目标内容在目标代码和目标代码文档之间同步。
作为示例,该代码与代码文档的同步装置还包括比较单元,比较单元被配置为将目标内容与同步文件中的目标信息比较,得到比较结果,其中,目标信息表征目标代码与目标代码文档共有的信息。更新单元100被配置为:响应于比较结果表示目标内容与目标信息匹配,执行将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件的步骤,响应于比较结果表示目标内容与目标信息不匹配,保持同步文件不变。
作为示例,通过以下方式确定目标信息:基于目标代码,将目标代码中需要写入到目标代码文档中的信息确定为目标信息;和/或,基于目标代码文档,将目标代码文档中需要通过目标代码实现的信息确定为目标信息。
作为示例,目标工具为多个,同步文件为多个,该代码与代码文档的同步装置还包括创建单元,创建单元被配置为通过以下方式创建同步文件:基于与各目标工具对应的目标信息,确定与各目标工具对应的各目标信息中共有的公共信息以及各目标信息各自的专有信息;基于公共信息,创建公共同步文件;基于专有信息,创建与各目标工具对应的专有同步文件。
作为示例,创建单元还被配置为:基于公共信息中的工具级公共信息,创建工具级公共同步文件;和/或,基于公共信息中的代码级公共信息,创建代码级公共同步文件,其中,工具级公共信息是指各目标工具的工具行为之间的公共信息,代码级公共信息是指各目标工具的目标代码之间的公共信息。
作为示例,创建单元还被配置为通过以下方式确定专有信息:确定各目标信息在各目标工具中的表现行为;响应于目标信息在不同的目标工具中具有不同的表现行为,将目标信息的表现行为确定为相应的目标工具的专有信息;响应于目标信息在不同的目标工具中具有相同的表现行为,根据目标信息在不同的目标工具中的调用关系,将目标信息的表现行为确定为被调用的目标工具的专有信息。
作为示例,同步单元200还被配置为:响应于在调用或运行至少一者之前或者响应于到达预设的定时,从同步文件中提取待更新内容,其中,待更新内容为:上一次更新所述至少一者的时刻到当前时刻之间同步到同步文件中的目标内容,或者同步文件中与所述至少一者相关的全部内容;基于待更新内容,更新所述至少一者。
作为示例,同步单元200还被配置为:基于预设的序列化规则,将待更新内容序列化为所述至少一者的信息格式,并且确定待更新内容在所述至少一者中的嵌入位置;将序列化的待更新内容更新到嵌入位置中。
作为示例,代码与代码文档的同步方法在目标工具中实现,同步文件为JSON格式文件或XML格式文件,目标信息包括以下中的至少一者:目标代码或目标代码文档中的命令选项、命令或选项的帮助信息、命令或选项的相互作用、命令或选项所接受的参数以及功能的生效时间。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种电子设备的框图。如图9所示,电子设备10包括处理器101和用于存储处理器可执行指令的存储器102。这里,处理器可执行指令在被处理器运行时,促使处理器执行如上述示例性实施例所述的代码与代码文档的同步方法。
作为示例,电子设备10并非必须是单个的设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备10还可以是集成控制***或***管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的服务器。
在电子设备10中,处理器101可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器***、微控制器或微处理器。作为示例而非限制,处理器101还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器101可运行存储在存储器102中的指令或代码,其中,存储器102还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器102可与处理器101集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器102可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库***可使用的其他存储装置。存储器102和处理器101可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器101能够读取存储在存储器102中的文件。
此外,电子设备10还可以包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备10的所有组件可经由总线和/或网络而彼此连接。
在示例性实施例中,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上述示例性实施例所述的代码与代码文档的同步方法。计算机可读存储介质例如可以是包括指令的存储器,可选地,计算机可读存储介质可以是:只读存储器(ROM)、随机存取存储器(RAM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机***上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
在示例性实施例中,还可提供一种计算机程序产品,该计算机程序产品包括计算机指令,计算机指令被处理器执行时实现如上述示例性实施例所述的代码与代码文档的同步方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
此外,还需要说明的是,尽管上面参照具体附图描述了各步骤的若干示例,但是应理解的是,本申请的实施方式不限于示例中给出的组合,不同附图中出现的步骤可以相结合,在此不作出穷举。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种代码与代码文档的同步方法,其特征在于,所述代码与代码文档的同步方法应用于集成电路电子设计自动化软件中的工具,所述代码与代码文档的同步方法包括:
将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,所述目标代码与所述目标代码文档相对应;
基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,以使所述目标内容在所述目标代码和所述目标代码文档之间同步;
所述目标内容为需要在所述目标代码和所述目标代码文档之间同步的内容;
所述代码与代码文档的同步方法还包括:
将所述目标内容与所述同步文件中的目标信息比较,得到比较结果,其中,所述目标信息表征所述目标代码与所述目标代码文档共有的信息;
响应于所述比较结果表示所述目标内容与所述目标信息匹配,执行所述将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件的步骤,
响应于所述比较结果表示所述目标内容与所述目标信息不匹配,保持所述同步文件不变;
通过以下方式确定所述目标信息:
基于所述目标代码,将所述目标代码中需要写入到所述目标代码文档中的信息确定为所述目标信息;和/或,
基于所述目标代码文档,将所述目标代码文档中需要通过所述目标代码实现的信息确定为所述目标信息;
所述基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,包括:
从所述同步文件中提取待更新内容,其中,所述待更新内容为:上一次更新所述至少一者的时刻到当前时刻之间同步到所述同步文件中的目标内容,或者所述同步文件中与所述至少一者相关的全部内容;
基于预设的序列化规则,将所述待更新内容序列化为所述至少一者的信息格式,并且确定所述待更新内容在所述至少一者中的嵌入位置;
将序列化的所述待更新内容更新到所述嵌入位置中。
2.根据权利要求1所述的代码与代码文档的同步方法,其特征在于,所述目标工具为多个,所述同步文件为多个,其中,通过以下方式创建所述同步文件:
基于与各目标工具对应的目标信息,确定与各目标工具对应的各目标信息中共有的公共信息以及各目标信息各自的专有信息;
基于所述公共信息,创建公共同步文件;
基于所述专有信息,创建与各目标工具对应的专有同步文件。
3.根据权利要求2所述的代码与代码文档的同步方法,其特征在于,所述基于所述公共信息,创建公共同步文件,包括:
基于所述公共信息中的工具级公共信息,创建工具级公共同步文件;和/或,
基于所述公共信息中的代码级公共信息,创建代码级公共同步文件,
其中,所述工具级公共信息是指各目标工具的工具行为之间的公共信息,所述代码级公共信息是指各目标工具的目标代码之间的公共信息。
4.根据权利要求2或3所述的代码与代码文档的同步方法,其特征在于,通过以下方式确定所述专有信息:
确定各目标信息在各目标工具中的表现行为;
响应于目标信息在不同的目标工具中具有不同的表现行为,将目标信息的表现行为确定为相应的目标工具的专有信息;
响应于目标信息在不同的目标工具中具有相同的表现行为,根据目标信息在不同的目标工具中的调用关系,将目标信息的表现行为确定为被调用的目标工具的专有信息。
5.根据权利要求1所述的代码与代码文档的同步方法,其特征在于,所述从所述同步文件中提取待更新内容,包括:
响应于在调用或运行所述至少一者之前或者响应于到达预设的定时,从所述同步文件中提取所述待更新内容。
6.根据权利要求1所述的代码与代码文档的同步方法,其特征在于,所述代码与代码文档的同步方法在所述目标工具中实现,所述同步文件为JSON格式文件或XML格式文件,所述目标信息包括以下中的至少一者:所述目标代码或所述目标代码文档中的命令选项、命令或选项的帮助信息、命令或选项的相互作用、命令或选项所接受的参数以及功能的生效时间。
7.一种代码与代码文档的同步装置,其特征在于,所述代码与代码文档的同步装置应用于集成电路电子设计自动化软件中的工具,所述代码与代码文档的同步装置包括:
更新单元,被配置为将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件,其中,所述目标代码与所述目标代码文档相对应;
同步单元,被配置为基于更新后的所述同步文件,更新所述目标代码和所述目标代码文档中的至少一者,以使所述目标内容在所述目标代码和所述目标代码文档之间同步;
所述目标内容为需要在所述目标代码和所述目标代码文档之间同步的内容;
所述代码与代码文档的同步装置还包括:
比较单元,被配置为将所述目标内容与所述同步文件中的目标信息比较,得到比较结果,其中,所述目标信息表征所述目标代码与所述目标代码文档共有的信息;
所述更新单元,被配置为响应于所述比较结果表示所述目标内容与所述目标信息匹配,执行所述将目标内容更新到为目标工具下的目标代码和目标代码文档预设的同步文件的步骤,
响应于所述比较结果表示所述目标内容与所述目标信息不匹配,保持所述同步文件不变;
通过以下方式确定所述目标信息:
基于所述目标代码,将所述目标代码中需要写入到所述目标代码文档中的信息确定为所述目标信息;和/或,
基于所述目标代码文档,将所述目标代码文档中需要通过所述目标代码实现的信息确定为所述目标信息;
所述同步单元,被配置为:
从所述同步文件中提取待更新内容,其中,所述待更新内容为:上一次更新所述至少一者的时刻到当前时刻之间同步到所述同步文件中的目标内容,或者所述同步文件中与所述至少一者相关的全部内容;
基于预设的序列化规则,将所述待更新内容序列化为所述至少一者的信息格式,并且确定所述待更新内容在所述至少一者中的嵌入位置;
将序列化的所述待更新内容更新到所述嵌入位置中。
8.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据权利要求1至6中任一项所述的代码与代码文档的同步方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据权利要求1至6中任一项所述的代码与代码文档的同步方法。
10.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现根据权利要求1至6中任一项所述的代码与代码文档的同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410316472.1A CN117908930B (zh) | 2024-03-20 | 2024-03-20 | 代码与代码文档的同步方法、装置、设备、介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410316472.1A CN117908930B (zh) | 2024-03-20 | 2024-03-20 | 代码与代码文档的同步方法、装置、设备、介质及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117908930A CN117908930A (zh) | 2024-04-19 |
CN117908930B true CN117908930B (zh) | 2024-06-04 |
Family
ID=90686194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410316472.1A Active CN117908930B (zh) | 2024-03-20 | 2024-03-20 | 代码与代码文档的同步方法、装置、设备、介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117908930B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107256160A (zh) * | 2017-06-12 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种持续集成中的代码文档生成方法、装置及*** |
CN108268253A (zh) * | 2017-05-05 | 2018-07-10 | 平安科技(深圳)有限公司 | 接口代码生成方法及终端设备 |
CN109634607A (zh) * | 2018-12-13 | 2019-04-16 | 泰康保险集团股份有限公司 | 一种代码自动生成的方法及装置 |
CN110471698A (zh) * | 2019-07-29 | 2019-11-19 | 深圳数位传媒科技有限公司 | Api文档的生成方法与装置、存储介质及计算机设备 |
CN112463210A (zh) * | 2020-12-04 | 2021-03-09 | 上海路人王信息科技有限公司 | 接口文档生成方法、终端设备及计算机可读存储介质 |
CN113900706A (zh) * | 2021-10-13 | 2022-01-07 | 中国银行股份有限公司 | 接口文档的生成方法及装置 |
CN114201207A (zh) * | 2021-11-22 | 2022-03-18 | 北京达佳互联信息技术有限公司 | 一种资源同步方法、装置、电子设备及存储介质 |
CN116339736A (zh) * | 2023-05-29 | 2023-06-27 | 英诺达(成都)电子科技有限公司 | Tcl交互界面的配置方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372689B2 (en) * | 2014-05-28 | 2016-06-21 | International Business Machines Corporation | Synchronizing comments in source code with text documents |
-
2024
- 2024-03-20 CN CN202410316472.1A patent/CN117908930B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108268253A (zh) * | 2017-05-05 | 2018-07-10 | 平安科技(深圳)有限公司 | 接口代码生成方法及终端设备 |
CN107256160A (zh) * | 2017-06-12 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种持续集成中的代码文档生成方法、装置及*** |
CN109634607A (zh) * | 2018-12-13 | 2019-04-16 | 泰康保险集团股份有限公司 | 一种代码自动生成的方法及装置 |
CN110471698A (zh) * | 2019-07-29 | 2019-11-19 | 深圳数位传媒科技有限公司 | Api文档的生成方法与装置、存储介质及计算机设备 |
CN112463210A (zh) * | 2020-12-04 | 2021-03-09 | 上海路人王信息科技有限公司 | 接口文档生成方法、终端设备及计算机可读存储介质 |
CN113900706A (zh) * | 2021-10-13 | 2022-01-07 | 中国银行股份有限公司 | 接口文档的生成方法及装置 |
CN114201207A (zh) * | 2021-11-22 | 2022-03-18 | 北京达佳互联信息技术有限公司 | 一种资源同步方法、装置、电子设备及存储介质 |
CN116339736A (zh) * | 2023-05-29 | 2023-06-27 | 英诺达(成都)电子科技有限公司 | Tcl交互界面的配置方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
Data synchronization protocol in mobile computing environment using SyncML and Huffman coding;Jiao-Long Li等;《2012 International Conference on Wavelet Active Media Technology and Information Processing (ICWAMTIP)》;20130117;第260 - 262页 * |
基于关系模型的代码生成器的设计与实现;彭仁夔;《cnki优秀硕士学位论文全文库 信息科技辑》;20150515(第05期);第I138-410页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117908930A (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11561956B2 (en) | Key pattern management in multi-tenancy database systems | |
US7676492B2 (en) | Migration of database using serialized objects | |
CN106598612B (zh) | 一种数据库中数据表的操作方法及*** | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
CN104090776A (zh) | 一种软件开发方法及*** | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
CN111309734B (zh) | 自动生成表数据的方法及*** | |
CN116821437B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111694612A (zh) | 配置检查方法、装置、计算机***及存储介质 | |
US8359572B2 (en) | Self-describing re-usable software components | |
CN116383542A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
US11314489B1 (en) | Automated authoring of software solutions by first analyzing and resolving anomalies in a data model | |
CN116467975B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116501415B (zh) | 命令执行方法及装置、电子设备、计算机可读存储介质 | |
US8438542B2 (en) | Generating a management pack at program build time | |
KR101552914B1 (ko) | 웹 서버 어플리케이션 프레임워크 장치와 프레임워크를 이용한 웹 어플리케이션 처리 방법 및 이를 구현할 수 있는 컴퓨터로 읽을 수 있는 기록 매체 | |
CN117648257A (zh) | 一种Linux操作***下的Web自动化测试方法及*** | |
CN117908930B (zh) | 代码与代码文档的同步方法、装置、设备、介质及产品 | |
CN111813880B (zh) | 一种国土空间规划项目管理方法、***及存储介质 | |
US11734506B2 (en) | Information processing apparatus and non-transitory computer readable medium storing program | |
EP2972666B1 (en) | Visualization interface for information object system | |
US20210200833A1 (en) | Health diagnostics and analytics for object repositories | |
CN113190463B (zh) | 一种代码测试方法,节点及*** | |
JP2020087087A (ja) | 修正候補特定プログラム | |
CN114296778A (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 |