Codechecker adalah infrastruktur analisis statis yang dibangun di atas llvm/clang static analyzer toolchain, menggantikan lingkungan scan-build Linux atau MacOS (OS X).

Lihatlah demo kami yang menunjukkan beberapa hasil analisis proyek open-source!
Mengeksekusi clang-ridy , penganalisa clang statis dengan analisis unit translasi silang, analisis statistik (ketika checker tersedia), CPPCHECK , GCC Static Analyzer dan Facebook Infer Analyzer .
Membuat database kompilasi JSON dengan menyadap proses pembuatan apa pun (misalnya, CodeChecker log -b "make" ).
Secara otomatis menganalisis proyek yang dikompilasi silang GCC: Mendeteksi Konfigurasi GCC atau Kompiler Dentang dan membentuk doa penganalisa Clang yang sesuai.
Analisis tambahan: Hanya file yang diubah dan dependensinya yang perlu dianalisis kembali.
Penindasan positif palsu dengan kemungkinan untuk menambahkan komentar ulasan.
Visualisasi hasil dalam baris perintah atau dalam html statis.
You can store & visualize thousands of analysis reports of many analyzers like Clang Static Analyzer (C/C++), Clang Tidy (C/C++), Facebook Infer (C/C++, Java), Clang Sanitizers (C/C++), Spotbugs (Java), Pylint (Python), Eslint (Javascript) ...
Untuk daftar lengkap, lihat Analisis yang Didukung
Aplikasi Web untuk melihat cacat kode yang ditemukan dengan pengalaman yang ramping dan mudah (dengan PostgreSQL, atau SQLite backend).
Integrasi Gerrit dan GitLab menunjukkan hasil analisis sebagai ulasan GitLab atau Gerrit.
Filterable (nama checker cacat, keparahan, jalur sumber, ...) dan sebanding (menghitung perbedaan antara dua analisis proyek, menunjukkan bug mana yang telah diperbaiki dan mana yang baru diperkenalkan) tampilan hasil.
Mode Diff: Ini menunjukkan daftar bug yang telah diperkenalkan sejak eksekusi penganalisa terakhir Anda.
Hasil dapat dibagikan dengan sesama pengembang, komentar dan sistem tinjauan membantu komunikasi cacat kode.
Komunikasi server-klien berbasis barang bekas yang mudah diimplementasikan digunakan untuk menyimpan dan meminta cacat yang ditemukan.
Dukungan untuk beberapa frontend visualisasi bug, seperti aplikasi web, alat baris perintah dan plugin Eclipse.
Perintah CodeChecker memiliki banyak sub -perintah yang dapat digunakan misalnya untuk mencatat dan menganalisis proyek Anda, mencetak hasilnya atau memulai server web. Untuk daftar lengkap, lihat tabel berikut atau periksa pesan bantuan dari perintah ini ( CodeChecker --help ):
Sub -perintah CodeChecker | Keterangan |
|---|---|
analyze | Jalankan analisis kode yang didukung untuk file yang direkam dalam database kompilasi JSON. |
analyzer-version | Cetak versi paket Codechecker Analyzer yang sedang digunakan. |
analyzers | Daftar yang didukung dan analisis yang tersedia. |
check | Lakukan analisis pada proyek dan hasil cetak ke output standar. |
checkers | Sebutkan pemeriksa yang tersedia untuk analisis kode. |
cmd | Lihat hasil analisis pada server yang sedang berjalan dari baris perintah. |
fixit | Terapkan perbaikan otomatis berdasarkan saran analisis. |
log | Jalankan perintah build, kumpulkan perintah kompilasi yang dieksekusi dan simpan di file JSON. |
parse | Ringkasan analisis cetak dan menghasilkan format yang dapat dibaca manusia. |
server | Mulai dan kelola server web CodeChecker. |
store | Simpan hasil analisis ke database. |
version | Cetak versi paket codechecker yang sedang digunakan. |
web-version | Cetak versi paket server Codechecker yang sedang digunakan. |
Sub -perintah CodeChecker cmd juga memiliki banyak sub -perintah lain yang dapat digunakan untuk mendapatkan data (produk, berjalan, hasil, statistik) dari server Codechecker yang sedang berjalan. Untuk daftar lengkap, lihat tabel berikut atau periksa pesan bantuan dari sub -perintah ini ( CodeChecker cmd --help ):
Sub -perintah CodeChecker cmd | Keterangan |
|---|---|
runs | Sebutkan analisis yang tersedia. |
history | Tampilkan Run History of Multiple Run. |
results | Ringkasan Hasil Analisis Daftar (Temuan) untuk menjalankan yang diberikan. |
diff | Bandingkan dua analisis berjalan dan tunjukkan perbedaannya. |
sum | Tunjukkan statistik pemeriksa. |
token | Akses sub -perintah terkait dengan mengkonfigurasi token akses pribadi yang dikelola oleh server Codechecker. |
del | Hapus analisis berjalan. |
update | Perbarui analisis yang dijalankan. |
suppress | Kelola dan impor penekan laporan pada server Codechecker. |
products | Akses sub -perintah terkait dengan mengkonfigurasi produk yang dikelola oleh server Codechecker. |
components | Akses sub -perintah terkait dengan mengkonfigurasi komponen sumber yang dikelola oleh server Codechecker. |
login | Otentikasi ke dalam server Codechecker yang membutuhkan hak istimewa. |
export | Ekspor Komentar dan Tinjau Status dari Codechecker. |
import | Impor komentar dan tinjau status ke Codechecker. |

