Proyek SonarSource ini adalah penganalisa kode statis untuk bahasa PHP yang digunakan sebagai ekstensi untuk platform Sonarqube. Ini akan memungkinkan Anda untuk menghasilkan kode bersih yang stabil dan mudah didukung dengan membantu Anda menemukan dan memperbaiki bug, kerentanan, dan bau kode.
Untuk memberikan umpan balik (minta fitur, laporkan bug, dll.) Gunakan forum komunitas sonarsource. Tolong jangan lupa untuk menentukan bahasa (PHP!), Versi plugin, dan versi Sonarqube.
Jika Anda memiliki pertanyaan tentang cara menggunakan plugin (dan dokumen tidak membantu Anda), kami juga mendorong Anda untuk menggunakan Forum Komunitas.
Untuk meminta fitur baru, silakan buat utas baru di Sonarsource Community Forum. Bahkan jika Anda berencana untuk mengimplementasikannya sendiri dan mengirimkannya kembali ke komunitas, silakan mulai utas baru terlebih dahulu untuk memastikan bahwa kami dapat menindaklanjutinya.
Untuk mengirimkan kontribusi, buat permintaan tarik untuk repositori ini. Pastikan Anda mengikuti gaya kode kami dan semua tes lulus.
Jika Anda memiliki ide untuk aturan tetapi Anda tidak yakin bahwa semua orang membutuhkannya, Anda dapat menerapkan aturan khusus yang tersedia hanya untuk Anda.
newIssue tambahan ditambahkan ke antarmuka API CheckContextPHPCustomRulesDefinition telah dihapus, itu sudah usang sejak versi 2.13 (Maret 2018)ParameterTree#type() sudah usang. Gunakan ParameterTree#declaredType() sebagai gantinya.ReturnTypeClauseTree#type() sudah usang. Gunakan ReturnTypeClauseTree#declaredType() sebagai gantinya.ClassPropertyDeclarationTree#typeAnnotation() sudah usang. Gunakan ClassPropertyDeclarationTree#declaredType() sebagai gantinya.CatchBlockTree#variable() sekarang dapat mengembalikan NULL .FunctionCallTree#arguments() sudah usang. Gunakan FunctionCallTree#callArguments() sebagai gantinya.AnonymousClassTree#arguments() sudah usang. Gunakan AnonymousClassTree#callArguments() sebagai gantinya.CallArgumentTree . Pohon ini membungkus ekspresi lulus sebagai argumen sekarang.ThrowExpressionTree .MatchExpressionTree .ParameterTree sekarang memiliki metode visibility .Untuk menjalankan tes secara lokal mengikuti instruksi ini.
Untuk membangun plugin dan menjalankan tes unitnya, jalankan perintah ini dari direktori root proyek:
./gradlew build Untuk menjalankan tes integrasi, Anda perlu membuat file properti seperti yang ditunjukkan di bawah ini, dan mengatur lokasinya dalam variabel lingkungan bernama ORCHESTRATOR_CONFIG_URL .
# version of SonarQube server
sonar.runtimeVersion =9.9Sebelum menjalankan salah satu tes integrasi, pastikan submodules diperiksa:
git submodule update --init"Tes plugin" adalah uji integrasi tambahan yang memverifikasi fitur plugin seperti perhitungan metrik, cakupan, dll. Untuk meluncurkannya:
./gradlew its:plugin:integrationTest"Uji Penguasa" adalah uji integrasi khusus yang meluncurkan analisis basis kode besar, menyimpan masalah yang dibuat oleh plugin dalam file laporan, dan kemudian membandingkan hasil tersebut dengan serangkaian masalah yang diharapkan (disimpan sebagai file JSON). Untuk meluncurkan tes penguasa:
./gradlew its:ruling:integrationTestTes ini memberi Anda kesempatan untuk memeriksa masalah yang dibuat oleh setiap aturan dan memastikan mereka yang Anda harapkan. Anda dapat memeriksa masalah baru/hilang dengan memeriksa URL lokal Sonarqube yang disebutkan dalam log di akhir analisis. Jika semuanya terlihat bagus untuk Anda, Anda dapat menyalin file dengan masalah aktual yang terletak di
sonar-php/its/ruling/target/actual/
ke dalam direktori dengan masalah yang diharapkan
sonar-php/its/ruling/src/test/resources/expected/
Untuk memperbarui semua deskripsi aturan:
./gradlew ruleApiUpdateUntuk mengambil file statis untuk aturan sxxxx dari rspec:
./gradlew ruleApiGenerateRule -Prule=SXXXX Sama untuk cabang RSPEC tertentu ( master secara default):
./gradlew ruleApiGenerateRule -Prule=SXXXX -Pbranch=my-branchHak Cipta 2010-2024 Sonarsource.
Sonarqube Analyzers dirilis setelah 29 November 2024, termasuk perbaikan tambalan untuk versi sebelumnya, diterbitkan di bawah Sonar Source-Available License Version 1 (SSALV1).
Lihat masing -masing file untuk detail yang menentukan lisensi yang berlaku untuk setiap file. File yang tunduk pada SSALV1 akan dicatat di header mereka.