ZeusAutoCode代码生成工具(开源)

Posted RedEric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZeusAutoCode代码生成工具(开源)相关的知识,希望对你有一定的参考价值。

ZeusAutoCode代码生成工具

一、简介

Zeus代码生成器是一款自动代码生成工具,旨在快速生成基础的CRUD代码,在此基础上也提供了一些高级功能,做到灵活配置,生成可扩展性强的代码。

后端是基于springboot、freemarker、mybatisplus实现

前端采用vue3、elementplus、electron技术

ZEUS官网

客户端在线下载

后端Gitee 仓库地址 | 前端Gitee 仓库地址

后端GitHub 仓库地址 | 前端GitHub 仓库地址

优势

1. 项目结构可视化,文件树、文件图形化的模板编辑,操作模板更加直观、简洁。
2. 使用Freemarker作为模板引擎,模板中支持Freemarker所有语法,系统提供强大的内置字典。模板操作更加灵活。
3. Zeus可以作为作为mysql、oracle客户端,直接连接内网数据库。
4. 脚本管理。取代Jenkins,轻量化快速更新打包项目。网页查看项目日志等功能。
5. 方便团队开发项目,统一代码风格,规范化代码接口。

客户端支持多开。同一个电脑可以打开多个客户端。可以分别登录管理员和普通用户的账号,管理员修改模板内容。普通用户生成代码。

二、快速使用

  1. 下载客户端

    客户端在线下载

  2. 客户端默认有两个用户

    管理员 admin/admin
    普通用户 test/123456
    

    登录管理员账号,在项目管理处,可以查看 项目,进入项目管理查看目前已有的模板。
    代码生成就是根据这些模板动态根据数据库反向生成代码

  3. 新建配置
    登录普通用户账号

    在配置管理处新建一条配置信息 具体查看6.2 普通用户新建配置

  4. 生成代码

    在取码中心 选择配置、选择表 生成代码 具体查看6.3 普通用户生成代码

  5. 大功告成

    打开配置管理 我们配置的文件路径,会看到生成的代码

三、角色说明

管理员

团队技术leader,负责创建项目、组建项目人员、创建模板、管理用户、版本更新、脚本管理(更新打包)。

普通用户

普通开发人员,(前端后端都可以)通过配置中心配置项目路径和数据库地址。在取码中心快速生成代码、注入项目中

四、快捷键说明

快捷键只在客户端有效

1. 切换后台接口

快捷键CTRL I

zeus代码生成器客户端可以动态切换请求的后台接口地址

2. 打开控制台

快捷键CTRL ALT I

zeus代码生成器客户端,可打开浏览器控制台,查看接口信息

五、功能说明

1. 项目管理(管理员)

  1. 项目在zeus中是一个基础单元。他可以是前端项目,也可以是后端项目。
  2. 代码生成是基于项目来的,项目除了有本身的名称、描述、公开等属性外。还具有高级功能【数据字典】(更灵活的生成模板)。
  3. 如果项目不是公开项目,就可以组建自己的开发团队,加入开发人员,只有开发人员才能看到对应的项目。
  4. 项目中还包括了空间树和模板。空间树是项目的目录结构,有文件和文件夹两种形式。
  5. 文件对应的就是模板,根据模板里的代码生成对应的代码。

1. 项目说明

项目是由管理员定义,可以是前端项目、后端项目等任意形式,他具有项目名称、项目描述、是否公开、创建属性的属性。如果是非公开项目,可以给项目组建人员团队,指定人员能看到此项目。

2. 数据字典

数据字典是模板的高级配置。分为内置字典和自定义字典两种

1. 内置字典

内置字典是系统中自带的字典,在模板中用户可以直接使用字典值获取对应的数据。

内置字典的数据来源是,普通用户在配置中心配置的数据库连接,然后在取码中心选择的表。(表名、描述、字段列表)

用户通过在模板中使用内置字典可以完成基本单表CRUD操作

