PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ Hari ini adalah hari yang penting - setelah 28 rilis versi keenam, kami merilis PVS-Studio 7.00, di mana inovasi kuncinya adalah dukungan untuk bahasa Jawa. Namun, pada 2018, banyak perubahan penting lainnya telah terakumulasi berkenaan dengan C ++, C #, infrastruktur dan dukungan untuk standar pengkodean. Oleh karena itu, kami menyampaikan kepada Anda sebuah catatan yang merangkum perubahan-perubahan utama yang terjadi di PVS-Studio baru-baru ini.

PVS-Studio adalah alat untuk mendeteksi kesalahan dan kerentanan potensial dalam kode sumber program yang ditulis dalam C, C ++, C # dan Java. Ini berjalan pada Windows, Linux, dan macOS.

Kemampuan penganalisa ditunjukkan dengan baik oleh kumpulan luas kesalahan dalam kode yang kami temukan selama verifikasi berbagai proyek sumber terbuka.

Kami akan mulai dengan perubahan, karena itu, pada kenyataannya, diputuskan untuk mengubah nomor versi dari 6.x ke 7.x. Ini adalah dukungan dalam penganalisa bahasa Jawa, yang telah kami persiapkan sejak lama.

Jawa


Hal terpenting dalam Java analyzer adalah bahwa ia muncul :). Kami mengundang pengembang Java untuk mengunduh alat dan memeriksa proyek yang sedang mereka kerjakan.

Kami telah menyediakan bagi pengguna cara paling populer untuk mengintegrasikan alat analisis ke dalam sistem perakitan:

  • Plugin untuk Maven.
  • Plugin untuk Gradle.
  • Plugin untuk IntelliJ IDEA.

Dalam hal menggunakan sistem rakitan yang ditulis sendiri, dimungkinkan untuk menjalankan alat analisis secara langsung dengan mendaftar sumber dan jalur kelas.

Anda dapat menemukan informasi terperinci tentang semua metode memulai analisa pada halaman dokumentasi " Cara memulai PVS-Studio Java ".

Kami tidak dapat mengabaikan platform kontrol kualitas kode SonarQube, yang sangat populer di kalangan pengembang Java, jadi kami menambahkan dukungan bahasa Java ke plugin SonarQube kami.

C, C ++


Pada 2018, tim kami secara aktif bekerja pada pengembangan alat analisis C ++. Banyak diagnostik baru telah muncul, serta peningkatan algoritma yang memungkinkan Anda untuk mengumpulkan dan memproses informasi yang diambil dari pohon sintaksis.

CWE, CERT

