SCA深度集成:从依赖图谱到智能合规
文章目录
一、依赖图谱分析:deptrac的架构约束
1.1 deptrac核心概念解析
分层架构模型:
依赖约束规则:
# deptrac.yaml
layers:
- name: Presentation
collectors:
- type: className
regex: .*\.controller\..*
- name: Business
collectors:
- type: className
regex: .*\.service\..*
- name: Data
collectors:
- type: className
regex: .*\.repository\..*
ruleset:
Presentation:
- Business
Business:
- Data
Data: []
1.2 架构漂移检测
违规依赖示例:
// 违规:展示层直接访问数据层
package controller
import (
"project/repository" // 违反分层
)
type UserController struct {
userRepo *repository.UserRepo // 直接依赖
}
func (c *UserController) GetUser(id int) {
user := c.userRepo.FindByID(id) // 非法调用
// ...
}
CI检测流水线:
# 安装deptrac
composer require qossmic/deptrac
# 执行架构检查
./vendor/bin/deptrac analyze --config-file=deptrac.yaml
# 输出违规
[ERROR] Presentation must not depend on Data (UserController on UserRepo)
1.3 演进式架构治理
技术债务看板: