一种基于接口字段清单的代码生成校核方法与流程

摘要: 本技术实施例涉及计算机,特别涉及一种基于接口字段清单的代码生成校核方法。背景技术:1、伴随着接口开发、低代码开发和自动化代码生成技术的发展,开发人员通常会先去维...
一种基于接口字段清单的代码生成校核方法与流程

本技术实施例涉及计算机,特别涉及一种基于接口字段清单的代码生成校核方法。

背景技术:

1、伴随着接口开发、低代码开发和自动化代码生成技术的发展,开发人员通常会先去维护好接口字段清单,然后再由代码生成工具,依据这个接口字段清单,去生成请求对象、响应对象、字段映射代码、更新对象,以及相应的接口处理代码;接口字段清单,通常包括字段路径、字段类型、字段说明、字段更新语义等信息;对于新增接口、查询接口或者普通的全量修改接口来说,现有的代码生成工具,通常能够依据字段清单去生成字段声明、基础校验注解和对象转换代码,从而去减少重复开发的工作量,提升接口开发的效率。

2、然而,在部分更新接口、资料修改接口、配置修改接口这类增量更新场景当中,一个字段有没有出现在本次的接口请求里,通常都具有独立的业务含义;例如,某一个字段没有出现在请求报文当中的时候,通常表示不去修改原来的字段值;这个字段出现在了请求报文里,并且字段值为空的时候,可能表示要去清空原来的字段值;这个字段出现在了请求报文里,并且字段值是一个具体值的时候,则表示要用这个具体值去覆盖原来的字段值;因此,增量更新字段不仅需要去表达字段值本身,还需要去表达字段有没有出现在本次接口请求里的状态。在现有的代码生成方式当中,虽然可以通过字段包装结构、字段出现标志、请求字段集合或者字段绑定记录等方式,在请求对象层去表达字段出现状态,但是后续生成的字段处理代码、对象映射代码或者更新执行代码,却不一定会继续保留这个字段出现状态。

3、例如,接口字段清单里规定了用户昵称字段是一个增量更新字段,字段未出现就表示不去修改昵称,字段已出现并且字段值为空字符串,则表示要去清空昵称;但是,代码生成工具在请求对象里保留了字段出现状态之后,却有可能在映射或更新执行代码当中,仅仅依据“字段值是否为空”去判断要不要写入这个字段;在这种情况之下,字段出现状态在生成代码的中间处理过程当中,就被字段值状态给替代了,从而导致了显式清空字段的更新意图,没有办法被传递到更新执行位置上去;现有的代码生成校核,通常关注的是字段有没有生成、字段类型是不是一致,或者字段校验规则是不是存在,很难去及时发现字段出现状态在生成代码链路里丢失的问题,这样一来,就有可能导致未传字段被误更新、清空字段的意图被遗漏,或者增量更新语义被破坏。

技术实现思路

1、本技术实施例提供了一种基于接口字段清单的代码生成校核方法,用来识别在依据接口字段清单所生成的代码当中,增量更新字段的字段出现状态,并没有被传递到更新执行位置上的那种情况,从而去降低字段未出现状态和字段已出现状态,在生成代码里被混淆的风险;技术方案如下文所述:

2、一方面,提供了一种基于接口字段清单的代码生成校核方法,所述方法包括:

3、去获取接口字段清单,以及依据这个接口字段清单所生成的代码文件集合;

4、依据所述接口字段清单,去确定出增量更新字段,这里所说的增量更新字段,就是那些需要去区分字段未出现状态和字段已出现状态的字段;

5、从所述代码文件集合当中,去获取所述增量更新字段所对应的状态传递信息,这个状态传递信息,是用来表征所述增量更新字段的字段出现状态,在生成代码里的传递情况的;

6、依据所述状态传递信息,去判断所述增量更新字段的字段出现状态,是不是被传递到了与之相对应的更新执行位置上;

