SuperAPI AI 工具集

cpg-analysis

数据与分析

查看项目

更新于 10-16 04:59

技能介绍

cpg-analysis 用于超越抽象语法树的深度代码分析。代码属性图(CPG)= AST + CFG + CDG + DDG + PDG,其中 AST 为抽象语法树,CFG 为控制流图,CDG 为控制依赖图,DDG 为数据依赖图,PDG 为程序依赖图。该技能分为三层:第一层 codebase-memory-mcp 常驻、亚毫秒级,适合符号查找、依赖追踪和影响范围;第二层 Joern CPG 按需、秒级,提供 40 多个查询工具,适合控制流路径、数据流、死代码和复杂重构;第三层 CodeQL 按需、秒级到分钟级,适合过程间污点分析与漏洞检测。完整安全审查建议三层依次使用。

Joern 层(CodeBadger MCP)主要工具包括 generate_cpg、get_cpg_status、run_cpgql_query、get_cpgql_syntax_help、get_cfg、list_methods、get_method_source、list_calls、get_call_graph、get_type_definition。支持 Java、Scala、C/C++、Python、JavaScript、TypeScript、PHP、Ruby、Go、Kotlin、Swift、Lua;不支持 Rust,Rust 用 CodeQL。前提为 Docker(Joern 后端)与 Python 3.10+,安装命令:~/.claude/install-graph-tools.sh --joern。

CodeQL 层主要工具包括 run_query、find_definitions、find_references、get_results。支持 C/C++、C#、Go、Java、Kotlin、JavaScript、TypeScript、Python、Ruby、Swift、Rust。前提为 CodeQL CLI(macOS 可用 brew install codeql),安装命令:~/.claude/install-graph-tools.sh --codeql。

组合工作流:先用第一层确定范围与架构,再用第二层分析控制流与数据流路径,然后用第三层做污点分析,最后汇总并按 Critical、High、Medium、Low 排序。限制与建议:简单符号查找不要使用 Joern/CodeQL;不要在每次提交时全量构建 CPG;查询 Joern 前先确认 CPG 状态;运行 CodeQL 前应有明确安全假设,查询成本较高;非安全的结构查询用 Joern CPGQL。具体配置、安装与查询语法可参照上述 MCP 配置和 CPGQL 示例。