Alat front-end sederhana yang dapat menjalankan berbagai alat analisis statis dengan membaca informasi yang diperlukan dari compile_commands.json.
Memberikan pemformatan output untuk integrasi ke alat lain, paralerisasi saat dibutuhkan, kemampuan untuk mengganti/mengkonfigurasi ulang bendera kompiler dan pada persyaratan plugin "alat".
Pengembangan saat ini dilakukan terutama pada Windows tetapi harus bekerja pada platform apa pun di mana Anda memiliki Python, lingkungan pengembangan kerja untuk proyek dan penganalisa Anda sendiri. Yang saat ini didukung:
Proyek tersedia di PYPI sebagai distribusi sumber:
pip install processcdb
Karena ProcessCDB juga akan menginstal beberapa dependensi, menggunakan PIPX untuk pemasangan disarankan.
Setelah paket diinstal. Menghasilkan file konfigurasi dengan:
processcdb --dump-config
Ini akan menghasilkan file konfigurasi barebones ke lokasi default (dapat ditimpa nanti dengan --config argumen). Edit file ini ke opsi "biner" bagi penganalisa tersebut untuk menunjuk ke Executable mereka. Di Windows, jangan menghilangkan ekstensi file.
Bantuan Dasar:
processcdb --help
Setelah proses menghasilkan compile_commands.json, Anda dapat menjalankan ProcessCDB dengan alat yang dipilih seperti ini:
processcdb --tool clang-tidy
Ini akan mencoba menemukan file JSON dari direktori kerja saat ini dan menjalankan alat, dalam hal ini Clang-Tidy, terhadap semua file yang dikompilasi dan tidak masuk daftar hitam dalam file COMFIG ProcessCDB atau dalam file konfigurasi sendiri dan menghasilkan output ke output standar. Jika Anda perlu menjalankan alat saat Anda tidak memiliki akses untuk mengubah direktori kerja saat ini, Anda dapat lulus --cdb dan lokasi absolut:
processcdb --tool clang-tidy --cdb D:srcmyprojectbuildcompile_commands.json
Seseorang dapat mengarahkan output alat ke file dengan argumen --output . Perlu dicatat bahwa alat tertentu ( -t ) dapat memberikan argumen lebih lanjut untuk pemrosesan pasca atau tujuan spesifik alat:
processcdb --tool clang-tidy --cdb ~/src/myproject/build/compile_commands.json --output scan.log --xml
Jika ProcessCDB dipanggil tanpa memberikan argumen --config , file konfigurasi default digunakan. Lokasi tergantung pada sistem operasi. Jika Anda perlu menganalisis beberapa proyek dengan berbagai jenis pengaturan atau Anda ingin menganalisis dengan versi yang berbeda dari pemindai tertentu, gunakan beberapa file konfigurasi.
Misalnya, jika Anda memiliki basis kode yang ingin Anda pindai dengan Clang 11.0.0 tetapi proyek Anda benar -benar dikompilasi dengan MSVC Microsoft dan Anda memiliki proyek lain yang dikompilasi dengan dentang: Buat file konfigurasi terpisah untuk MSVC dan Clang dan Invoke ProcessCDB:
processcdb --tool clang-tidy --config location/to/config/msvc17_clang_interop.ini
Jika ProcessCDB dipanggil tanpa memberikan argumen --config , file konfigurasi default digunakan. Untuk menghasilkan file konfigurasi, lulus --dump-config ke ProcessCDB. Untuk menyimpan file konfigurasi default ke file. Entah menangkap output standar atau menyediakan parameter --config .
Setiap alat memiliki bagian terpisah dan setiap bagian dapat dikonfigurasi baik di bagian spesifik alat atau secara default. Minimal. Single Tool Configuratio akan terlihat seperti ini:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
Di sini kami memiliki bagian untuk alat clang-ridy, di mana kami menetapkan binary variabel ke nilai c:llvm-11.0.0binclang-tidy.exe .
Modul Python configparser digunakan untuk memuat/parsing file.
Variabel berikut dibagi di antara alat:
binary - Jalan absolut ke pemindai.file_blacklist - Daftar spesifikasi file yang harus dihilangkan dari pemindaianarg_blacklist - Daftar argumen baris perintah diteruskan ke kompiler yang tidak boleh diteruskan ke alat.arg_additions - Daftar pasangan kunci/nilai. Jika kunci ditemukan di JSON, nilai ditempatkan ke dalam argumen alat.jobs - Proses Nomor Default ProsesCDB atau alat yang dapat digunakan untuk diproses. 0 untuk Deteksi Otomatis.default_includes - Daftar jalur yang harus secara otomatis diteruskan ke alat sebagai termasuk jalur yang mungkin tidak ditentukan dalam compile_commands.jsondefault_args - Daftar argumen yang harus diteruskan ke alat yang tidak disediakan oleh compile_commands.jsonincludes_as_system : Daftar spesifikasi file yang harus dikonversi dari normal -i termasuk ke -isystem termasuk.Setiap opsi konfigurasi yang merupakan daftar dan memungkinkan beberapa nilai, menggunakan titik koma sebagai pemisah item.
Dengan arg_blacklist , orang dapat menghapus argumen baris perintah yang tidak perlu dan arg_addition dapat digunakan untuk menyuntikkan argumen baru. Misalnya, jika sedang menyusun proyek dalam MSVC dan pengecualian diaktifkan, konfigurasi berikut akan memungkinkan alat clang-ridy tetap berfungsi dengan benar:
[clang-tidy]
binary=C:llvm-11.0.0binclang-tidy.exe
arg_blacklist=EHsc
arg_additions=EHsc=-Xclang,-fcxx-exceptions
Seperti yang pertama, ProcessCDB akan melihat bahwa compile_commands.json mungkin memiliki /EHsc argumen, itu akan menambahkan 2 argumen baru -Xclang dan '-fcxx-exceptions' dan kemudian arg_blacklist kemudian akan menghapus asli /EHsc
Alat CPPCheck juga memiliki opsi supression_file yang, jika diperlukan, harus merupakan lokasi absolut file penindasan cppchecks sendiri.
Kemampuan Tidy-Tidy Toool untuk mengonversi logfile ke XML untuk dukungan langsung Jenkins adalah bagian dari Proyek Codechecker dan berlisensi di bawah Apache 2.0
Beranda: https://github.com/rasjani/processcdb masalah: https://github.com/rasjani/processcdb/issues