CodeGeex可自动提取Python/Java项目中硬编码字符串并生成配置文件:启动服务后,用含语言、路径、指令的提示词调用模型,解析JSON输出去重合并,按语言生成config.py或application.properties,再备份原文件并替换为配置引用。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让 CodeGeex 帮你从 Python 或 Java 项目中自动发现散落在代码各处的硬编码字符串(比如 API 地址、数据库密码、超时时间),并把它们统一提取到 config.yaml 或 application.properties 文件里,避免后续修改时漏改、错改或重复定义。
安装并启动本地 CodeGeex 模型
从 GitHub 克隆官方仓库:git clone https://github.com/THUDM/CodeGeeX.git → 进入目录 → 运行 pip install -e . 安装依赖 → 执行 python -m codegeex serve --port 8080 启动服务。
这一步必须完成,否则后续所有操作都无法调用模型。如果端口被占用,【务必换用 --port 8081 或其他未占端口】,否则请求会直接超时失败。
构造精准提示词触发硬编码识别
向 CodeGeex 发送 POST 请求,body 中的 prompt 必须包含三要素:语言类型、目标文件路径、明确指令。
方法一:用 curl 直接调用
curl -X POST http://localhost:8080/generate -H "Content-Type: application/json" -d '{"prompt": "Python 代码中识别硬编码字符串:分析 ./src/main.py,找出所有未赋值给常量、未从 os.environ 或 config.get() 获取的字符串字面量,特别是 URL、token、timeout、host、password 类关键词附近的值。只输出纯 JSON 列表,每项含 path、line_number、value、suggestion_key"}'
方法二:用 Python 脚本封装调用(推荐)
新建 extract_hardcoded.py,写入 requests 调用逻辑,设置 timeout=30;若返回空或报错,检查 model 是否仍在运行、端口是否连通;【不要跳过 status_code == 200 的判断】,否则可能把错误响应当有效结果写入配置。
解析模型输出并生成配置文件
第一步:接收响应中的 JSON 字符串,用 json.loads() 解析为 Python 列表。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
第二步:按 suggestion_key 去重合并——例如多个 "https://api.example.com/v1" 都建议映射为 API_BASE_URL,只保留第一个出现位置的值。
第三步:根据项目语言选择输出格式:
→ 若项目是 Python,生成 config.py,写入 API_BASE_URL = "https://api.example.com/v1" 等变量;
→ 若项目是 Java Spring Boot,生成 application.properties,写入 app.api.base-url=https://api.example.com/v1;
→ 注意:Java 的 key 必须用小写字母+短横线,不能含下划线或大写字母,否则 Spring 不识别。
替换原代码中的硬编码
第一步:读取原始文件内容,逐行扫描 line_number 匹配项。
第二步:对每个匹配行,用正则替换硬编码字符串为配置引用——Python 替换为 config.API_BASE_URL,Java 替换为 ${app.api.base-url}。
第三步:写回文件前先备份原文件为 main.py.bak;【替换前不备份,出错将无法还原】。
第四步:逐个验证替换后的代码能否正常 import config 并运行,尤其注意字符串拼接场景(如 "https://" + host + ":8080" 应整体替换为单个配置项,不能只替 host)。

















