Mengapa Swift memerlukan lebih daripada carian fail
Swift menyebarkan satu jenis ke banyak tempat. Sesuatu struct diisytiharkan dalam satu fail, mendapat tingkah laku daripada extension dalam tiga fail lain, dan mematuhi protocol yang ditakrifkan dalam sesuatu pakej. Perubahan keadaan tersembunyi dalam sifat terkira dan pemerhati willSet / didSet. Ejen yang membaca satu fail pada satu masa terlepas kebanyakan perkara ini.
Maguyva mengindeks struktur ini, supaya ejen melihat ahli, pematuhan dan pemanggil sesuatu jenis secara serentak.
Apa yang diekstrak oleh Maguyva daripada Swift
Maguyva meliputi .swift. Simbol boleh panggil merangkumi fungsi, init dan deinit, subscript, getter dan setter sifat terkira, serta pemerhati willSet / didSet, supaya kod yang mengubah keadaan boleh dicari sebagai simbol dan tidak hilang di dalam badan sifat.
Ahli yang diisytiharkan dalam struct, enum, protocol dan extension dilayakkan dengan jenis pemiliknya (contohnya CartStore.add), dan ahli yang ditambah dalam extension dikaitkan dengan jenis yang dilanjutkan. Parameter generik, senarai pematuhan protocol dan akhiran ? / ! dibuang daripada nama definisi, jadi carian menggunakan nama asal. Panggilan mengekalkan self. dan pelayak kelas, dan trailing closure dikira dalam ariti panggilan.
Graf merekodkan panggilan, pematuhan protocol, pewarisan, penggantian, penginstansian, atribut, rujukan jenis, bacaan dan tulisan, serta tepi throw.
Contoh gesaan ejen
- “Jenis mana yang mematuhi
PaymentProvider, dan di mana setiap satunya dicipta?” (dependency_search)
- “Siapa yang memanggil
CartStore.add, dan daripada paparan mana?” (find_symbol, kemudian dependency_search arah masuk)
- “Terangkan cara pemberitahuan push sampai ke skrin peti masuk.” (
get_task_context)
Had yang diketahui
- Hanya sumber
.swift dipetakan. Fail Storyboard dan XIB tiada dalam senarai sambungan, jadi sambungan Interface Builder berada di luar graf.
- Panggilan pustaka standard dan Foundation seperti
print, debugPrint, NSLog dan penegasan ditapis daripada hubungan, jadi ia bukan tepi graf. Gunakan text_pattern_search untuknya.
Langkah seterusnya
Sambungkan repositori dengan panduan permulaan pantas, kemudian semak matriks sokongan di halaman keserasian. Jika anda melancarkan produk yang sama di Android, baca panduan Kotlin.