首页
/ SmartCode 代码生成工具使用指南

SmartCode 代码生成工具使用指南

2026-03-08 05:18:39作者:胡唯隽

价值定位:如何通过 SmartCode 提升开发效率?

在现代软件开发中,重复代码编写占用了开发者大量时间。SmartCode 作为基于 .NET Core 的代码生成工具,通过模板驱动架构实现"数据源→构建任务→输出"的全流程自动化,支持从数据库表结构生成多语言代码(C#/Java/TypeScript)、配置文件及项目结构。其核心价值在于将开发者从 CRUD 代码、配置编写等重复性劳动中解放,专注于业务逻辑实现。

SmartCode 架构概览

核心组件:SmartCode 的模块化架构如何工作?

SmartCode 采用插件化设计,核心由五大模块构成:

1. 数据源模块(IDataSource)

负责从数据库或文件系统采集元数据,支持 MySQL、PostgreSQL、SQL Server 等主流数据库。核心实现位于 src/SmartCode.Db/DbSource.cs,通过 DbProvider 抽象适配不同数据库类型。

2. 构建任务系统(IBuildTask)

处理代码生成的核心逻辑,包括清理输出目录、多模板渲染、项目构建等任务。典型实现如 src/SmartCode.App/BuildTasks/MultiTemplateBuildTask.cs,支持批量模板处理。

3. 模板引擎(ITemplateEngine)

提供 Razor 和 Handlebars 两种模板解析引擎,位于 src/SmartCode.TemplateEngine/Impl/,支持复杂逻辑渲染与多语言代码生成。

4. 输出系统(IOutput)

负责将生成内容输出到文件系统或其他目标,默认实现 src/SmartCode.App/Outputs/FileOutput.cs 支持目录结构自动创建。

5. 配置系统

采用 YAML/JSON 格式定义生成规则,核心配置文件示例:doc/SmartCode.yml,包含数据源设置、模板映射、输出路径等关键参数。

graph TD
    A[数据源 IDataSource] -->|元数据| B[构建任务 IBuildTask]
    C[模板引擎 ITemplateEngine] -->|渲染结果| B
    B -->|生成内容| D[输出 IOutput]
    E[配置文件] -->|参数| A & B & C & D

场景应用:如何使用 SmartCode 完成数据库代码生成?

以 MySQL 数据库表生成 C# 实体类和 API 控制器为例,完整流程如下:

1. 环境准备

git clone https://gitcode.com/gh_mirrors/smar/SmartCode
cd SmartCode
dotnet build src/SmartCode.CLI/SmartCode.CLI.csproj

2. 配置文件编写

创建 SmartCode.yml 配置文件,定义数据源和生成规则:

Module: SmartSql.Starter
Author: Ahoo Wang
DataSource:
  Name: Db
  Provider: MySql
  ConnectionString: "server=localhost;database=test;uid=root;pwd=123456"
Language: CSharp
TemplateEngine: Razor
Output:
  Type: File
  Path: E:/work/SmartSql-Starter
Build:
  ClearDir:
    Type: Clear
    Parameters:
      Dirs: ["./*"]
  Scaffolding:
    Type: MultiTemplate
    Parameters:
      Templates:
        - Key: "Entity.cshtml"
          Output: 
            Path: "{{Project.Module}}.Entity"
            Name: "{{Table.Name}}Entity"
            Extension: .cs

配置文件示例

3. 执行生成命令

dotnet run --project src/SmartCode.CLI/SmartCode.CLI.csproj -- --config SmartCode.yml

常见配置陷阱与解决方案

1. 数据库连接失败

  • 症状:提示 "Unable to connect to database"
  • 解决方案:检查 ConnectionString 格式,确保数据库服务可访问,验证 src/SmartCode.Db/DbProvider.cs 中是否包含对应数据库驱动

2. 模板渲染错误

  • 症状:生成文件为空或包含模板标签
  • 解决方案:检查模板文件语法,确认模板引擎类型与文件扩展名匹配(Razor 对应 .cshtml,Handlebars 对应 .hbs)

3. 输出路径不存在

  • 症状:提示 "Directory not found"
  • 解决方案:确保 Output.Path 配置使用相对路径,或在 Build 阶段添加 CreateDir 任务

模块扩展建议

1. 自定义数据源

实现 src/SmartCode/IDataSource.cs 接口,可支持 Excel、JSON 等非数据库数据源,参考现有 DbSource 实现。

2. 扩展模板引擎

通过实现 src/SmartCode.TemplateEngine/ITemplateEngine.cs,可集成 Liquid、Mustache 等其他模板引擎。

3. 增加输出目标

扩展 src/SmartCode/IOutput.cs 接口,实现直接输出到 FTP 服务器或代码仓库的功能。

graph LR
    subgraph 扩展点
        A[IDataSource]
        B[ITemplateEngine]
        C[IOutput]
        D[IBuildTask]
    end
    A -->|实现| A1[Excel数据源]
    B -->|实现| B1[Liquid引擎]
    C -->|实现| C1[FTP输出]
    D -->|实现| D1[代码压缩任务]

通过以上架构解析与实践指南,开发者可快速掌握 SmartCode 的核心功能,并根据实际需求进行定制扩展,实现代码生成流程的全自动化。

登录后查看全文
热门项目推荐
相关项目推荐