Langkah 1 : CodeChecker log menjalankan perintah build yang diberikan dan mencatat langkah -langkah kompilasi yang dieksekusi. Langkah -langkah ini ditulis ke file output (database kompilasi) dalam format JSON.
Langkah 2 : CodeChecker analyze menggunakan database kompilasi JSON yang dibuat sebelumnya untuk melakukan analisis pada proyek, menghasilkan hasil analisis dalam format yang dapat dibaca mesin (PLIST).
Langkah 3 : Pada langkah ini, Anda dapat melakukan banyak hal:
Parse dan cukup mencetak ringkasan dan hasil dari file hasil analisis ( CodeChecker parse ).
Simpan hasilnya ke server Codechecker yang sedang berjalan ( CodeChecker store ).
Bandingkan dua hasil analisis/berjalan untuk menunjukkan hasil yang berbeda antara keduanya ( CodeChecker cmd diff ).
dll.
Untuk informasi lebih lanjut cara menggunakan CodeChecker, lihat Panduan Pengguna kami.
Memulai (How-to dengan contoh)
Panduan Pengguna Analisis
Menghindari atau menekan positif palsu
Konfigurasi Checker dan Static Analyzer
Ketidakcocokan GCC
Menekan positif palsu
Panduan Pengguna Server Web
Panduan Pengguna Web GUI
Baris Perintah dan Ikhtisar Fitur UI Web
Konfigurasi Keamanan
Mengkonfigurasi otentikasi
Mengkonfigurasi otorisasi
Penyebaran
Menyebarkan server menggunakan Docker
Konfigurasi Server
Mengkonfigurasi Penebangan Server
Menyiapkan beberapa repositori codechecker di satu server
Integrasi kontinu (CI)
Codechecker sebagai tindakan github
Menyiapkan Ci Gating dengan Gerrit dan Jenkins
Konfigurasi Basis Data
Panduan Pengaturan Backend Database PostgreSQL
Panduan Peningkatan Skema Codechecker Server dan Skema Database
Codechecker dapat digunakan sebagai alat generik untuk memvisualisasikan hasil penganalisis.
Alat berikut didukung:
| Bahasa | Penganalisa |
|---|---|
| C/C ++ | Penganalisa statis dentang |
| Dentang rapi | |
| Sanitizer dentang | |
| CPPCHECK | |
| Facebook Infer | |
| Coccinelle | |
| SMATCH | |
| Kernel-Doc | |
| Jarang | |
| CPPLINT | |
| C# | Roslynator.dotnet.cli |
| Jawa | Spotbugs |
| Facebook Infer | |
| Python | Pylint |
| Pyflake | |
| Javascript | Eslint |
| Naskah | Tslint |
| Pergi | Golint |
| Penurunan harga | Markdownlint |
| Sphinx |
Untuk detail, lihat dokumentasi Code Analyzers yang didukung dan alat konverter laporan.
Alat berguna yang juga dapat digunakan di luar codechecker.
Build Logger (untuk menghasilkan database kompilasi JSON dari build Anda)
Plist/Sarif ke HTML Converter (untuk menghasilkan file HTML dari file plist atau sarif yang diberikan)
Alat Laporan Konverter (untuk mengonversi hasil analisis dari analisis lain ke format direktori Laporan Codechecker))
Kolektor Unit Terjemahan (untuk mengumpulkan file sumber dari unit terjemahan atau untuk mendapatkan file sumber yang bergantung pada file header yang diberikan)
Laporan Hash Generator (untuk menghasilkan pengidentifikasi hash unik untuk laporan)
Skrip pembantu untuk analisis harian
pipCodechecker tersedia di PYPI dan dapat diinstal dengan perintah berikut:
Pip3 Instal Codechecker
Catatan: Paket ini dapat diinstal pada sistem Linux , OSX dan Windows di mana perintah pip3 tersedia. Pada OSX , intercept-build harus diinstal untuk logging ( CodeChecker log ). Di Windows , logging tidak tersedia.
snap Package ManagerCodechecker tersedia di Snap Store dan dapat diinstal dengan perintah berikut:
sudo snap menginstal codechecker -klasik
CATATAN: Sayangnya, paket SNAP hanya mendukung nama perintah kasus rendah. Untuk alasan ini, Anda perlu menggunakan perintah codechecker alih -alih CodeChecker di mana -mana. Untuk daftar lengkap perintah yang tersedia dalam paket Snap CodeChecker , jalankan snap info codechecker .
Untuk daftar ketergantungan yang terperinci, dan untuk instruksi tentang cara menginstal versi dentang dan dentang yang lebih baru, silakan lihat persyaratan. Perintah berikut digunakan untuk bootstrap codechecker di ubuntu 20.04 lts:
# Pasang dependensi wajib untuk lingkungan pengembangan dan analisis.# Catatan: Clang atau Clang-Tidy dapat berupa versi yang cukup segar, dan tidak perlu# berasal dari manajer paket!# Dalam kasus CPPCHECK, versi minimal yang didukung adalah 1,80. Dalam kasus GCC/STRADS..0.0.0.0. instalasi apt-get clang clang-ridy cppcheck g ++ Build-Essential Curl
GCC-Multilib git python3-dev python3-venv python3-seutuptools# Dalam kasus target venv_dev dan ubuntu 23 linux, instal perpustakaan tambahan: sudo apt-get install libpq-dev# install nodeJs dependency untuk web. Dalam hal Debian/Ubuntu Anda dapat menggunakan perintah# berikut. Untuk informasi lebih lanjut, lihat dokumen resmi:# https://nodejs.org/en/download/package-manager/curl -sl https://deb.nodesource.com/setup_16.x | sudo -e bash -
sudo apt-get install -y nodejs# Check out CodeChecker source code.git clone https://github.com/Ericsson/CodeChecker.git --depth 1 ~/codecheckercd ~/codechecker# Create a Python virtualenv and set it as your environment.# NOTE: if you want to develop CodeChecker, use the `venv_dev` target instead# of `venv`.make venvsource $ pwd/venv/bin/activate# [opsional] Jika Anda ingin menggunakan metode otentikasi eksternal (ldap/pam)# ikuti instruksi dalam# docs/web/authentication.md# external-authentication-methods# Build dan instal paket codechecker. Path = "$ pwd/build/codechecker/bin: $ path" cd ..Catatan :
Secara default, make package akan membangun objek bersama Ldlogger untuk 32bit dan 64bit juga. Jika Anda ingin membangun dan mengemas 64 bit only objek yang dibagikan dan biner ldlogger, Anda dapat mengatur variabel lingkungan BUILD_LOGGER_64_BIT_ONLY ke YES sebelum paket build: BUILD_LOGGER_64_BIT_ONLY=YES make package .
Secara default, make package akan membangun kode UI jika belum dibangun atau kode UI diubah. Jika Anda tidak ingin membuat kode UI, Anda dapat mengatur variabel lingkungan BUILD_UI_DIST untuk NO sebelum paket build: BUILD_UI_DIST=NO make package .
Gunakan make standalone_package alih -alih make package untuk menghindari harus mengaktifkan lingkungan secara manual sebelum menjalankan Codechecker.
Jika Anda telah meningkatkan python sistem Anda ke versi yang lebih baru (misalnya, dari 3.8 ke 3.11 -ini adalah kasus ketika meningkatkan Ubuntu dari 20,04 LTS menjadi 22,04 LTS), lingkungan yang diinstal tidak akan bekerja di luar kotak. Untuk memperbaiki masalah ini, jalankan perintah berikut untuk meningkatkan checker_env Anda juga:
CD ~/codechecker/venv python3 -m venv.
Untuk instruksi instalasi untuk Mac OS X Lihat Dokumentasi Panduan Instalasi Mac OS X.
Untuk menjalankan server Codechecker di Docker, lihat dokumentasi Docker. Anda dapat menemukan wadah server web CodeChecker di hub Docker.
Anda dapat menginstal dan menggunakan ekstensi Codechecker VScode dari Visual Studio Marketplace atau dari Open VSX.
Fitur Utama:
Jalankan analisis codechecker dari editor dan lihat hasilnya secara otomatis.
Menganalisis ulang file saat ini saat disimpan.
Perintah dan Bangun Tugas untuk Menjalankan Codechecker sebagai bagian dari sistem build.
Jelajahi laporan yang ditemukan dan tunjukkan langkah -langkah reproduksi secara langsung dalam kode.
Navigasi di antara langkah -langkah reproduksi.

