Skip to content

--submodule 仅支持目录:扁平结构 C 项目(如 Redis)无法按文件圈定分析范围 #233

Description

@QiaoyiZheng

问题

--submodule 在入口校验处拒绝一切非目录路径:

# main.py:_normalize_submodules
if not os.path.isdir(candidate):
    raise ValueError(f"--submodule path is not a directory: {raw}")

而下游过滤逻辑 src/file_utils.py:_is_under_submodules 本身就是前缀匹配:

return any(norm == sub or norm.startswith(sub + "/") for sub in submodules)

norm == sub 天然兼容文件路径——目录限制只存在于入口校验,放宽几乎不需要动下游。

场景

Redis 这类扁平结构 C 项目:src/ 下 126 个 .c 文件平铺(共 ~19w 行),没有子目录可圈。想只跑 zset(t_zset.c)或 string bitops(bitops.c + t_string.c 等几个文件)范围的抽取/验证,只能整圈 src/,成本和噪声都下不来。

建议

允许 --submodule 接受项目内的文件路径(相对或绝对),语义 = 精确文件集合 ∪ 目录前缀集合;校验逻辑改为「目录或已存在源文件均可」。同时同步 README.md / README_zh.md 中「路径必须是 proj_dir 内部目录」的描述。

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions