PCART-tools/PCResolve

GitHub: PCART-tools/PCResolve

PCResolve 是一个 Python 项目级别的静态分析器,用于追踪 API 调用表达式的第三方库来源并提供可解释的溯源信息。

Stars: 0 | Forks: 1

# PCResolve [![PyPI](https://img.shields.io/pypi/v/pcresolve)](https://pypi.org/project/pcresolve/) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT) ## 新闻 - **2026-05-28** - PCResolve 1.0.4 已发布:稳定的溯源 JSON 契约,默认使用 `scope_model="v2"`,完整的 `--json` 输出,扩展的真实项目回归基线,以及 Windows 安全的审计/门控工具。 ## 什么是 PCResolve? PCResolve 是一个 Python 项目级别的第三方库使用来源分析器。它是一个可解释的静态分析工具,用于将 Python API 调用表达式追踪到其最可能的原始库。 它可以回答以下问题: - 这个项目调用了哪些第三方库? - 哪个调用表达式属于 `numpy`、`requests`、`flask`、`sklearn` 或其他顶级库? - 局部符号、返回值、属性、参数或容器元素是如何获得第三方来源的? - 分析在哪些地方是确定的,在哪些地方存在多个可能的来源? PCResolve 专为 CI pipeline、审计工作流、IDE 集成和大规模代码库扫描而设计。它在运行时没有任何第三方依赖,并支持 Python 3.9+。 ## 快速开始 ``` pip install pcresolve pcresolve /path/to/project ``` 获取机器可读的输出: ``` pcresolve /path/to/project --json ``` ## 使用说明 ### CLI ``` pcresolve /path/to/project # human-readable summary pcresolve /path/to/project --json # full provenance JSON pcresolve /path/to/project --json-summary # compact JSON summary pcresolve /path/to/project --explain-library numpy pcresolve /path/to/project --explain-call "np.array" pcresolve /path/to/project --explain-symbol df ``` ### Python API ``` from pcresolve import analyze_project result = analyze_project("/path/to/project") for call in result.all_api_calls: print(call.expression, "->", call.top_library) print("reason:", call.reason) print("confidence:", call.confidence) ``` ## 输出 PCResolve 1.0.4 是第一个稳定的来源契约版本。默认的 scope 模型是 `v2`,`--json` 会返回完整的来源 schema。 主要输出部分包括: | 部分 | 描述 | |---------|-------------| | `all_api_calls` | 包含源码位置、解析出的所有者、原因、置信度、备选项和装饰器证据的每个调用表达式。 | | `all_symbol_provenance` | 导入、变量、参数、返回值、属性、容器项和装饰器的来源记录。 | | `library_usage` | 按库聚合的调用、符号、文件、原因计数和置信度范围。 | | `diagnostics` | 非致命的解析、编码和追踪诊断信息。 | 有关完整的 JSON 契约,请参阅 [docs/output-contract.md](./docs/output-contract.md)。 ## 分析能力 PCResolve 同时追踪 API 调用来源和符号来源。 支持的模式包括: - 直接导入、别名、通配符导入和重新导出; - 通过本地模块进行跨文件符号追踪; - 函数返回值传播和参数绑定; - 类构造、实例属性和方法调用来源; - dict/list/tuple/set 容器项和迭代; - 装饰器调用和 `decorated_by` 证据; - 通过 `alternatives` 报告模糊流,而不是静默猜测。 `top_library` 表示调用表达式中的可调用对象或接收器对象的主要所有者。附加的证据会通过 `alternatives`、`decorated_by` 和符号来源记录等字段单独报告。 ## 验证 1.0.4 版本通过了以下验证: ``` pytest: 557 passed hard baselines: 21 projects, 0 exceeded full audit: 42 real-world projects, 0 crashes, 0 illegal keys ``` 回归门控检查会确保库的键保持干净、golden JSON 输出保持稳定,并且真实项目的基线计数不超过已记录的契约。 ## 局限性 PCResolve 在设计上是静态的。它不执行项目代码,也不对任意的运行时反射、monkey patching、动态导入、描述符或完整的第三方库内部结构进行建模。 当无法确信地确定单一来源时,PCResolve 会报告保守的结果并保留替代证据,而不是选择一个不受支持的库所有者。 ## 文档 - [输出契约](./docs/output-contract.md) - [架构](./docs/architecture.md) - [追踪契约](./docs/trace-contract.md) - [源码语义](./docs/source-semantics.md) - [真实项目验证](./docs/real-project-validation.md) ## 开发 ``` pip install -e . python -m pytest tests/ -v python scripts/diff_v1_v2.py tests/fixtures/tested_projects/ python scripts/audit_tested_projects.py ``` PCResolve 在运行时仅使用 Python 标准库。测试使用 pytest。 ## 许可证 PCResolve 基于 MIT 许可证授权。详情请参阅 [LICENSE](./LICENSE)。
标签:Python, 云安全监控, 安全规则引擎, 无后门, 第三方库溯源, 逆向工具, 静态分析