SuperAPI AI 工具集

grepai-languages

编程与开发

查看项目

更新于 10-15 14:13

技能介绍

GrepAI 支持的语言

本技能介绍 GrepAI 在索引和调用图分析方面所支持的编程语言。

何时使用本技能

  • 检查你的语言是否受支持
  • 配置语言相关设置
  • 了解各语言的追踪能力
  • 排查与语言相关的问题

支持语言概览

GrepAI 支持对所有基于文本的文件建立索引,但对特定编程语言提供增强支持。

完整支持(索引 + 追踪)

语言 | 扩展名 | 索引 | 追踪 Go | .go | ✅ | ✅ JavaScript | .js, .jsx | ✅ | ✅ TypeScript | .ts, .tsx | ✅ | ✅ Python | .py | ✅ | ✅ PHP | .php | ✅ | ✅ C | .c, .h | ✅ | ✅ C++ | .cpp, .hpp, .cc, .cxx, .hh | ✅ | ✅ Rust | .rs | ✅ | ✅ Zig | .zig | ✅ | ✅ C# | .cs | ✅ | ✅ Java | .java | ✅ | ✅ Pascal/Delphi | .pas, .dpr | ✅ | ✅

仅索引(不追踪)

语言 | 扩展名 | 索引 | 追踪 Ruby | .rb | ✅ | ❌ Swift | .swift | ✅ | ❌ Kotlin | .kt, .kts | ✅ | ❌ Scala | .scala | ✅ | ❌ Lua | .lua | ✅ | ❌ Shell | .sh, .bash, .zsh | ✅ | ❌ SQL | .sql | ✅ | ❌ HTML | .html, .htm | ✅ | ❌ CSS | .css, .scss, .less | ✅ | ❌ Markdown | .md, .mdx | ✅ | ❌ YAML | .yaml, .yml | ✅ | ❌ JSON | .json | ✅ | ❌ TOML | .toml | ✅ | ❌ XML | .xml | ✅ | ❌

语言配置

启用/禁用追踪语言

.grepai/config.yaml

trace: enabled_languages: - .go - .js - .ts - .jsx - .tsx - .py - .php - .rs - .c - .cpp - .cs - .java

排除特定扩展名

trace: enabled_languages: - .go # 有意排除 JavaScript # - .js

exclude_patterns: - "_test.go" - ".spec.ts"

各语言提示

Go

trace: enabled_languages: - .go exclude_patterns: - "test.go" - "mock.go" - "*_mock.go"

追踪准确度:极佳。Go 的显式语法使追踪非常可靠。

JavaScript/TypeScript

trace: enabled_languages: - .js - .jsx - .ts - .tsx exclude_patterns: - ".test.js" - ".spec.ts" - "*.d.ts" # 类型声明

追踪准确度:良好。某些动态模式可能会被遗漏。

Python

trace: enabled_languages: - .py exclude_patterns: - "test_.py" - "_test.py" - "conftest.py"

追踪准确度:良好。动态导入和装饰器可能会被遗漏。

C/C++

trace: enabled_languages: - .c - .h - .cpp - .hpp - .cc - .cxx exclude_patterns: - "*_test.cpp"

追踪准确度:良好。宏和模板可能影响准确性。

Rust

trace: enabled_languages: - .rs exclude_patterns: - "/tests/" - "/benches/"

追踪准确度:极佳。Rust 的显式语法有助于精确追踪。

PHP

trace: enabled_languages: - .php exclude_patterns: - "*Test.php" - "/tests/"

追踪准确度:良好。魔术方法可能无法被完全追踪。

Java

trace: enabled_languages: - .java exclude_patterns: - "*Test.java" - "/test/"

追踪准确度:良好。基于反射的调用可能会被遗漏。

C#

trace: enabled_languages: - .cs exclude_patterns: - "*Tests.cs" - "/Tests/"

追踪准确度:良好。委托和事件可能只能被部分追踪。

多语言项目

对于包含多种语言的项目:

trace: enabled_languages: # 后端(Go) - .go # 前端(TypeScript) - .ts - .tsx # 共享(SQL 等) - .sql # 仅索引

exclude_patterns: - "_test.go" - ".spec.ts"

索引与追踪说明

索引(语义搜索)

  • 适用于任何文本文件
  • 代码被分块并嵌入
  • 支持语义搜索
  • 无需语言特定解析

追踪(调用图)

  • 需要语言特定解析
  • 提取函数定义和调用
  • 构建调用者/被调用者关系
  • 使用正则(快速)或 tree-sitter(精确)

各语言追踪模式

语言 | 快速模式 | 精确模式 Go | ✅ | ✅ JavaScript | ✅ | ✅ TypeScript | ✅ | ✅ Python | ✅ | ✅ PHP | ✅ | ✅ C/C++ | ✅ | ✅ Rust | ✅ | ✅ Zig | ✅ | ✅ C# | ✅ | ✅ Java | ✅ | ✅ Pascal | ✅ | ⚠️ 有限

添加自定义扩展名

如果你有非标准扩展名,它们会被索引但不会被追踪:

自定义扩展名文件将被索引

ignore:

仅为你不想索引的文件添加模式

  • "*.generated.go"

文件类型检测

GrepAI 使用文件扩展名进行检测。它不使用:

  • Shebang(#!/usr/bin/env python)
  • 文件内容分析
  • .editorconfig

不支持追踪的语言(索引可用,无追踪)

这些语言可以为语义搜索建立索引,但不支持追踪:

Ruby、Swift、Kotlin、Scala、Elixir、Clojure、Haskell、OCaml、F#、Erlang、R、Julia、Perl、Groovy

变通方法:使用语义搜索查找代码,然后手动追踪。

最佳实践

  • 仅启用需要的语言:加快追踪构建速度
  • 排除测试文件:获得更清晰的追踪结果
  • 使用精确模式提高准确性:当追踪结果似乎不完整时
  • 匹配你的技术栈:根据实际使用的语言进行配置

检查语言支持

检查正在索引的内容

grepai status

将按类型显示文件数量

常见问题

❌ 问题:文件未被索引 ✅ 解决方案:检查文件是否在忽略模式中

❌ 问题:某语言缺少追踪 ✅ 解决方案:确保该语言在 enabled_languages 中

❌ 问题:检测到错误的语言 ✅ 解决方案:GrepAI 仅使用扩展名;如有需要请重命名文件

输出格式

语言支持摘要:

📚 GrepAI 语言支持

完整支持(索引 + 追踪):

  • Go (.go)
  • JavaScript (.js, .jsx)
  • TypeScript (.ts, .tsx)
  • Python (.py)
  • PHP (.php)
  • C/C++ (.c, .cpp, .h, .hpp)
  • Rust (.rs)
  • Zig (.zig)
  • C# (.cs)
  • Java (.java)
  • Pascal (.pas, .dpr)

仅索引(无追踪):

  • Ruby、Swift、Kotlin、Scala
  • Shell 脚本、SQL、HTML、CSS
  • 配置文件(YAML、JSON、TOML)
  • 文档(Markdown)

你的配置为以下语言启用了追踪:

  • .go, .js, .ts, .py