Skip to content

CharliePuth0/parse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Risk Analyzer (Go代码变更风险可视化系统)

基于美团技术团队的代码变更风险可视化系统设计思想,专为 Go 语言项目打造的风险分析与可视化工具。通过静态分析、调用链追踪和风险评估模型,帮助开发者在代码 Review 阶段精确识别潜在风险。

📖 项目概述

本系统旨在解决 Go 项目在快速迭代中面临的代码变更风险问题。通过自动化分析代码变更(Diff),结合 AST 语法树解析和调用关系图(Call Graph),量化评估变更带来的潜在影响,并提供直观的可视化报告。

核心能力

  • 变更感知: 自动识别 Git 提交中的文件、函数及代码行变更。
  • 深度分析: 基于 SSA 的静态调用链分析,精准追踪变更影响范围。
  • 风险评估: 多维度评分模型(圈复杂度、影响面、历史风险、代码特征)。
  • 可视化: 提供调用链路图、风险热力图及详细的分析报告。

✨ 功能特性

模块 功能描述
代码变更感知 集成 Git,支持分支对比、历史版本回溯,精确识别变更函数。
Go 静态分析 解析 AST,构建符号表,识别接口实现、包依赖关系。
特征风险检测 内置多种检测器:Goroutine 泄漏、并发竞争、错误忽略、反射使用等。
风险评估引擎 综合计算复杂度(圈复杂度/认知复杂度)、影响范围和历史数据,生成风险评分。
图数据库存储 使用 Neo4j 存储代码结构图,支持高效的复杂关系查询。
Web 可视化 提供交互式的前端界面,展示变更影响树和风险详情。

🚀 快速开始

前置要求

  • Go: 1.21+
  • Docker & Docker Compose: 用于运行数据库和完整环境
  • Node.js: 18+ (仅前端开发需要)

方式一:Docker Compose 一键启动(推荐)

最简单的部署方式,自动启动 Neo4j 数据库和后端服务。

# 1. 启动服务
docker-compose up -d

# 2. 访问 Web 界面
# 浏览器打开 http://localhost:8080

方式二:本地开发运行

适用于需要调试代码的场景。

  1. 启动 Neo4j (依赖 Docker):

    docker run -d \
      --name neo4j \
      -p 7474:7474 -p 7687:7687 \
      -e NEO4J_AUTH=neo4j/password \
      neo4j:5.15.0
  2. 运行后端服务:

    # 安装依赖
    go mod download
    
    # 启动服务
    make run
  3. 运行前端 (可选): 如果需要修改前端代码:

    cd web
    npm install
    npm run dev

⚙️ 配置说明

系统配置文件位于 configs/config.yaml。主要配置项包括:

  • Server: 监听端口和模式。
  • Neo4j: 数据库连接地址、用户名和密码。
  • Git: 仓库分析的临时存储路径。
  • Analyzer: 分析器的并发数和超时设置。
server:
  port: 8080
  mode: debug

neo4j:
  uri: "bolt://localhost:7687"
  username: "neo4j"
  password: "password"

🏗️ 系统架构

┌─────────────────────────────────────────────────────────┐
│                    应用层 (Web UI)                       │
│  • 风险分析报告   • 影响面评估   • 调用链路可视化           │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│                核心分析层 (Core Analyzer)                 │
│  • Git变更提取   • AST/SSA解析   • 风险特征识别            │
└─────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────┐
│               数据存储层 (Infrastructure)                 │
│  • Neo4j (图数据)   • Git (代码库)   • Cache (缓存)       │
└─────────────────────────────────────────────────────────┘

🤝 贡献指南

欢迎提交 Issue 和 Pull Request 来改进本项目!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 提交 Pull Request

📄 许可证

本项目暂无特定许可证,仅供学习和交流使用。

About

代码风险可视化

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors