四种情况,同一个问题
自己写的,人走了
系统是信息部门自己开发、自己维护的,写的人几年前离职,交接只有一份文档。现在要改一个字段,没人敢保证不会弄坏别的地方。
外包做的,厂商不再往来
当年委外开发的系统,验收完就结项,原厂商换了人或已经不接了。手上只有一包源代码,不知道里面长什么样。
客户把系统交给您维护
顾问或开发商接手客户的既有系统,报价前要讲得出「改得动吗、要多久」,却只能靠人工翻代码估。
投标接手前一家
中标后要接续前一家做的系统,交接与验收都要拿得出凭据,口头上的经验谈客户签不下去。
扫完第一天,您手上会有什么
不是一句「风险偏高」,是可以拿去开会、指得到文件的东西。
这套系统长什么样
类图、包图、组件图、调用图、依赖图、数据流图、时序图、部署图——共 20 种架构图,直接从代码生成。可按角色挑要看哪几张(系统分析、系统设计、开发、数据库管理、界面设计、项目管理、合规、决策层共九种),不必一次看完全部。
哪里有问题,在第几行
31 套框架同时对照,每一条不合规项指到具体文件与行号,按风险排序。这份清单就是估工时与排优先级的依据。
用了哪些依赖包、有没有雷
SBOM 列出所有依赖包、许可证条款与已知漏洞,输出 CycloneDX 与 SPDX 两种格式。接手前先知道有没有踩到许可证问题或停止维护的包。
整体健康度,而且说明哪些是估的
八轴风险指纹:安全态势由扫描实测;文档、测试、依赖、技术债四轴目前是系统预设估值,图上标示(估),也不会被当作风险发现项。我们宁可标出来,也不想让您拿一张看起来很满的图去开会。
人的那一面
风险评估问卷补上扫描看不到的部分:系统交接、需求追溯、变更预测、验收标准、沟通成本五个维度。分数来自填答,不是代码扫描。
报告与产出的所有权归您,可直接提供给客户或上级,作为交接、验收或报价的附件。
扫得动什么
这通常是第一个问题,所以直接写清楚。分析分两层:.NET 家族除了语法树,还会跑合规与安全规则;其他 62 个技术家族做语法解析与调用关系,但不跑那些规则。
深度分析(语法树层级)
C#、VB.NET、ASP.NET WebForms(.aspx 与 code-behind)。类继承与依赖关系、API 端点、数据流、业务逻辑与错误处理都在这一层解析。
合规规则扫描的文件
.cs、.vb、.aspx、.sql、.config、.json、.xml、.yml、.yaml、.ps1、.sh、.tf,以及 .md 与 .txt 文档。原有 24 套框架的缺陷清单就是从这些文件扫出来的;AI 治理那 7 套另外看所有支持语言里用到 AI 的地方。.cbl、.pas、.pbl、.prg、.abap 这些扩展名不在清单内,所以老语言源代码里的硬编码密码或 SQL 注入模式,缺陷清单不会列出来——那一层看的是结构与调用关系。
语法解析与调用关系(62 个技术家族)
Java、Python 2/3、PHP 5/7/8、Go、Rust、C++、SAP ABAP、PowerBuilder、VB6、COBOL(85/2002/IBM/Micro Focus/GnuCOBOL)、Delphi、FoxPro、Fortran、Pro*C、传统 ASP(VBScript/JScript)、AngularJS、jQuery、Ember、TypeScript、CoffeeScript、Blazor、Flutter、MAUI、Xamarin、Flash/Flex、Silverlight,以及没有源代码的 .NET DLL(反编译后盘点)。这一层不只是数文件:会抽出程序、类与过程,建出谁调用谁的调用图,记录每段程序的条件、循环与异常处理数量,并标出动态调用点——运行期才决定调用谁的地方,迁移时最容易漏掉的就是它。COBOL 另外会展开 copybook(含 REPLACING)并识别方言。这些结果与 .NET 那一层合并进同一份清单,架构图与影响范围分析一并覆盖。
代码从哪里来
Git 仓库地址(GitHub、GitLab、Bitbucket、Azure DevOps、Gitea 等皆可;内网自建的 Git 服务器需要在配置中开启允许),或直接上传 ZIP,单次上限 2 GB。没有 CI、没有 PR 流程也用得上——把文件夹压成 ZIP 就能扫。
这一层需要在分析引擎(Agent)主机上安装 Python;各技术家族可单独开关。
这些目前不支持
TFVC 与 SVN 不能直接连(可改用 ZIP 上传)、Oracle PL/SQL 包、Excel VBA 宏,以及 PLC 与 OT 控制器程序。与其让您扫到一半才发现,不如先讲。
如果要换掉旧技术
技术栈迁移模块先出一份评估:这套系统现在用什么、换过去要分几个阶段、每个阶段动到哪些文件。自动转换(Codemod)目前以 .NET 为主,例如 WebForms → Razor、EF6 → EF Core、.NET Framework → .NET 9;其他语言提供评估与迁移前后的合规对照,转换本身仍由您的团队执行。
- 迁移前后的合规状态并排比较——证明升级过程没有把安全性做低
- 每个阶段的产出留在文档中心,可下载、可回溯
- 转换结果可直接提为 Pull Request(GitHub、GitLab、Bitbucket、Azure DevOps、Gitea)