SuperAPI AI 工具集

ohos-dev-distributed-cpp-callgraph-analysis

数据与分析

查看项目

更新于 10-16 07:28

技能介绍

用途:在 OpenHarmony C++ 改动中核查调用链完整性,判断目标数据或行为是否经过所有必要边界,适用于数据传播、IPC/proxy/stub、虚函数重写、回调、dlopen/dlsym、宏与生成代码等场景。

主要能力:以 Agent 工作流为唯一判定层,结合 LSP/源码证据、边分类和覆盖矩阵;可选脚本 ohos_callgraph.py 从构建产物中发现候选直接调用边及尽力而为的 vtable/dlopen 线索。脚本输出仅为候选,不能单独据此声称调用链完整。

使用方式:先定义分析目标(入口点、目标数据/行为、包含与排除的边界);按 LSP/clangd、源码搜索、构建图与符号工具、辅助脚本、运行时追踪的顺序发现候选边;对每条边分类(direct、virtual、callback、ipc、dlopen/dlsym、macro/generated、unknown)并建立证据表;对数据传播改动建立修改覆盖矩阵;最后给出 Complete、Incomplete 或 Not provable 结论。

辅助脚本调用示例: python3 "$SCRIPT" <entry-function> --oh-root <openharmony-source-root> --product <product-name> --repo <repo-filter> --depth 4 --skip-prefix "Subsystem::LogHelper" 反向直接调用者加 --reverse。运行前建议估算 bitcode 文件数,超过约 200 个应缩小 --repo 过滤或改用 LSP/源码证据。

限制:脚本不证明所有 C++ 调用,不解析运行时虚分派到唯一重写,不证明回调、函数指针或 std::function 目标,不证明 IPC 参数传播与字段传播;构建产物过期、缺少 bitcode 或工具失败时可能漏边。LSP 需正确的 OpenHarmony 产品编译上下文,缺失或解析错误时应标记为不完整并回退到源码/构建证据。无法检查的边界应标记 unknown。