Untuk informasi lebih lanjut cara menginstal dan menggunakan plugin ini, lihat repositori ekstensi ini.

Codechecker dapat dieksekusi melalui tindakan github yang dapat digunakan kembali untuk proyek Anda! Anda hanya perlu menentukan perintah build, seolah -olah Anda akan menjalankan analisis secara lokal.
Untuk informasi lebih lanjut, lihat tindakan analisis statis CodeChecker di pasar Github Action.
Langkah -langkah ini harus selalu diambil dalam prompt perintah baru yang ingin Anda lakukan.
Sumber ~/codechecker/venv/bin/aktif# Path of codechecker Paket# CATATAN: Lewati baris ini jika Anda ingin selalu menentukan jalur lengkap Codechecker. Jalur Export = ~/codeChecker/build/codechecker/bin: $ PATH# PATH Your Path yang Dibangun. Path>/Build/Bin: $ Path
Analisis proyek Anda dengan perintah check :
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
check akan mencetak ikhtisar masalah yang ditemukan dalam proyek Anda oleh para analisis. Laporan akan disimpan di direktori ./results dalam format XML plist .
Anda dapat memvisualisasikan hasilnya sebagai HTML statis dengan mengeksekusi
CodeChecker parse -e html ./results -o ./reports_html
Halaman indeks akan dihasilkan dengan daftar semua repors di ./reports_html/index.html
Jika Anda memiliki ratusan hasil, Anda mungkin ingin menyimpannya di server web dengan backend database.
Mulailah web Codechecker dan server penyimpanan di terminal lain atau sebagai proses latar belakang. Secara default, itu akan mendengarkan localhost:8001 .
Database SQLite yang berisi laporan akan ditempatkan di direktori ruang kerja Anda ( ~/.codechecker secara default), yang dapat disediakan melalui bendera -w .
CodeChecker server
Simpan laporan analisis Anda ke server untuk dapat menggunakan penampil web.
CodeChecker store ./results -n my-project
Buka penampil Web CodeChecker di browser Anda, dan Anda harus disambut dengan aplikasi web yang menunjukkan hasil analisis kepada Anda.
Arsitektur
Tata letak paket
Dependensi
Antarmuka hemat
Tes paket dan integrasi
Tinjauan tentang infrastruktur codechecker diberikan pada PLDI 2020.
Márton, Gábor dan Krupp, Dániel :
Tool Talk: Codechecker
Tinjauan tingkat tinggi tentang infrastruktur tersedia di antara presentasi konferensi Euro LLVM 2015.
Krupp, Dániel dan Orbán, György dan Horváth, Gábor dan Babati, Bence :
Pengalaman Industri dengan Toolset Analisis Statis Dentang