CN109976731A - 一种PaaS应用代码生成*** - Google Patents
一种PaaS应用代码生成*** Download PDFInfo
- Publication number
- CN109976731A CN109976731A CN201711456457.3A CN201711456457A CN109976731A CN 109976731 A CN109976731 A CN 109976731A CN 201711456457 A CN201711456457 A CN 201711456457A CN 109976731 A CN109976731 A CN 109976731A
- Authority
- CN
- China
- Prior art keywords
- code
- source
- file
- section
- source code
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明是提供一种PaaS应用代码生成***,能够提高应用程序在迁移到智能终端时的效率。为了解决上述问题,具体措施方案如下:生成可运行代码模板,并将多个可运行代码模板生成一个源库;对待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离;将其中的固定代码段保留,并将其中的每一动态代码段分别生成其对应的基于Freemarker模板引擎的变量表达式;利用Freemarker模板引擎以及预生成的可运行代码模板,将固定代码段和根据动态代码段生成的变量表达式,生成可执行代码。
Description
技术领域
本发明为开发一种PaaS应用代码生成***,涉及应用设计领域。
背景技术
PaaS应用代码生成***是集中对源代码实现的每一个程序单元进行测试,检测各个程序单元否正确地实现了规定的功能,以及检查各程序模块的返回值是否正确。单元测试检测每一个控制结构的分支以确保完全覆盖和最大可能的错误检查。JUnit单元测试代码则是指按一定规范进行编写的单元测试代码,对应的JUnit测试工具需要根据该JUnit单元测试代码,才能统计出覆盖率、正确性、数据校验等信息。
代码测试是为了尽可能多的发现程序的错误。而发现错误,是为了修正错误,是需要对程序代码进行修改的。每当程序代码被修改的时候,程序配置的某些方面,例如文档或者数据,也会被修改。
目前,当程序员编写完项目代码后,需要在源代码中手动添加单元测试代码来检验源代码的正确性。这种方法需要修改大量的程序代码,从而工作量大,耗时、重复性工作很大,从而使得编码效率较低。
发明内容
本发明是提供一种PaaS应用代码生成***,能够提高应用程序在迁移到智能终端时的效率。
为了解决上述问题,具体措施方案如下:
生成可运行代码模板,并将多个可运行代码模板生成一个源库;
对待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离;将其中的固定代码段保留,并将其中的每一动态代码段分别生成其对应的基于Freemarker模板引擎的变量表达式;
利用Freemarker模板引擎以及预生成的可运行代码模板,将固定代码段和根据动态代码段生成的变量表达式,生成可执行代码。
其中,所述对待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离,具体包括:
利于预存储的固定代码库对所述待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离,其中所述固定代码库内设有根据历史数据提取出的固定代码段样本。
其中,所述方法中利用开源的eclipse开发平台生成可运行代码模板,所述可运行代码模板是基于HTML5和/或Java代码算法。
本发明的上述技术方案的有益效果如下:上述的技术方案对提高项目建设效率和质量、提升项目建设管理水平起到积极的推动作用,其直接和间接效益如下所述:
1、直接效益分析
通过高质量的代码模板自动生成代码,统一了HTML5和Java等代码的编写标准,这样就解决了因为程序员水平参差不齐导致的代码质量和性能低下的问题,同时也大大提高了开发人员的工作效率,进一步的降低了HTML5移动应用的开发成本。
2、间接效益分析
通过长时间的模板积累,可以期待能形成一套完备的产品模板库,产品代码的开发和维护不再过度依赖高水平的开发人员,开发人员的交接成本就大幅降低,企业也不用担心项目组研发人员过于频繁的流动了。
附图说明
图1为本发明实施例的待迁移的应用程序的源代码的示意图
图2为将图1中的源代码分离为固定代码和业务相关代码后的代码段示意图
具体实施方法
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
具体的,本发明实施例同时将代码分析提取功能和自动身材代码算法结合起来,具体功能如下:
1、代码模板的导入功能:本专利使用开源的eclipse开发平台,编写高质量的可运行代码,然后将其导入到模板库成为一键生成代码的源库;
2、自动代码分析功能:通过源库代码分析算法引擎,算法会分析和剥离源库代码中固定代码片段和动态代码片段,然后将剥离出来的动态代码片段生成各自对应的Freemarker模板语言变量表达式,最后生成完整的Freemarker最终可运行模板代码;
3、模板到正式代码的生成功能:通过使用FreeMarker,结合移动应用开发平台的实际结构和环境,生成对应的最终代码。
其中,自动代码分析可以采用以下方法:
代码分析是自动提取已有代码中的固定代码和业务相关代码,并将固定代码保留,将业务相关代码变为可变变量形式,如下图1。已有代码经过分析提取固定代码和业务代码后,可生成如图2所示的代码。由图1和图2可看出,代码分析和提取的重点在于区分固定代码和业务相关代码,这个功能需要长期的实践和修改才能日趋完善和稳定。
其中,自动代码生成方案可以采用以下方法:
使用FreeMarker,通过引用模板文件(.ftl)与模板数据,自动生成对应的可执行代码。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (4)
1.PaaS应用开发平台的代码生成方法,其特征在于生成可运行代码模板,并将多个可运行代码模板生成一个源库;
对待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离;将其中的固定代码段保留,并将其中的每一动态代码段分别生成其对应的基于Freemarker模板引擎的变量表达式;
利用Freemarker模板引擎以及预生成的可运行代码模板,将固定代码段和根据动态代码段生成的变量表达式,生成可执行代码。
2.PaaS应用开发平台的代码生成方法,其特征在于源代码集导入模块,用于导入源代码集,所述源代码集包括至少一个源代码文件;
源代码文件属性获取模块,用于根据所述源代码集的目录规则,依次获取各个所述源代码文件的操作单元,以及对应于所述操作单元的参数属性,所述各个源代码文件的操作单元是所述各个源代码文件中实现一个功能的一段程序单元,所述操作单元对应的参数属性是所述一段程序单元包括的输入参数/参数类型/返回值;
所述源代码文件属性获取模块包括:
结构分析子模块,用于分析所述源代码文件的结构;
属性获取子模块,用于根据Java语言反射机制对所述源代码文件从上至下进行解释,得到所述源代码文件的多个操作单元,以及每一个操作单元的参数属性;
代码编写规则获取模块,用于在所述源代码文件属性获取模块每获取到一个源代码文件的操作单元和对应的参数属性时,获取预先定义的配置文件中的单元测试代码编写规则;
代码自动生成模块,用于根据所述源代码文件的操作单元、参数属性和所述单元测试代码编写规则,生成对应的单元测试代码;
所述代码自动生成模块包括:
文件生成子模块,用于根据所述源代码文件的目录结构,生成对应目录以及该目录下的空白目标文件;
代码生成子模块,用于根据所述单元测试代码编写规则和所述源代码文件的操作单元和对应的参数属性,在所述空白的目标文件中生成单元测试代码。
3.根据权利要求1所述PaaS应用开发平台的代码生成方法其特征在于,所述对待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离,具体包括:
利于预存储的固定代码库对所述待迁移的应用程序的源代码进行分析以将其中固定代码段和动态代码段进行分离,其中所述固定代码库内设有根据历史数据提取出的固定代码段样本。
4.根据权利要求1所述的PaaS应用开发平台的代码生成方法其特征在于,所述方法中利用开源的eclipse开发平台生成可运行代码模板,所述可运行代码模板是基于HTML5和/或Java代码算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711456457.3A CN109976731A (zh) | 2017-12-28 | 2017-12-28 | 一种PaaS应用代码生成*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711456457.3A CN109976731A (zh) | 2017-12-28 | 2017-12-28 | 一种PaaS应用代码生成*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109976731A true CN109976731A (zh) | 2019-07-05 |
Family
ID=67074309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711456457.3A Pending CN109976731A (zh) | 2017-12-28 | 2017-12-28 | 一种PaaS应用代码生成*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109976731A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531968A (zh) * | 2019-08-20 | 2019-12-03 | 广州华资软件技术有限公司 | 一种自动抽离web前端功能代码生成独立模板的方法 |
-
2017
- 2017-12-28 CN CN201711456457.3A patent/CN109976731A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110531968A (zh) * | 2019-08-20 | 2019-12-03 | 广州华资软件技术有限公司 | 一种自动抽离web前端功能代码生成独立模板的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gligoric et al. | Practical regression test selection with dynamic file dependencies | |
US10162610B2 (en) | Method and apparatus for migration of application source code | |
CN101706753B (zh) | 一种基于Perl的单元测试装置及方法 | |
US20140282373A1 (en) | Automated business rule harvesting with abstract syntax tree transformation | |
CN106649100A (zh) | 一种自动化测试方法及*** | |
CN100541445C (zh) | 一种程序调测***及方法 | |
US7243090B2 (en) | System and method for specification tracking in a Java compatibility testing environment | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
US20080320054A1 (en) | Database and Software Conversion System and Method | |
Gao et al. | Android testing via synthetic symbolic execution | |
CN104035873A (zh) | 测试代码生成方法及生成装置 | |
CN103136107A (zh) | 一种嵌入式程序动态分配内存的变量调试方法 | |
CN101183332A (zh) | 一种根据程序内容自动生成测试数据集的方法和装置 | |
CN102231109A (zh) | 无痕可管理的源代码自动插桩方法 | |
CN103714290A (zh) | 一种软件行为获取、监控与验证方法 | |
CN103294596A (zh) | 一种基于程序不变量的合约式软件故障预警方法 | |
Tufano et al. | Methods2Test: A dataset of focal methods mapped to test cases | |
US11327720B2 (en) | Automated generation of software bindings | |
Dasgupta et al. | A static analysis framework for database applications | |
CN102087629A (zh) | 一种基于Agent嵌入式软件的不变量测试方法与工具 | |
Cristiá et al. | A language for test case refinement in the Test Template Framework | |
CN109976731A (zh) | 一种PaaS应用代码生成*** | |
Singh et al. | Tool for generating code metrics for C# source code using abstract syntax tree technique | |
CN116483700A (zh) | 一种基于反馈机制的api误用检测与修正方法 | |
Hryszko et al. | Bottlenecks in software defect prediction implementation in industrial projects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190705 |