UDS -> C 代码
用户可以根据其配置的 UDS 服务生成 C 代码。 代码格式取决于用户定义的模板。 
UDS 代码生成
首先,用户需要在 UDS Tester 中启用 UDS 代码生成。

然后用户可以添加模板配置。 每个模板配置包含两个字段:
- 模板路径:用户可以从本地文件系统中选择模板文件。
- 生成路径:用户可以指定生成代码的保存路径。
支持多个模板配置。 用户可以根据需要添加或删除模板配置,每个模板都支持运行时预览功能。
特殊属性
启用 UDS 代码生成时,每个服务都支持添加用户定义的特殊属性以用于 代码生成。 
属性以键值对格式定义。
要求:
- 键不能重复
- 值必须是字符串
模板
UDS 代码生成系统基于 Handlebars.js 模板引擎,并通过大量自定义辅助方法进行增强,以提供强大的代码生成能力。
模板系统概述
模板使用 Handlebars 语法,双花括号 `{{ }}` 用于表达式,`{{# }}{{/ }}` 用于块辅助方法。 系统提供对 UDS 服务数据、配置属性以及丰富的辅助函数集的访问。可用数据上下文
生成代码时,模板可以访问:
- tester:TesterInfo:所有已配置的 UDS 服务及其属性
- project:ProjectInfo:项目信息,类型为:
ts
export interface ProjectInfo {
name: string
path: string
}自定义辅助方法
数学运算
{{add a b}}- 加法{{subtract a b}}- 减法{{multiply a b}}- 乘法{{divide a b}}- 除法{{abs num}}- 绝对值{{ceil num}}- 向上取整{{floor num}}- 向下取整{{modulo a b}}- 取余{{avg array}}- 数组平均值{{sum array}}- 数组求和
字符串操作
{{camelcase str}}- 转换为驼峰命名法{{capitalize str}}- 首字母大写{{uppercase str}}- 转换为大写{{lowercase str}}- 转换为小写{{dashcase str}}- 转换为短横线命名法{{snakecase str}}- 转换为蛇形命名法{{dotcase str}}- 转换为点分命名法{{append str suffix}}- 追加后缀{{prepend str prefix}}- 添加前缀{{trim str}}- 移除空白字符{{replace str old new}}- 替换文本
数组操作
{{first array n}}- 获取前 n 项{{last array n}}- 获取后 n 项{{after array n}}- 获取索引 n 之后的项{{before array n}}- 获取索引 n 之前的项{{join array separator}}- 连接数组元素{{arrayify value}}- 转换为数组{{#forEach array}}...{{/forEach}}- 遍历数组{{#eachIndex array}}...{{/eachIndex}}- 带索引遍历
比较与逻辑
{{eq a b}}- 等于{{ne a b}}- 不等于{{gt a b}}- 大于{{lt a b}}- 小于{{gte a b}}- 大于等于{{lte a b}}- 小于等于{{isString val}}- 检查是否为字符串{{isNumber val}}- 检查是否为数字{{isArray val}}- 检查是否为数组{{isDefined val}}- 检查是否已定义{{isUndefined val}}- 检查是否未定义
实用函数
{{setVar name value}}- 设置变量{{jsonParse str}}- 解析 JSON 字符串{{jsonStringify obj}}- 转换为 JSON{{times n}}...{{/times}}- 重复 n 次{{range start end}}...{{/range}}- 从 start 到 end 循环{{logFile message}}- 调试输出{{error message}}- 抛出错误
模板示例
更复杂示例
请参阅 uds_generate_code 示例。