Skip to content

feat(languages): add Go, Java, PHP, Ruby, C/C++ tree-sitter support #198

Description

@Wolfvin

Context

CodeLens saat ini mendukung 7 bahasa via tree-sitter: Python, Rust, JavaScript, TypeScript, TSX, CSS, HTML.

Language support didefinisikan di dua tempat:

  1. scripts/languages/node_types.yaml — registry node type per bahasa (kategori: function, class, import, dll.)
  2. scripts/base_parser.py — base tree-sitter parser yang membaca YAML
  3. requirements.txt — tree-sitter grammar packages

Tujuan

Tambah support untuk 5 bahasa prioritas:

Bahasa Package pip Ekstensi file
Go tree-sitter-go .go
Java tree-sitter-java .java
PHP tree-sitter-php .php
Ruby tree-sitter-ruby .rb
C/C++ tree-sitter-c, tree-sitter-cpp .c, .cpp, .cc, .h, .hpp

Constraint

  • Jangan ubah arsitektur yang sudah ada. Ikuti pattern yang sudah ada di node_types.yaml untuk 7 bahasa existing.
  • Setiap bahasa baru harus punya entry di node_types.yaml dengan kategori minimal: function, class, import, call
  • Tambah grammar packages ke requirements.txt
  • Jangan ubah file di luar scripts/languages/ dan requirements.txt kecuali memang diperlukan untuk wiring
  • Baca CONTEXT.md untuk memahami arsitektur CodeLens sebelum mulai

Source of Truth

  • Pattern node types yang benar: baca scripts/languages/node_types.yaml yang sudah ada
  • Cara parser bekerja: baca scripts/languages/loader.py dan scripts/base_parser.py
  • Node type names per bahasa: cek dokumentasi tree-sitter grammar masing-masing (tersedia di PyPI / GitHub tree-sitter-languages)

Definition of Done

  1. scripts/languages/node_types.yaml punya entry untuk Go, Java, PHP, Ruby, C, C++
  2. Setiap entry punya minimal 4 kategori: function, class, import, call
  3. Package grammar ditambah ke requirements.txt
  4. codelens scan <workspace> tidak crash saat dijalankan di codebase yang mengandung file bahasa baru
  5. codelens search <workspace> "query" return hasil dari file bahasa baru (bukan 0 results karena file diskip)

Checklist Laporan Worker

  • Daftar bahasa yang berhasil ditambah ke node_types.yaml
  • Node types yang dipilih per bahasa (beserta alasan kalau ada trade-off)
  • Packages yang ditambah ke requirements.txt
  • Hasil test scan di codebase yang mengandung minimal satu bahasa baru

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions