重复SQL执行定义XML本地扫描工具
丑话只适合在前面说
工具只做辅助,无法完全规避问题;养成良好的开发规范,不改已经发布的脚本,不建重名文件,比工具更重要;
工具检查的是sql脚本执行定义文件(一般以应用标识.xml的格式命名,下同)的内容,因为只有在这个文件中定义的脚本才会被执行;不会检查datamodel下面真实的sql文件是否重名;
没有经过大面积验证,只能用在一般场景;如果有未覆盖到的、边界的场景导致扫描不准确或者报错,请联系作者改进,感谢~
只关心怎么用?->三、怎么使用?
一、为什么做这件事?
在苍穹平台下,基线(不含)之前的测试环境,sql脚本文件允许重复执行,方便在研产品维护表结构和预置数据;基线(含)之后的测试环境,如基线、预发布、沙箱、灰度等,在升级时,已执行过的同名的脚本文件(即使有修改),不重复执行。(——具体到不同的产品线可能有差异,也可能会调整,以实际为准。)
对于不熟悉该机制的研发人员来讲,容易在脚本执行定义文件中,添加与之前的脚本不同路径、文件名相同的节点,在升级时,脚本中的内容不会被执行,导致表结构缺失、预置数据丢失等问题。
按开头说明的升级机制,此类问题能够最早发现的阶段是基线,处理问题的成本已相对较高;稍有不慎,可能会泄露到沙箱、客户灰度等外部环境,影响不可谓不大。
二、有什么优缺点?
该工具是基于IntelliJ IDEA开发的一款插件,其他IDE无法使用;但基于IDEA大量使用的现状,不难找到能够使用该插件的开发人员;
该工具仅能在开发环境本地使用,比较推荐给项目组DBA做脚本重复定义的检查;无法发布到构建流水线等通用的工具环境中运行;
该工具能够支持单个文件内、多个文件之间定义的重复.sql文件名检查,以sql文件名的维度输出重复次数、所在xml文件路径(跳转文末看效果);待检查xml文件以文本的形式输入,暂不支持文件选择;鉴于此,检查的范围有限,一般给予项目组内负责的多个应用之间做检查,无法支持到跨领域、全领域;
该工具仅支持应用内的sql执行定义xml文件(结构如下示例,DataModel为根节点、SqlScript为脚本定义节点);其他xml不支持;
三、怎么使用?
获取附件repeatnodescanner.zip,解压到任意路径;
进入IDEA设置-Plugins-Install Plugin from Disk...(不同版本可能有差异),选择解压后的jar文件执行安装(可能提示重启IDEA,点击重启生效);
插件路径:Tools-KDPlugins-Repeat Nodes Scanner,点击后弹出窗口;
在上方输入框输入xml完整路径,点击“扫描”按钮,在下方输出检查结果;
存在重复sql文件定义:
不存在重复sql定义:
四、使用效果
最后,直观展示一下效果。
P.S. 仅模拟修改xml SqlScript节点文件名的方式达到不重复的目的,实际上还需要重命名相应路径下的sql文件。
重复SQL执行定义XML本地扫描工具
本文2024-09-16 17:08:28发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-13791.html