Update katalog otomatis dan integrasi LSP

Platform Software Defined Vehicle (SDV) berisi banyak katalog VSIDL di seluruh codebase. File CATALOG_UPDATE menyediakan konfigurasi terpusat untuk setiap katalog, sehingga memungkinkan pembaruan otomatis dan integrasi IDE.

Peran file CATALOG_UPDATE

File CATALOG_UPDATE memiliki dua tujuan utama:

  1. Pembaruan otomatis: File ini memungkinkan alat regenerator menemukan dan mengompilasi ulang semua katalog dalam sistem saat kompilator atau dependensi berubah.
  2. Dukungan Language Server Protocol (LSP): Server Bahasa VSIDL menggunakan file ini untuk menemukan root katalog dan mengatasi dependensi. Hal ini memungkinkan fitur seperti "Go to Definition", pelengkapan otomatis, dan validasi real-time untuk jenis yang ditentukan dalam katalog lain.

Mengonfigurasi katalog

Untuk mengaktifkan pembaruan otomatis dan dukungan LSP untuk katalog VSIDL, buat file CATALOG_UPDATE di direktori root katalog. File ini adalah file protobuf teks.

Kolom konfigurasi katalog

  • output_path (string, opsional): Jalur relatif dari root katalog ke direktori tempat kode middleware yang dihasilkan harus ditempatkan.
  • dependency_catalog_paths (string berulang): Daftar jalur relatif ke direktori katalog lainnya. Server LSP menggunakan jalur ini untuk mengatasi jenis eksternal.
  • vsidlc_gen_args (string, opsional): Argumen yang diteruskan ke vsidlc. Server LSP memeriksa argumen ini untuk menerapkan aturan validasi yang benar (misalnya, "--apex").
  • prebuilts_output_path (string, opsional): Jalur untuk prebuilts konfigurasi runtime yang dihasilkan.
  • prebuilts_filegroup (string, opsional): Nama filegroup Soong untuk prebuilts.

Contoh konfigurasi

# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog

output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"

Alasan pembaruan otomatis diperlukan

Mempertahankan kode yang dihasilkan secara manual untuk setiap katalog bermasalah karena beberapa alasan:

  1. Pembaruan kompilator: Saat kompilator diupdate dengan perbaikan bug atau fitur baru, semua kode dan file yang dihasilkan yang tidak tercakup oleh genrule dalam file Android.bp harus diperbarui untuk mempertahankan konsistensi.
  2. Pengelolaan dependensi: Perubahan dalam katalog dasar sering kali mengharuskan katalog hilir dibuat ulang.
  3. Akurasi: Pembaruan otomatis mengurangi risiko kesalahan manusia saat menentukan jalur dan dependensi.

Menjalankan alat regenerator

Alat regenerator menelusuri hierarki direktori yang dimulai dari root SDV dan mencari file yang diberi nama persis CATALOG_UPDATE.

Untuk memperbarui semua katalog yang dikonfigurasi:

  1. Buat alat:

    m regenerator
    
  2. Jalankan alat:

    regenerator
    

    Jika mau, jalankan secara rekursif untuk direktori tertentu: console regenerator --root /path/to/directory

Alat ini memperbarui file yang dihasilkan dan melakukan build penuh (m droid) untuk memverifikasi bahwa perubahan tersebut kompatibel dengan sistem lainnya.