Pysonar2 adalah perpustakaan pengindeks semantik untuk Python, yang dirancang untuk pemrosesan batch basis kode besar. Indeks yang dihasilkan dapat digunakan untuk membangun browser kode dan mesin pencari kode.
Python adalah bahasa yang sangat dinamis. Untuk mencapai akurasi dan kualitas tinggi, Pysonar2 melakukan analisis interprocedural untuk menyimpulkan jenis. Pysonar2 umumnya menghasilkan indeks yang lebih baik daripada IDE Python, sementara pada saat yang sama mengorbankan kemampuan pembaruan real-time IDE.
Perhatikan istilah "tipe inferensi" di sini lebih bersifat deskriptif daripada preskriptif, yang berarti tipe yang disimpulkan menggambarkan bagaimana kode sebenarnya digunakan, tetapi tidak meresepkan bagaimana mereka harus digunakan. Jadi cara kerja inferensi jenis di sini berbeda dari sistem jenis (misalnya sistem Hindley-Milner).
Pysonar2 telah menjadi mesin pengindeksan yang mendasarinya untuk beberapa layanan navigasi kode skala besar, seperti pencarian kode internal Google, SourceGraph.com dan Insight.io (sekarang bagian dari elastis).
mvn package -DskipTests
Untuk merasakan apa yang diproduksi Pysonar2, Anda dapat membangun browser kode sederhana dari pustaka standar Python 2.7 dengan baris perintah berikut:
java -jar target/pysonar-<version>.jar /usr/lib/python2.7 ./html
Ini mungkin memakan waktu beberapa menit tergantung pada mesin Anda. Anda harus menemukan beberapa file HTML interaktif di dalam direktori HTML setelah proses ini. Anda dapat memindahkan mouse pada variabel dan klik pada mereka untuk melompat ke definisi dll.
Perhatikan bahwa ini hanyalah program demo sederhana berdasarkan perpustakaan. Pysonar2 tidak dimaksudkan untuk menjadi alat pengguna akhir. Ini terutama dirancang sebagai perpustakaan untuk IDE Python, alat pengembang, dan mesin pencari kode, sehingga antarmuka mungkin tidak menarik seperti alat pengguna akhir.
Jika Anda memiliki masalah dengan itu, jangan ragu untuk menghubungi saya.
Pysonar2 menggunakan paket ast bawaan CPYTHON untuk menguraikan kode Python, jadi pastikan Anda menginstal python atau python3 dan diinstal oleh variabel lingkungan PATH . Jika Anda memilikinya dengan nama yang berbeda, silakan buat tautan simbol.
Variabel lingkungan PYTHONPATH digunakan untuk menemukan pustaka standar Python. Penting untuk mengarahkannya ke perpustakaan Python yang benar, misalnya
export PYTHONPATH=/usr/lib/python2.7
Jika ini tidak diatur dengan benar, referensi ke kode perpustakaan tidak akan ditemukan.
Anda dipersilakan untuk memberikan kontribusi kode.
Karena teori yang sangat kompleks dan tidak dipublikasikan di belakang Pysonar2, hal-hal mungkin salah dengan mudah dengan perubahan yang tampak tidak bersalah. Jika Anda berharap untuk berkontribusi ke Pysonar2, silakan diskusikan dengan saya terlebih dahulu sebelum membuat perubahan yang signifikan, jika tidak saya mungkin tidak dapat meninjau perubahan Anda.
Untuk verifikasi dasar, Anda dapat menjalankan tes unit. Pysonar2 memiliki kerangka kerja tes dasar. Anda dapat menjalankan tes menggunakan perintah ini:
mvn test
Jika Anda memodifikasi kode atau pengujian, Anda perlu menghasilkan hasil yang diharapkan baru. Jalankan baris perintah ini:
mvn package -DskipTests
java -classpath target/pysonar-<version>.jar org.yinwang.pysonar.TestInference -generate tests
Untuk menulis tes baru, Anda hanya perlu menulis kode Python yang relevan yang menunjukkan perubahan Anda, masukkan ke dalam direktori bernama tests/testname.test (nama direktori tes harus diakhiri dengan ".test"). Silakan lihat direktori tests untuk contoh.
Tolong jangan berharap tes menangkap semua bug. Berhati -hatilah :)
Lisensi Apache 2.0. Lihat file lisensi.