Proyek ini mencakup alat dan daftar untuk mencari tahu semua bendera peringatan yang dimiliki oleh koleksi kompiler dan gnu kompiler untuk bahasa keluarga C (C, C ++, dan Objective-C). Ini juga menunjukkan semua alias dan bendera peringatan yang diaktifkan bendera tertentu (diawali dengan karakter "#") sehingga Anda dapat dengan mudah melihat bendera mana yang diaktifkan oleh apa. Ada juga bendera peringatan yang tidak melakukan apa pun untuk alasan kompatibilitas atau penyusutan. Mereka sufiks dengan teks "# dummy switch".
Tujuan dari koleksi ini adalah untuk membuatnya lebih mudah untuk menggunakan alat analisis kode statis yang disediakan kompiler.
Dentang termasuk -Weverything
, yang tidak ditampilkan dalam daftar ini, yang memungkinkan semua peringatan. Dokumentasi dentang memberikan referensi untuk beberapa bendera diagnostik dalam dentang.
Jika Anda memerlukan daftar lengkap opsi peringatan GCC, untuk versi GCC tertentu yang Anda miliki, Anda dapat menjalankan GCC dengan gcc --help=warnings
untuk mendapatkan daftar itu. Kalau tidak, beberapa daftar opsi peringatan GCC biasa tersedia di bawah ini:
Salah satu kasus penggunaan untuk daftar semacam ini adalah untuk melihat perbedaan apa yang ada antara kompiler yang berbeda dan versi kompiler. Saya telah menyediakan perbedaan bendera kompiler rudimentary antara dua versi kompiler konsekuen sebagai file diff, tetapi untuk perbedaan yang lebih spesifik Anda perlu menggunakan beberapa program diff (visual), seperti yang ditunjukkan di bawah ini:
Ini menggunakan ANTLR sebagai generator parser dengan beberapa kode python pendukung untuk menguraikan bendera peringatan dari file data opsi kompiler aktual. Persyaratan lain berikut (ditambah dependensi mereka):
Setelah Anda menginstal semua persyaratan dan dapat menjalankan ANTLR dengan perintah antlr4
, cukup gunakan perintah berikut di parsers/
Direktori untuk menghasilkan daftar ini sendiri:
ninja
./parse-clang-diagnostic-groups.py <path-to-clang-source>/include/clang/Basic/DiagnosticGroups.td
./parse-gcc-warning-options.py <path-to-gcc-source>/gcc/{common.opt,c-family/c.opt}
Dan Anda akan mendapatkan daftar semua bendera peringatan individu dan ketergantungan mereka yang ada dalam versi kompiler yang diminta.
Untuk menghasilkan daftar yang difilter, Anda dapat menggunakan sakelar --top-level
dan --unique
.
--top-level
Switch tidak termasuk peringatan yang diaktifkan oleh beberapa sakelar lain dalam daftar.--unique
mencantumkan semua peringatan tanpa informasi apa pun peringatan lain yang mereka aktifkan. Diff pada halaman ini dibuat dari file -file ini. Ada beberapa tes unit yang menguji fungsionalitas tingkat rendah. Anda dapat menjalankan waktu dengan perintah ninja test
di parsers/
direktori untuk memverifikasi bahwa tes unit lulus.
Ketika Parser mendapat perubahan yang memengaruhi pemformatan atau output lain untuk beberapa file daftar peringatan ini perlu diciptakan kembali. Ada skrip process-clang-git.sh
dan process-gcc-git.sh
yang mengambil root repositori git sebagai parameter pertama mereka dan menerapkan semua varian berbeda dari perintah ini untuk membuat file teks akhir.