一级字典二级字典字典释义示例
$table_name表名字model_user
$tableDesc表描述用户表
$TableName表名字首字母大写驼峰ModelUser
$tableName表名字首字母小写驼峰modelUser
$FiledListfiled_name字段名字user_name
$FiledListfiledDesc字段描述用户名称
$FiledListFILEDNAME字段名字首字母大写驼峰UserName
$FiledListfiledName字段名字首字母小写驼峰userName
$FiledListisKey是否主键Y/N
$FiledListnullable是否非空Y/N
$FiledListfiledLen字段长度(数字)20
$FiledListscale精度(数字)2
$FiledListdefaultValue默认值
$FiledListrealType真实字段类型varchar
$FiledListjavaType字段类型转JAVA类型String
$FiledListxmlType字段类型转XML类型VARCHAR

内置字典转化规则

字段类型转XML类型规则字段类型转JAVA类型规则
varchar ==> VARCHARvarchar ==> String
char ==> VARCHARdouble ==> Double
text ==> LONGVARCHARchar ==> String
tinyint ==> TINYINTtext ==> String
bigint ==> BIGINTint ==> Integer
int ==> INTEGERtinyint ==> Integer
numeric ==> DOUBLEbigint ==> Long
decimal ==> FLOATnumeric ==> Double
date ==> DATEdecimal ==> Float
datetime ==> TIMESTAMPdate ==> Date
datetime ==> TIMESTAMP
2. 自定义字典

自定义字典分为三类 字符串、数组、属性列表。

管理员可以在项目中定义该项目的内置字典。在模板中使用内置字典。类似于声明一个插槽。用户在生成代码的时候可以去灵活给插槽赋值。动态生成自己想要的代码。

分类功能
字符串声明字符串类型的自定义字典,主要用来给模板中传如固定字符串。比如包名
数组声明数组型字典,常见的主要用来控制后台的增删改查功能,或者前台的,按钮显示,增删改查功能
属性列表属性列表是对内置字典中的FiledList的筛选。可以用来做前端查询条件、列表数据、编辑数据动态化

3. 空间树

空间树是项目的目录结构,空间树,有文件和文件夹组成,文件是Freemarker模板。

用户通过构建自己项目空间树,动态生成具有此目录结构的代码到项目中来。

空间树的根节点就是项目的根目录。对应普通用户【配置中心】后台项目项目目录中的配置。

1. 新建空间树
  1. 选中项目根节点,右键,即可新建文件或者文件夹。

  2. 然后,点击文件夹》右键》可以修改该文件夹,也可以新增该文件夹下的文件夹和文件

  3. 点击文件,在右侧填充对应的模板信息

  4. 填充好模板后,点击右上角提交代码按钮。即可保存模板

空间树目录要和实际项目目录保持一致

2. 空间树示例

2. 用户管理(管理员)

管理员可以通过用户管理功能创建系统用户

3. 版本更新(管理员)

管理员可以通过版本更新实现客户端的快速更新迭代

版本更新分为线上更新和线下更新两种模式。

实现方式:

通过判断当前版本的版本号(数据库存储)和客户端的版本号(package.json的version属性)是否一致,如果不一致,就拉取最新的版本,下载到本地。重启客户端,完成客户端升级

1. 线下更新

1. 修改前端代码中的package.json中的version属性。
2. 前端代码打包 yarn run package:prod
3. 通过对前端代码进行打包,找到D:\\workspace\\workspace-zeus\\zeus-view\\dist_electron\\win-ia32-unpacked\\resources\\app.asar文件。对此文件进行压缩,压缩成zip包,
4. 在【版本更新】处新建一个版本,版本号和version的版本号一致。上传刚才压缩的zip包
5. 重启客户端,自动拉去最新版本,完成更新

2. 线上更新

1. 修改前端代码中的package.json中的version属性。
2. 提交代码到git上
3. 执行【脚本管理】的 ‘生成器前端打包’脚本
4. 在【版本更新】处新建一个版本,版本号和version的版本号一致。选择线上。url固定填 http://39.101.173.227/zeus/app.zip
5. 重启客户端,自动拉去最新版本,完成更新

3. 前端更新脚本示例

脚本文件 viewcode.sh

