Ini adalah perintah icheck yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS
PROGRAM:
NAMA
icheck - C antarmuka ABI/API pemeriksa
RINGKASAN
memeriksa --kanonifikasi [[--dasar FILE] ...] [PILIHAN] [GCC_OPTIONS] [-] arsip
memeriksa --membandingkan [PILIHAN] file_lama file baru
DESKRIPSI
Alat untuk memeriksa antarmuka C secara statis untuk perubahan API dan ABI. Semua perubahan pada tipe
deklarasi yang dapat menyebabkan perubahan ABI harus dideteksi, bersama dengan sebagian besar perubahan API.
icheck dimaksudkan untuk digunakan dengan perpustakaan, sebagai metode untuk mencegah penyimpangan ABI.
PERINTAH
Kurangi satu set file sumber menjadi file antarmuka kanonik dengan --canonify, lalu bandingkan
dua file antarmuka seperti itu dengan --compare. Jika ada perubahan antarmuka di antara mereka,
icheck akan menjelaskan perubahan dan gagal.
--kanonifikasi [[--dasar FILE] ...] [PILIHAN] [GCC_OPTIONS] [-] arsip
Kanonifikasi file kode sumber (biasanya .h header) untuk dibandingkan nanti dengan
--membandingkan. Biasanya digunakan dengan -o pilihan untuk menyimpan ringkasan ke file.
--membandingkan [PILIHAN] file_lama file baru
Membaca dua file antarmuka kanonik yang dihasilkan dengan --kanonifikasi dan membandingkan
struktur kode sumber dengan perubahan di Antarmuka Publik Aplikasi
(antarmuka pengembang atau API) dan Antarmuka Biner Aplikasi (ABI) yang digunakan untuk
link terhadap program atau perpustakaan lain.
PILIHAN
PERIKSA PILIHAN
-o, --keluaran FILE
Keluarkan output ke FILE, bukan stdout.
--debug N
Buang informasi debug.
--hanya BENDA
Hanya memproses HAL yang diberikan.
--lewati-dari FILE
Lewati hal-hal yang tidak perlu dari FILE.
--lewati-dari-ulang regexp
Lewati hal-hal yang tidak perlu dari file yang cocok dengan ekspresi reguler.
--hanya-dari FILE
Hanya mengambil barang dari FILE.
--hanya-dari-re regexp
Hanya ambil sesuatu dari file yang cocok dengan ekspresi reguler.
GCC_OPTIONS
GCC_OPTIONS diteruskan ke gcc -E
MEMBANTU PILIHAN
--membantu
Tampilkan sinopsis bantuan untuk memeriksa.
CONTOH
Semua file sumber telah diproses sebelumnya dengan gcc, jadi canonify membutuhkan informasi penyertaan yang sama
sebagai kode sumber - ikuti sintaks dari Makefile untuk menyertakan opsi -I untuk cpp (Atau
gcc) sehingga semua header yang diperlukan dapat ditemukan. memeriksa akan dibatalkan jika diperlukan
header tidak dapat ditemukan. Sumber harus dapat dikompilasi; icheck tidak dapat memproses file yang
tidak dapat langsung dikompilasi. Jika header tidak ada #include pernyataan, atau sebaliknya
membutuhkan digunakan dengan cara khusus, maka tidak dapat langsung diproses dengan icheck.
Sebagai gantinya, tulis file rintisan C yang mengatur semuanya dengan tepat dan kemudian #termasuk
tajuk.
memeriksa --kanonifikasi -o ~/icheck/versi lama -Saya/usr/sertakan/foo-2.0 /usr/src/bar/src/foobar.h
Siapkan ringkasan teks dari file foobar.h dan semua file yang disertakan. Ringkasannya adalah
ditulis untuk ~/icheck/versi lama. Ulangi untuk /usr/src/bar1/src/foobar.h - file yang sama
di direktori sumber yang lebih baru, menghasilkan file baru, mis ~/icheck/versi baru.
memeriksa --membandingkan -o ~/icheck/results.txt ~/icheck/versi lama ~/icheck/versi baru
Menulis laporan perbandingan dua file ringkasan. Laporan tersebut menunjukkan semua
perubahan ABI dan/atau API yang ditemukan selama perbandingan.
memeriksa --kanonifikasi -o debian/icheck.canonical -Idebian/foo-dev/usr/include debian/foo-
dev/usr/include/foobar.h
memeriksa --membandingkan debian/icheck.manifest debian/icheck.canonical
Kedua pernyataan ini, termasuk dalam a debian/aturan file, akan menyebabkan paket build menjadi
gagal jika API atau ABI telah berubah dengan cara yang tidak terduga, di mana icheck.manifest adalah salinan dari
antarmuka yang diharapkan, termasuk dalam paket.
Perhatikan bahwa argumen ke --compare sendiri adalah file C yang valid yang telah diproses sebelumnya,
jadi icheck.manifest dapat berisi logika C preprocessor. Ini bisa berguna ketika sebuah paket
mengekspor antarmuka yang berbeda tergantung pada arsitektur host. Dalam hal ini, Anda tidak bisa
ganti dengan salinan baru icheck.canonical saat antarmuka berubah dan Anda perlu
memperbarui manifes. Daripada memperbarui seluruh manifes dengan tangan, letakkan
deskripsi antarmuka tertulis dalam satu file (icheck.statis-manifest) dan kemudian gunakan:
memeriksa --kanonifikasi --dasar debian/icheck.statis-manifest -o debian/icheck.dinamis-
nyata
Terakhir, buat icheck.manifest yang berisi:
#sertakan "icheck.static-manifest"
#sertakan "icheck.dynamic-manifest"
Ini memungkinkan Anda memperbarui beberapa bagian manifes dengan tangan, sementara masih secara otomatis
menghasilkan sisanya.
KELUARAN
icheck menghasilkan deskripsi panjang lebar tentang setiap kemungkinan perubahan API atau ABI, berdasarkan jenis
informasi. Itu tidak menyelidiki kode program yang sebenarnya, jadi mungkin saja
beberapa jenis perubahan yang dideteksinya bukanlah perubahan ABI atau API yang sebenarnya. Namun, ini biasanya
hanya terjadi ketika kode program secara eksplisit ditulis untuk itu. Jika ragu, anggap itu
berubah.
Pada akhirnya, icheck memberikan ringkasan perubahan. Perhatikan bahwa petunjuk di sini adalah
tergantung pada urutan argumen ke --compare: antarmuka yang lebih lama harus didahulukan,
atau arahnya akan sebaliknya. Arti dari berbagai istilah tersebut adalah sebagai
berikut:
ABI ABI kompatibel jika hal-hal dikompilasi terhadap satu versi dari
antarmuka akan berfungsi saat dijalankan menggunakan versi lain.
API API kompatibel jika hal-hal dikompilasi terhadap satu versi dari
antarmuka dapat dikompilasi terhadap yang lain.
kompatibel ke depan
Antarmuka kompatibel ke depan jika ada yang dikompilasi dengan yang lama
versi akan bekerja dengan yang baru. Ini adalah fitur penting untuk nama panggilan
perubahan.
kompatibel ke belakang
Antarmuka kompatibel ke belakang jika ada yang dikompilasi dengan yang baru
versi akan bekerja dengan yang lama. Ini adalah fitur penting untuk shlib
versi perubahan. Jika Anda tidak membangun paket Debian, Anda mungkin tidak melakukannya
peduli tentang perubahan yang tidak kompatibel ke belakang.
Gunakan icheck online menggunakan layanan onworks.net