多语言支持

wescode 基于 tree-sitter 解析器和 CKG(代码知识图谱),为主流编程语言提供深度的 AI 辅助能力。不仅支持单语言内的智能分析,还能理解跨语言的代码交互。


支持的编程语言

一级支持

以下语言获得完整的 CKG 索引、调用图分析、CSE 约束检查和全部 AI 辅助功能:

语言CKG 索引调用图符号提取多态分析
Go✅✅✅✅
TypeScript✅✅✅✅
JavaScript✅✅✅✅
Python✅✅✅✅
Java✅✅✅✅
Rust✅✅✅✅
C/C++✅✅✅✅

二级支持

以下语言支持基础的 AI 辅助(代码补全、对话、编辑),但 CKG 深度分析功能有限:

配置与标记语言

以下格式支持语法高亮和基础理解:


语言特定功能

Go

wescode 对 Go 项目提供深度支持:

分析这个 Go 项目的接口实现关系

TypeScript/JavaScript

分析这个 React 组件的 props 和状态管理

Python

检查这个 Django 视图的安全性

Java

分析这个 Spring Boot 项目的依赖注入关系

Rust

检查这段 Rust 代码有没有生命周期问题

跨语言代码理解

全栈项目分析

wescode 能够理解全栈项目中不同语言之间的交互:

分析这个项目的前后端数据流

例如在一个 Go 后端 + TypeScript 前端的项目中:

  1. API 边界:识别后端定义的 API 接口
  2. 类型对齐:检查前后端的数据类型是否匹配
  3. 调用追踪:从前端请求追踪到后端处理
  4. 错误传播:跟踪错误从后端到前端的传播路径

FFI 调用

对于使用 FFI(Foreign Function Interface)的项目:

分析 Python 调用 C 扩展的接口
检查这个 CGo 调用的参数是否正确

RPC/API 边界

检查 gRPC proto 文件和生成的代码是否一致
分析这个 REST API 的 OpenAPI 规范和实现是否匹配

多态分派解析

CKG 多态分析

wescode 的 CKG 能够解析跨语言的多态分派关系,这对于理解大型项目中"点击一个方法,实际执行的是哪个实现"至关重要。

接口多态(Go)

type Handler interface {
    Handle(ctx context.Context, req Request) error
}
找出所有实现了 Handler 接口的类型

CKG 会建立 IMPLEMENTS 关系边,让你一键找到所有实现。

继承多态(Java/TypeScript)

这个抽象方法有哪些具体实现?运行时会调用哪一个?

CKG 建立 OVERRIDES 关系边,追踪方法覆盖链。

动态分派(Python)

对于 Python 等动态语言,CKG 通过类型推断和调用上下文分析提供近似的多态解析:

这个 process 方法在不同子类中的行为分别是什么?

跨包多态

当多态涉及跨包/模块的类型时,CKG 提供三级回退解析:

  1. 精确匹配:类型.方法 精确匹配
  2. 包路径匹配:通过包路径缩小范围
  3. 裸名匹配:全局唯一方法名直接绑定

对于歧义情况,CKG 会展示所有候选实现供开发者选择。


语言检测

自动检测

wescode 自动检测文件的编程语言:

混合语言文件

wescode 支持在同一文件中混合多种语言的场景:

分析这个 HTML 文件中嵌入的 JavaScript 代码

语言切换

对于同一项目中使用多种语言的情况,AI 会根据当前文件自动切换语言上下文:

在 Go 文件中问问题 → AI 用 Go 的思维回答
切换到 TypeScript 文件 → AI 自动切换到 TypeScript 上下文

配置

语言偏好

在 config.yaml 中可以配置语言相关的偏好:

# 优先使用的语言(影响 AI 回复中代码示例的语言)
model:
  preferred_language: go

# CKG 索引排除的文件模式
agent:
  ignore_patterns:
    - "vendor/**"
    - "node_modules/**"
    - "*.min.js"

禁用特定语言的 CKG

如果某些语言的文件不需要深度分析,可以排除以减少索引时间:

agent:
  ckg:
    exclude_languages:
      - sql
      - markdown

注意事项


相关文档