Menggunakan analisa statis PVS-Studio dalam pengembangan untuk sistem tertanam dalam C dan C ++

Dalam artikel ini, Anda akan belajar cara menjalankan pemeriksaan proyek tertanam dan cara bekerja dengan laporan penganalisa. Alat analisa PVS-Studio mendukung sejumlah kompiler untuk sistem embedded. Dalam versi saat ini, dimungkinkan untuk memeriksa proyek ketika membangun dengan salah satu kompiler berikut untuk Window, Linux, dan macOS:


Instalasi


Prosedur instalasi tergantung pada sistem operasi yang Anda kembangkan. Di Linux, Anda dapat menginstal penganalisis dari repositori atau dari paket instalasi.

Contoh untuk sistem berbasis Debian:

wget -q -O - https://files.viva64.com/etc/pubkey.txt | sudo apt-key add - sudo wget -O /etc/apt/sources.list.d/viva64.list \ https://files.viva64.com/etc/viva64.list sudo apt update sudo apt install pvs-studio 

atau

 sudo gdebi pvs-studio-VERSION.deb 

Untuk macOS, instalasi dan pembaruan dapat dilakukan dari Homebrew :

 brew install viva64/pvs-studio/pvs-studio brew upgrade pvs-studio 

Opsi kedua adalah menginstal paket dari dmg atau membongkar secara manual dari arsip.

Di bawah Windows, instalasi dilakukan menggunakan installer:


Anda dapat mengunduh paket instalasi untuk semua sistem yang didukung dan, jika perlu, meminta kunci percobaan pada halaman " Unduh dan coba PVS-Studio ".

Setelah instalasi, masukkan kunci lisensi. Anda dapat menemukan informasi tentang cara melakukan ini pada platform yang berbeda, pada halaman dokumentasi " Cara memasukkan lisensi PVS-Studio, dan apa yang harus dilakukan selanjutnya ."

Verifikasi Proyek


Verifikasi proyek untuk sistem tertanam dapat dilakukan dengan cara yang sama seperti dalam kasus pengembangan di bawah Windows, Linux dan macOS.

Opsi peluncuran untuk Linux dibahas dalam artikel " Memperkenalkan penganalisa statis PVS-Studio ketika mengembangkan program C ++ di lingkungan Linux ". Ingatlah bahwa sejak kompilasi silang digunakan untuk membangun di bawah embedded, dan nama kompiler mungkin tidak standar, Anda mungkin perlu menentukannya saat menganalisis proyek. Untuk melakukan ini, gunakan opsi baris perintah –compiler atau –c :

 pvs-studio-analyzer analyze -c MyCompiler 

Gunakan parameter ini ketika penganalisis tidak dapat menentukan jenis kompiler yang digunakan, yaitu, ketika kesalahan "Tidak ada unit kompilasi ditemukan" dikeluarkan.

Ketika mengkompilasi silang, karena platform target berbeda dari yang di mana perakitan berlangsung, bersama dengan kompiler Anda mungkin perlu menentukan platform target menggunakan parameter --platform , serta jenis preprocessor ( --preprosesor ).

Platform yang didukung: win32, x64, linux32, linux64, macos, arm.

Preprosesor yang didukung: gcc, dentang, keil.

Secara default, Linux memilih platform linux64 dan preprosesor gcc .

Jika Anda menggunakan Windows, Anda dapat memeriksa proyek dalam mode pemantauan kompilasi. Untuk melakukan ini, jalankan utilitas " C and C ++ Compiler Monitoring UI ", yang diinstal dengan penganalisis. Untuk memulai pemantauan, buka menu Alat dan klik Analisis File Anda ... Dialog terbuka:


Klik tombol " Mulai Pemantauan " dan jalankan build. Setelah selesai, klik tombol " Stop Monitoring " di kotak dialog di sudut kanan bawah layar:


Hasil pengujian dapat dilihat di jendela utama utilitas " C dan C ++ Compiler Monitoring UI ".

Anda juga dapat menjalankan analisis dari baris perintah. Untuk ini, utilitas CLMonitor digunakan. Anda dapat mulai memantau dengan perintah:

 CLMonitor.exe monitor 

Setelah perakitan selesai, Anda harus menjalankan utilitas dalam mode analisis:

 CLMonitor.exe analyze -l "<path>\out.plog" 