Pesan dari parser C ++ (seperti parser C #) diklasifikasi berdasarkan Common Weakness Enumeration ( CWE ). CWE adalah sistem klasifikasi untuk kerentanan potensial dan yang dikonfirmasi. Didukung oleh komunitas untuk mengidentifikasi masalah perangkat lunak dan membuat alat otomatis yang dapat digunakan untuk mengidentifikasi dan memperbaiki masalah ini.

Selain itu, pesan telah diklasifikasikan menurut Standar Pengodean CERT C dan Standar Pengodean CERT C ++. SEI CERT Standar Pengkodean adalah seperangkat standar untuk menulis perangkat lunak (software) dalam C, C ++, Java dan Perl, yang dikembangkan oleh Pusat Koordinasi CERT (Pusat Koordinasi CERT, CERT / CC) untuk meningkatkan keandalan dan keamanan perangkat lunak.

Klasifikasi diagnostik C dan C ++ sesuai dengan peringatan ini memungkinkan penggunaan PVS-Studio sebagai solusi SAST .

Misra

Pada tahun 2018, alat analisa kode statis PVS-Studio mulai mengklasifikasikan peringatannya sesuai dengan standar MISRA C dan MISRA C ++. Berkat dukungan standar-standar ini, alat analisa telah menjadi mungkin untuk digunakan secara efektif untuk meningkatkan keamanan, portabilitas dan keandalan program untuk sistem tertanam.

Lebih detail: " PVS-Studio: dukungan untuk standar pengkodean MISRA C dan MISRA C ++ ".

Dukungan MISRA telah menjadi relevan sehubungan dengan pengembangan dalam analisa dukungan untuk berbagai sistem tertanam, yang akan dibahas pada bagian selanjutnya dari artikel.

Pengembangan tertanam

Pada tahun 2018, yang berikut ini didukung dalam alat analisa PVS-Studio:

  • Windows IAR Embedded Workbench, C / C ++ Compiler untuk ARM C, C ++
  • Windows / Linux Keil ฮผVision, DS-MDK, ARM Compiler 5/6 C, C ++
  • Windows / Linux Studio Komposer Kode Texas Instruments, Alat Pembuatan Kode ARM C, C ++
  • Windows / Linux / macOS. GNU Arm Embedded Toolchain, kompiler GCC Arm Embedded, C, C ++

Dua catatan tentang dukungan sistem tertanam:

  1. PVS-Studio 6.22 penganalisa kode statis diadaptasi untuk kompiler ARM (Keil, IAR) .
  2. PVS-Studio memperkenalkan dukungan untuk GNU Arm Embedded Toolchain .

Ekstensi Anotasi Kustom

Terkadang proyek menggunakan implementasi mereka sendiri dari berbagai fungsi sistem, misalnya, memcpy , malloc , dll. Alat analisis sangat baik dalam mencari kesalahan menggunakan fungsi standar, tetapi tidak mungkin untuk menggunakan algoritma tersebut dalam kode pengguna sampai saat ini. Sekarang, menggunakan anotasi V_FUNC_ALIAS, Anda dapat menetapkan nama fungsi Anda ke yang sistem.

Format komentar:

//V_FUNC_ALIAS, implementation:sysf, function:f, namespace:ns, class:c 

  • Implementasi kunci - menetapkan nama fungsi standar yang didefinisikan alias.
  • Tombol fungsi - mengatur nama alias. Tanda tangan dari fungsi yang namanya ditentukan dalam kunci ini harus cocok dengan tanda tangan dari fungsi yang ditentukan dalam kunci implementasi.
  • Kelas utama adalah nama kelas. Mungkin tidak ada.
  • Kunci namespace adalah nama namespace . Mungkin tidak ada.

Pertimbangkan sebuah contoh:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

Sekarang alat analisa akan menangani panggilan ke fungsi MyMemCpy dengan cara yang sama seperti panggilan ke memcpy . Misalnya, peringatan V512 akan dikeluarkan untuk kode seperti itu:

 int buf[] = { 1, 2, 3, 4 }; int out[2]; MyMemCpy (out, buf, 4 * sizeof(int)); // Warning! 

C #


Tidak ada perubahan signifikan pada penganalisa C # tahun ini. Ada beberapa perbaikan untuk diagnostik dan perbaikan bug. Pesan dari parser C #, seperti parser C ++, digolongkan menurut Common Weakness Enumeration ( CWE ). Korespondensi diagnostik C # dengan pengidentifikasi CWE diberikan di sini (lihat diagnostik dengan nomor 3xxx).

Kami berencana untuk kembali ke pengembangan yang lebih aktif dari penganalisa C # pada tahun 2019. Direncanakan untuk mengembangkan diagnostik baru dan meningkatkan mekanisme analisis aliran data (Data-Flow Analysis).

Laporkan Konverter


Utilities PlogConverter.exe dan plog-converter masing-masing termasuk dalam distribusi PVS-Studio untuk Windows dan Linux / macOS. Kode sumber untuk utilitas ini juga tersedia di GitHub .

Dengan munculnya PVS-Studio untuk Java, kami mendesain ulang penyorotan kode untuk C, C ++, C # dan menambahkan Java dalam format FullHtml ( untuk peramban web ).

Juga, untuk laporan dalam format ini, kolom MISRA ditambahkan:

PVS-Studio, MISRA

Seperti ID CWE, kolom MISRA bersifat opsional dan disertakan oleh peneliti keamanan kode saat memeriksa hasil analisis.

Plugin SonarQube


1. Pembaruan lengkap

Kami menulis ulang plugin kami menggunakan API baru. Ini memungkinkan untuk menambahkan fungsionalitas baru dan memastikan kompatibilitas dengan SonarQube 7.x. Versi minimum yang didukung sekarang adalah SonarQube 6.7 LTS .

2. PVS-Studio untuk Java

Dukungan diagnostik untuk bahasa Java telah ditambahkan ke versi baru plugin. Sekarang Anda dapat menambahkan PVS-Studio ke alat kontrol kualitas lain dari proyek Java Anda.

3. standar MISRA

Kami baru-baru ini mengumumkan dukungan untuk standar MISRA C dan MISRA C ++. Plugin baru juga mendapat dukungannya. Misalnya, parameter ditambahkan (selain CWE):

 sonar.pvs-studio.misra=active 

yang termasuk menambahkan pengidentifikasi MISRA ke peringatan penganalisa:

Misra


Terlepas dari parameter ini, pencarian akan tersedia untuk tag misra dan pvs-studio # misra dalam hasil analisis. Informasi tentang jumlah peringatan MISRA yang ditemukan juga ditambahkan ke metrik, yang akan dibahas nanti.

4. Metrik baru

Dalam menu Projects -> Your Project -> Measures tersedia berbagai metrik kode, di antaranya sekarang ada berbagai informasi dari PVS-Studio:

Sonarquube


Untuk masing-masing metrik, Anda dapat membuat grafik dan memantau dinamika penampilan berbagai kelompok peringatan penganalisa.

4. Transisi multiline

Beberapa diagnostik penganalisis mengeluarkan peringatan pada beberapa baris file. Terkadang mereka sangat berjauhan. Dalam versi baru, kami menambahkan transisi multiline:

Sonarquube


SonarQube juga mendukung transisi antar file yang berbeda. Nanti kita akan menambahkan transisi semacam itu untuk diagnostik, di mana ada analisis intermodular.

6. Dokumentasi

Dokumentasi telah mengalami perubahan besar. PVS-Studio adalah produk lintas-platform dan multi-bahasa, sehingga semua proses ditujukan untuk menulis instruksi yang lebih umum dan dapat dimengerti untuk bekerja pada sistem tertentu.

SAST


Sampai saat ini, dalam artikel kami, kami memposisikan PVS-Studio sebagai alat untuk mendeteksi kesalahan dalam kode. Pada saat yang sama, kami hampir tidak mempertimbangkan PVS-Studio dalam konteks keamanan. Tahun ini kami memperbaiki situasi ini dan melihat alat dari sudut pandang pengujian keamanan aplikasi dan praktik DevSecOps.

PVS-Studio adalah alat untuk pengujian keamanan aplikasi statis (Static Application Security Testing, SAST). Dengan kata lain, analisa PVS-Studio mendeteksi tidak hanya kesalahan ketik, kode mati dan kesalahan lainnya, tetapi juga kerentanan potensial.

Untuk kenyamanan spesialis yang akan menggunakan PVS-Studio sebagai alat SAST, penganalisa menampilkan peringatan pada Common Weakness Enumeration , SEI CERT Coding Standards . Tabel kepatuhan diagnosa PVS-Studio dengan berbagai standar:

  1. Kepatuhan CWE
  2. CERT SEI Kepatuhan

Topik ini dijelaskan secara lebih rinci dalam artikel " PVS-Studio sebagai solusi SAST ".

Kami juga menawarkan untuk berkenalan dengan publikasi:

  1. Bagaimana PVS-Studio dapat membantu dalam mencari kerentanan?
  2. Kami menembak di kaki, memproses data input .
  3. Kami menyediakan analisa PVS-Studio kepada para pakar keamanan .

PVS-Studio Gratis


Menjelang perayaan tahun baru 2019, tim PVS-Studio memutuskan untuk memberikan hadiah yang menyenangkan bagi semua kontributor proyek sumber terbuka yang diselenggarakan di GitHub atau Bitbucket. Mereka diberi kesempatan untuk menggunakan penganalisa statis PVS-Studio secara gratis untuk mengembangkan proyek sumber terbuka.

Detail: " PVS-Studio Gratis untuk mereka yang mengembangkan proyek open source ."

macOS


Pada 2018, PVS-Studio belajar untuk bekerja di bawah kendali macOS. Tim kami mendedikasikan pemeriksaan XNU Kernel untuk acara ini: " rilis PVS-Studio untuk macOS: 64 kelemahan di Apple XNU Kernel ".

XNU adalah inti dari sistem operasi komputer yang dikembangkan oleh Apple dan digunakan dalam keluarga OS X OS (macOS, iOS, tvOS, watchOS).



Jika Anda ingin berbagi artikel ini dengan audiens yang berbahasa Inggris, silakan gunakan tautan ke terjemahan: Andrey Karpov, Svyatoslav Razmyslov. PVS-Studio 7.00 .

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


All Articles