#!/bin/bash
#auth eric
#date 2021-07-14
#*********脚本入参#*********
appname=code
#Git源码位置
gitsrc=/home/egn/GitSpace/zeus-view
#nginx位置
nginxsrc=/usr/local/nginx/html/zeus/
#*********脚本入参#*********
cd $gitsrc && git pull origin master && yarn run build:prod
mv -f $gitsrc/dist_electron/win-unpacked/resources/app.asar $nginxsrc
rm -rf $nginxsrc/*.zip
echo '删除历史包'
cd $nginxsrc
zip app.zip app.asar
echo '发布成功'

参考这个脚本,也可以做其他前端项目的自动打包

4. 后台更新脚本示例

脚本文件 code.sh

#!/bin/bash
#auth eric
#date 2021-07-14
#*********脚本入参#*********
appname=code
#Git源码位置
gitsrc=/home/egn/GitSpace/zeus-server
#Docker脚本位置
dockersrc=/home/egn/DockerBuilder/$appname
#*********脚本入参#*********
cd $gitsrc && git pull origin master && mvn install -DskipTests
if [ $? -eq 0 ]; 
then
    echo "maven build success "
else 
    echo -e '\\033[31m[ error ] gradle build faild \\033[0m' && exit 1
fi
\\cp -f $gitsrc/target/*.jar $dockersrc
echo '第二步:查看是否有镜像'
cd $dockersrc
imageresult=$(docker images |grep  $appname | wc -l)
if [ $imageresult -eq 0 ]; 
then
  echo "不存在镜像,需要重新初始化鏡像";
  docker build -t $appname .
  docker run -d --name $appname -p 8003:8003 --restart always $appname
else
  conid=$(docker ps |grep  $appname |awk 'print $1')
  docker cp *.jar $conid:/$appname.jar
  docker restart $conid
  if [ $? -eq 0 ]; 
  then
    echo "发布成功!"
  else 
    echo -e '\\033[31m[ error ] 发布失败 \\033[0m' && exit 1
  fi
fi

参考此脚本,同理可以做后台项目自动打包部署

5. 前后端脚本基础环境搭建

https://blog.csdn.net/qq_35921773/article/details/121694667

4. 脚本管理(管理员)

脚本管理核心是远程连接linux服务器,执行linux命令

用户可以通过该功能实现项目的远程打包、查看日志、服务重启……等操作

5. 网页库(管理员)

网页库是让用户快捷跳转项目常用网址的一个功能。管理员可以通过网页库新建该项目的所有网址,例如Gitlab、禅道、测试环境地址、原型地址……

6. 配置中心(普通用户)

普通用户在配置中心可以根据自己已有的项目,新建该项目的配置信息。

配置信息主要包含:选择项目、项目目录、配置名称、配置描述、数据库连接信息这些属性

用户可见的项目: 公开项目和私有项目用户在项目成员中
数据库连接信息: 客户端作为数据库连接工具,就像是Navicat一样获取当前数据的所有表。可以连接内网数据库
项目目录:生成的代码注入的目录。一般为项目根目录

7. 取码中心(普通用户)

注意:

使用zeus客户端生成代码会强制覆盖本地代码。所以在生成代码前,可以先通过配置详情功能选择要生成的文件

1. 操作步骤

  1. 选择用户在配置中心新建的配置数据
  2. 选择配置数据库加载而来的数据表
  3. 打开【配置详情】页面。可以动态勾选要生成的模板,以及动态填充自定义字典内容。
  4. 点击生成按钮,代码自动注入到 配置中心的用户自建的配置目录中

2. 高级配置

(前端待完善)

配置详情页面

数组类型字典,复选框勾选

属性列表型字典,表格复选框勾选

8. 网页库(普通用户)

用户通过管理员分配的网页库可见权限,点击网页直接打开浏览器跳转到对应的网址

六、使用手册

Tips: 客户端可以多开,可以同时打开两个客户端,一个登录管理员,一个登录普通用户。管理员实时编辑模板,普通用户实时生成代码。

1. 管理员新建项目

管理员可以通过新增按钮创建项目,也可以直接通过复制操作,完全拷贝一个项目

在项目中构建自己的空间树、和模板。详情参考功能说明中的空间树介绍

2. 普通用户新建配置

普通用户在【配置管理】菜单中,新建配置

  1. 选择项目
  2. 设置项目所在的本地目录
  3. 填写数据库连接信息
  4. 测试数据库连接
  5. 保存配置

3. 普通用户生成代码

  1. 用户打开【取码中心】功能
  2. 选择我们在配置中心新建的配置
  3. 选择根据配置信息加载的表
  4. 点击生成代码

4. 高级配置

5. 模板语法

主要参考已有模板,Freemarker的所有语法都支持。

这里列举下常见语法

  1. 遍历数组

    <#list FiledList as field>
    	private $field.javaType $field.filedName;
    </#list>
    
  2. 字符串转数组

    <#assign function_list=FunctionList?split(",") >
    <#list function_list as function>
       <#if (function == 'findPage')>
       </#if>
    </#list>   
    
  3. 遍历数组获取下标

    <#list FiledList as column>
    	<#if (column_index>0)>
    	<#if (column.javaType== 'String')>
    		if(StringUtils.isNotEmpty(body.getParameter().get$FiledList[0].FILEDNAME())) queryWrapper.like("$column.filed_name", body.getParameter().get$FiledList[0].FILEDNAME());
    	</#if>
    	<#if (column.javaType== 'Integer' || column.javaType== 'Double' || column.javaType== 'Float' || column.javaType== 'Long')>
    		if(body.getParameter().get$FiledList[0].FILEDNAME() != null) queryWrapper.eq("$column.filed_name", body.getParameter().get$FiledList[0].FILEDNAME());
    	</#if>
    	</#if>
    </#list>
    

七、常见问题

1. 取码中心生成代码失败

通过管理员登录系统,进入脚本管理,运行查看代码生成器日志脚本,查看模板报错信息。

2. 取码中心生成无反应

  1. zeus客户端软件权限

    1. 桌面选择zeus客户端的logo
    2. 右键》属性》打开文件所在位置》找到zeus.exe 以管理员权限运行
    3. 桌面zeus快捷方式,右键》属性》高级》勾选 以管理员身份运行
    
  2. 切换【配置中心】代码。后台项目目录

    尽量不要选C盘的,C盘权限不足会导致代码无法注入。

  3. 查看日志排查问题

    接口问题排查

    在客户端使用快捷键CTRL ALT I 可以打开控制台,查看生成代码接口,是否返回正常,如果是接口错误,大概率是模板错误

    客户端问题排查

    1. 桌面选择zeus客户端的logo
    2. 右键》属性》打开文件所在位置
    3. 复制当前路径
    4. 使用管理员方式打开CMD,输入刚才输入的路径cd进去
    5. 执行zeus.exe
    6. 查看客户端日志
    

Facebook 开源代码分析工具 —— Mariana Trench

Facebook 的安全团队本周向开源社区揭晓了一个新的开源项目 ——Mariana Trench,这是一个用于识别 Android 和 Java 应用程序漏洞的开源工具,Facebook 此前一直在公司内部使用

 这个以应用安全为重点的工具可以分析数千万行的大型代码库,帮助开发者在代码出现漏洞之前发现漏洞,大大减少交付安全和隐私错误所带来的风险

Mariana Trench 的工作方式:

Mariana Trench 通过分析从 "源"(用户敏感数据,如密码或地理位置)到 "汇"(使用来自于源数据的功能或方法)的信息流而工作。Mariana Trench 是专门为自动发现此类问题而设计的,在大多数情况下,这些问题可能导致严重的隐私和安全漏洞。

Facebook 在该工具的文档中解释道:"默认情况下,Mariana Trench 会分析 dalvik 字节码,因此无论是否访问源代码都可以正常工作。"

开发人员还可以通过添加新的规则和模型生成器来调整和训练它,使其专注于敏感数据不应该出现的领域,从而关注特定的安全和隐私问题。

Mariana Trench 是继 2019 年发布的 Zoncolan 和 2021 年发布的 Pysa 后,Facebook 公开的第三个代码分析工具,虽然 Mariana Trench 的工作原理很像 Zoncolan 和 Pysa,但它们三者针对的领域各不相同,其中 Zoncolan 和 Pysa 分别用于检测和防止 Hack 和 Python 代码中的安全问题,而 Mariana Trench 主要针对 Android 和 Java。

目前 Facebook 已将该项目托管至 Github,为了帮助开发者使用该工具,

Facebook 还在官网发布使用教程

 

以上是关于ZeusAutoCode代码生成工具(开源)的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab搭建详细步骤

重新编译相同的代码会在 VC++ 中产生不同的可执行文件

CentOS安装gitlab服务及创建git仓库实践笔记

CentOS安装gitlab服务及创建git仓库实践笔记

代码审计开源工具推荐

Facebook 开源代码分析工具 —— Mariana Trench