7、响应于所述字段出现状态并没有被传递到所述更新执行位置,就去确定所述增量更新字段存在状态传递异常;

8、依据这个状态传递异常,去生成代码生成校核结果。

9、在一种可能实现的方式当中,所述依据接口字段清单,去确定出增量更新字段,它的过程包括:从接口字段清单当中去获取字段路径和字段更新语义信息;当这个字段更新语义信息表示,字段未出现的时候就不去执行更新,而字段已出现的时候才允许去执行更新时,就把这个字段路径所对应的字段,确定为所述增量更新字段。

10、在一种可能实现的方式当中,所述从代码文件集合当中,去获取增量更新字段所对应的状态传递信息,它的过程包括:依据所述增量更新字段的字段路径,从所述代码文件集合里去确定出与所述增量更新字段相对应的请求对象代码、字段处理代码,还有更新执行代码;依据所述请求对象代码、所述字段处理代码以及所述更新执行代码,去获取所述状态传递信息。

11、在一种可能实现的方式当中,所述依据请求对象代码、字段处理代码和更新执行代码,去获取状态传递信息,它的过程包括:从请求对象代码当中去获取字段出现状态信息;从字段处理代码当中去获取字段状态处理信息;从更新执行代码当中去获取更新执行控制信息;依据所述字段出现状态信息、所述字段状态处理信息,以及所述更新执行控制信息,去生成所述状态传递信息。

12、在一种可能实现的方式当中,所述字段出现状态信息,包括字段包装结构、字段出现标志、请求字段集合、字段绑定记录或状态判断表达式当中的至少一种。

13、在一种可能实现的方式当中,所述更新执行控制信息,包括条件分支、条件参数、更新调用语句、字段赋值语句或更新包装语句当中的至少一种。

14、在一种可能实现的方式当中,所述依据状态传递信息,去判断增量更新字段的字段出现状态是不是被传递到了对应的更新执行位置上,它的过程包括:去判断所述更新执行控制信息,是不是直接使用了所述字段出现状态信息,或者是不是使用了由所述字段出现状态信息传递而得到的中间状态信息;如果所述更新执行控制信息,既没有直接使用所述字段出现状态信息,也没有使用所述中间状态信息,那就去确定所述字段出现状态没有被传递到所述更新执行位置上。

15、在一种可能实现的方式当中,响应于所述字段出现状态,在字段处理的过程当中被字段值状态给替代了,就去确定所述增量更新字段存在状态传递异常;其中,所述字段值状态,包括字段值是否为空、字段值是否为空字符串、字段值是否为空集合、字段值是否等于预设默认值,或者字段值是否等于预设未设置占位值当中的至少一种。

16、在一种可能实现的方式当中,所述代码生成校核结果,包括所述增量更新字段的字段路径、所述状态传递异常的异常类型、所述状态传递异常所对应的代码位置,或者所述状态传递异常所对应的校核说明当中的至少一种。

17、在一种可能实现的方式当中,所述方法还包括:依据所述代码生成校核结果,去生成状态传递修正提示信息;其中,这个状态传递修正提示信息,是用来提示在所述增量更新字段所对应的生成代码当中,去保留字段出现状态,或者是用来提示,把更新执行位置上的更新控制依据,调整为字段出现状态的。

18、本技术实施例所提供的方案,并不仅仅是去校核接口字段清单里的字段,有没有在生成代码里存在,也不仅仅是去校核字段类型或者字段校验规则是不是一致,而是专门针对增量更新字段,去获取字段出现状态在生成代码里的状态传递信息,并且去判断字段出现状态是不是被传递到了对应的更新执行位置上;这样一来,就可以去识别出,请求对象代码里明明已经具备了字段出现状态,但这个字段出现状态却在字段处理或更新执行的过程当中丢失了的情况,从而去减少字段未出现就不更新、字段已出现才允许更新这类更新语义,在生成代码里被破坏的风险。