面向 Python 的结构化静态分析
pyscn¶
pyscn 像编译器一样阅读 Python 代码 —— 控制流图、语法树、导入图。这正是它能发现逐行 lint 工具无法发现的问题的原因:return 之后残留的死代码、以不同名字重复的逻辑,以及悄悄形成循环的模块依赖。
检测内容¶
-
不可达代码
基于 CFG 的可达性分析,可发现
return/raise/break/continue之后的死代码,以及恒真分支之后的不可达代码。 -
重复代码
APTED 树编辑距离结合 LSH,支持四种克隆类型:完全相同、重命名、修改、语义相似。
-
复杂度
计算每个函数的圈复杂度,阈值可按项目自行调整。
-
类设计
CBO 耦合度和 LCOM4 内聚度度量,揭示职责过多或过少的类。
-
循环导入
基于 Tarjan 强连通分量算法,在运行时抛出
ImportError之前发现循环依赖。 -
模块结构
对导入图进行 Leiden 聚类,揭示哪些模块真正应该在一起,哪些不该。
安装¶
详见安装指南。
快速开始¶
pyscn analyze . # 完整分析,生成 HTML 报告
pyscn check --select complexity,deadcode src/ # CI 质量门禁
pyscn init # 生成 .pyscn.toml
AI 代理集成¶
安装 Agent Skills,教 Claude Code、Cursor、Codex、Gemini CLI 及其他编码代理何时以及如何运行每种分析。详见 Agent Skills;如需结构化的工具调用,可改用 MCP 服务器。