Penganalisa akan memeriksa proyek dan menyimpan hasilnya ke file yang ditentukan dalam parameter -l .

Lihat juga bagian dokumentasi " Sistem Pemantauan Kompilasi di PVS-Studio ".

Bekerja dengan laporan


Untuk melihat laporan di Linux, Anda perlu mengonversi file yang diperoleh sebagai hasil analisis ke salah satu format yang didukung menggunakan utilitas plog-converter . Anda bisa mendapatkan laporan dalam format HTML dengan kemampuan untuk melihat kode sumber dengan perintah berikut:

 plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dir 

Konversi laporan dijelaskan secara lebih rinci dalam artikel " Kenalan dengan analisa statis PVS-Studio ketika mengembangkan program C ++ di Linux ".

Di Windows, ada juga utilitas PlogConverter yang memungkinkan Anda mengonversi file laporan dengan cara yang sama:

 PlogConverter.exe <path>\out.plog --renderTypes= FullHtml --analyzer=GA:1,2 

atau

 PlogConverter.exe D:\Projct\out.plog -t FullHtml -a GA:1,2 

Juga, laporan dalam format plog dapat dilihat menggunakan utilitas " C dan C ++ Compiler Monitoring UI " melalui menu File-> Open PVS-Studio Log ...

Contoh:


Jika perlu, dari utilitas ini Anda dapat mengekspor laporan ke salah satu format yang didukung melalui menu File .

Standar MISRA


PVS-Studio mengklasifikasikan peringatan menurut CWE dan SEI CERT , yang cocok untuk pengujian keamanan statis ( SAST ) dari aplikasi biasa. Namun, sistem tertanam memiliki persyaratan keamanan yang sedikit berbeda yang dicakup oleh standar MISRA yang dikembangkan secara khusus. Versi analisa saat ini mendukung bagian dari aturan dari MISRA C dan MISRA C ++, daftar diagnostik dapat dilihat di sini , dan terus berkembang.

Penggunaan aturan MISRA saat memeriksa proyek yang tidak dimaksudkan untuk disematkan seringkali tidak dapat dibenarkan. Ini karena spesifikasi standar. Dalam kebanyakan kasus, jika kode ini awalnya tidak ditulis dengan harapan kepatuhan MISRA, akan ada banyak peringatan palsu dan tidak berguna selama pemeriksaan. Oleh karena itu, aturan MISRA dinonaktifkan secara default.

Untuk mengaktifkan analisis MISRA di Linux, Anda perlu menjalankan analisis dengan tombol -a dan meneruskan parameter numerik yang menetapkan mode yang diperlukan. Parameter ini adalah kombinasi bidang bit:

 -a [MODE], --analysis-mode [MODE] MODE defines the type of warnings: 1 - 64-bit errors; 2 - reserved; 4 - General Analysis; 8 - Micro-optimizations; 16 - Customers Specific Requests; 32 - MISRA. Modes can be combined by adding the values Default: 4 

Contoh peluncuran (termasuk diagnostik GA dan MISRA):

 pvs-studio-analyzer analyze -a 36 -o /path/report.log 

Saat menggunakan plog-converter , Anda juga harus menunjukkan bahwa diagnostik MISRA harus dimasukkan dalam laporan:

 plog-converter -a MISRA:1,2,3 -m misra .... 

Di bawah Windows, Anda dapat menggunakan dialog pengaturan utilitas " C dan C ++ Compiler Monitoring UI ":


Rincian lebih lanjut tentang dukungan MISRA dijelaskan dalam artikel " PVS-Studio: Dukungan untuk MISRA C dan MISRA C ++ Standar Pengkodean ".

Kesimpulan


Dalam artikel ini, kami meninjau kemampuan penganalisa PVS-Studio untuk menguji proyek yang berfokus pada sistem tertanam. Jika Anda memerlukan informasi lebih rinci tentang cara menggunakan analisa, saya sarankan membaca artikel berikut:




Jika Anda ingin berbagi artikel ini dengan audiens yang berbahasa Inggris, silakan gunakan tautan ke terjemahan: Yuri Minaev. Menggunakan PVS-Studio Static Analyzer dalam Pengembangan C dan C ++ untuk Sistem Tertanam

Source: https://habr.com/ru/post/id463335/


All Articles