Full Workflow:
API Process:
- frontend call from:
/api/scanner/systems/{systemId}/dependency-analyses
in AnalysisController - execute scanner by
HubExecutorService.kt
withScanContext.kt
- SystemOperator.cloneAndBuildAllRepo()
- StranglerScannerExecutor.execute
- SourceCodeScanner, ScaScanner, DiffChangesScanner, GitSourceScanner
- after
SourceCodeScanner
done will call:/api/scanner/systems/{systemId}/dependency-analyses/post-analyse
Relations
- analysis code
- create code basic info:
- “code_class”,
- “code_field”,
- “code_method”,
- “code_annotation”,
- “code_annotation_value”,
- create code relations:
- “code_ref_class_fields”,
- “code_ref_class_methods”,
- “code_ref_class_parent”,
- “code_ref_class_fields”,
- “code_ref_method_callees”,
- “code_ref_class_dependencies”,
- create container (HTTP API) level info:
- “container_demand” for used HTTP API
- “container_resource” for provide HTTP API
- “container_service” container info
- create database from code to sql
- “data_code_database_relation” for MySQL
Data Flow
ArchGuard 可视化工作流
- 对源码进行 AST 分析,得到 Chapi 的类 AST 模型
- 对 AST 中的框架等信息进行识别
- 结合 SCM (版本控制管理) 工具分析变更上下文
- 将数据放入 ArchGuard 后端数据库
ArchGuard 守护工具流
- 对源码进行 AST 分析,得到 Chapi 的类 AST 模型
- 对 AST 中的框架等信息进行识别
- 结合 SCM (版本控制管理) 工具分析变更上下文
- 配置守护规则
- 在持续集成中,运行守护