Skip to content

🐛 fix(codegen): 规范无前缀模板输出路径 #165

Description

@ZhaoXingPeng

版本与环境

  • 受影响路径:generator/codegen_tools.py 的 JavaCodeGenerator._get_output_path()。
  • 运行时:Python 3.10+,Default、MybatisPlus、MybatisPlus-Mixed、sb35-java21 模板路线。
  • 输入:固定 TableInfo 和 packageSuffix,可不连接真实数据库。
  • 安装方式:仓库虚拟环境,PYTHONPATH=src。

问题与预期行为

TemplateConfigManager.get_output_path_mapping() 使用 entity/{packageSuffix}/{className}.java 等模板。packageSuffix 为空时旧路径直接格式化为 entity//Account.java、dao//AccountDao.java 等双分隔符。Windows 可能容忍该字符串,但返回值、日志和下游路径比较会受到污染。

预期行为:格式化后的相对路径移除空路径段;有前缀时保留 entity/sys/Account.java 等层级,文件内容、包声明、文件名和输出目录安全边界不变。

最小复现

使用 className=Account、packageSuffix="" 调用 JavaCodeGenerator._get_output_path()。修复前返回包含连续分隔符的路径;预期返回 entity/Account.java 等规范路径。使用 packageSuffix=sys 时应仍返回 entity/sys/Account.java。

验收标准

  • 四种模板路线的无前缀输出不含重复分隔符。
  • 前缀子包路径和层级保持正确。
  • 实际 generate_from_table 写盘路径与返回值一致。
  • 模板内容、包声明、文件名和输出目录安全边界不变。
  • 相关单元测试、Ruff、格式检查和 git diff --check 通过。

非目标、风险与安全

本 Issue 不改变模板内容、数据库查询、包命名算法或原子 MCP 输出路径合同,不连接真实数据库。风险仅为路径字符串从不规范变为规范;不得把本地凭据或生成物提交到复现中,关联提交可单独回滚。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions