
【免费下载链接】skylosOpen source local-first PR scanner that finds dead code, security bugs, secrets, quality regressions, and AI-code mistakes before merge. For first timers refer to https://duriantaco.github.io/skylos/repo-map/项目地址https://gitcode.com/gh_mirrors/sk/skylos点击查看免费下载Skylos 是一款开源的本地优先 PR 代码扫描器能在合并前发现死代码、安全漏洞、泄露密钥、质量回归和 AI 代码错误。这篇源码阅读指南带你从零看懂 Skylos 代码扫描器的三大核心模块analyzer分析引擎、visitorsAST 访问器与 rules规则引擎即使是 Python 新手也能快速上手源码阅读。 第一步获取 Skylos 源码仓库打开终端执行以下命令克隆仓库并浏览源码git clone https://gitcode.com/gh_mirrors/sk/skylos.git cd skylos建议配合官方仓库地图学习[docs/repo-map/](https://link.gitcode.com/i/1d5e3a78d4ba50a45b9678091ba03407)下有可视化仓库地图帮助你在开始阅读前先建立全局印象。️ 整体架构一眼看懂Skylos 的扫描流程可以概括为一条清晰的数据流水线模块路径角色比喻职责analyzerskylos/analyzer.py大脑调度扫描、发现文件、汇总结果visitorsskylos/visitors/眼睛遍历语法树收集定义与引用rulesskylos/rules/法官执行检查规则产出具体发现三者分工明确analyzer负责扫描什么文件visitors负责看懂代码结构rules负责判定哪里有问题。 analyzer 模块扫描调度的大脑analyzer 的核心是一个 6600 多行的主文件 skylos/analyzer.py重点看三处入口Skylos主类skylos/analyzer.py 整个扫描器的状态容器负责文件发现、模块名解析_module方法把文件路径转成pkg.mod形式的模块名、死代码判定等。Skylos.analyze()方法skylos/analyzer.py 一次完整扫描的总入口按语言分派任务Python 走 AST 分析Go、TypeScript、PHP 等语言各有对应的处理分支。analyze()/proc_file()顶层函数skylos/analyzer.py、skylos/analyzer.py CLI 与外部 API 调用的门面。proc_file()把任务交给 skylos/analysis/file_worker.py 中的process_file()skylos/analysis/file_worker.py由它决定走 Python 解析器还是非 Python 扫描分支。新手阅读建议从analyze()的函数签名看起每个enable_*参数对应一类检测能力enable_secrets、enable_danger、enable_quality、enable_ai_defects这就是你后面会遇到的规则分类。 visitors 模块遍历语法树的眼睛visitors 模块基于 Python 标准库的ast.NodeVisitor实现核心文件基类Visitorskylos/visitors/base.py实现了visit_Import、visit_FunctionDef、visit_If等几十个 AST 节点处理器把代码中的函数、类、变量收集为定义Definitionskylos/visitors/base.py并把每次使用记录为引用ref。死代码检测的本质就是定义没有被任何引用。Definition数据类skylos/visitors/base.py保存一个符号的名字、位置、文件、模块名是死代码与 API 幻觉检测的基础数据结构。场景增强访问器skylos/visitors/test_aware.py测试代码感知、skylos/visitors/framework_aware.pyDjango、Flask 等框架约定感知避免把框架回调误判为死代码。多语言支持skylos/visitors/languages/ 下按语言分目录覆盖 TypeScript、Go、Java、PHP含 Drupal、Rust、C、Kotlin、Shell 等。下面这张 VS Code 中的安全扫描结果截图正是 visitors 遍历语法树后、规则引擎判定问题的最终呈现⚖️ rules 模块产出发现结果的规则引擎所有规则共享一个极简的抽象基类skylos/rules/base.py只有三个要素rule_id规则编号如 SKY-D203、name规则名称、visit_node()在 AST 节点上执行检查。规则由 skylos/core/linter.py 中的LinterVisitor驱动——它按 AST 节点类型把规则分桶逐节点调用是眼睛与法官之间的传令官。规则按职责分目录组织规则目录代表文件检测什么skylos/rules/quality/complexity.py、clones.py圈复杂度、认知复杂度、代码克隆、God Classskylos/rules/danger/calls.py、taint.py危险调用、SQL 注入、命令注入等安全漏洞skylos/rules/secrets.py—硬编码密钥、凭证泄露skylos/rules/ai_defect/phantom_refs.pyAI 生成代码的幻觉不存在的 API、幽灵依赖skylos/rules/sca/vulnerability_scanner.py依赖漏洞SARIF、OSV 元数据所有规则的登记表在 skylos/rules/catalog.pyget_rule_catalog()函数返回完整规则清单——建议把它当作 rules 模块的目录页来读。下图展示了扫描结果在 VS Code 安全面板中的最终形态Security 与 Quality 两类发现被分类列出 三大模块如何协同工作一次完整扫描的协作链路analyzer的analyze()发现项目中的全部源文件skylos/core/file_discovery.py对每个文件调用process_file()visitors构建语法树收集 defs/refs 并计算死代码rules中的LinterVisitor遍历同一棵树每个规则通过visit_node()输出发现findinganalyzer汇总所有发现按置信度HIGH / MEDIUM / LLM only分级交给报告层输出到终端、SARIF 或 CI 注释。️ 新手源码阅读路线第 1 天读 skylos/rules/base.py不足 30 行 skylos/rules/quality/class_size.py理解一条规则的完整写法第 2 天读 skylos/visitors/base.py 的visit_FunctionDef与visit_Import理解定义与引用如何被收集第 3 天从 skylos/analyzer.py 的analyze()顶层函数顺藤摸瓜跑通一次完整扫描流程配套资料docs/ 下有 docs/ai-code-verification.md、docs/agent-verification.md 等专题文档测试用例test/ 目录 400 个是理解每条规则预期行为的最佳教材。总结Skylos 源码的三大模块各司其职analyzer是调度大脑visitors是收集证据的眼睛rules是产出结论的法官。理解了发现文件 → 构建语法树 → 收集定义引用 → 规则判定 → 汇总报告这条主线再深入任何子模块多语言、AI 缺陷检测、SARIF 报告都会事半功倍。赞分享【免费下载链接】skylosOpen source local-first PR scanner that finds dead code, security bugs, secrets, quality regressions, and AI-code mistakes before merge. For first timers refer to https://duriantaco.github.io/skylos/repo-map/项目地址https://gitcode.com/gh_mirrors/sk/skylos点击查看免费下载相关推荐File Viewer社区贡献指南如何参与开源项目开发File Viewer社区贡献指南如何参与开源项目开发 欢迎来到File Viewer开源社区 这是一个面向企业后台、内网和私有化系统的纯前端文件预览组前端UI组件V2Fun终极指南打造你的专属V2EX浏览体验V2Fun终极指南打造你的专属V2EX浏览体验 V2Fun是一款优秀的V2EX第三方客户端原生App设计支持夜间模式让你在手机上获得完美的V2EX社区体Image-Super-Resolution-via-Iterative-Refinement源码解读核心模块深度剖析Image Super Resolution via Iterative Refinement源码解读核心模块深度剖析 Image Super Resolut上一篇一家AI公司是怎么造出来的Auto-Company 五层多智能体系统架构深度拆解下一篇Streamyfin基于 Expo 的现代 Jellyfin 视频客户端——核心功能、实验特性与开发环境搭建全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考