PVS-Studio 7.00

PVS-Studio C # \ Java \ C ++ Hari ini adalah hari yang penting - setelah 28 rilis versi keenam, kami menghadirkan PVS-Studio 7.00 kami, di mana inovasi utamanya adalah dukungan bahasa Jawa. Namun, selama 2018 kami telah memperoleh banyak perubahan penting lainnya yang terkait dengan C ++, C #, infrastruktur dan dukungan standar pengkodean. Oleh karena itu, kami menyampaikan kepada Anda sebuah catatan yang merangkum perubahan besar yang telah terjadi di PVS-Studio untuk terakhir kalinya.

PVS-Studio adalah alat yang dirancang untuk mendeteksi kesalahan dan potensi kerentanan dalam kode sumber program, ditulis dalam C, C ++, C #, dan Java. Ia bekerja di lingkungan Windows, Linux, dan macOS.

Kumpulan kesalahan luas yang ditemukan dalam kode selama pemeriksaan berbagai proyek sumber terbuka dengan jelas menunjukkan kemampuan penganalisa.

Kami akan mulai dengan perubahan yang karenanya kami memutuskan untuk mengubah nomor versi dari 6.x ke 7.x. Ini adalah dukungan analisa bahasa Jawa, yang membutuhkan persiapan yang lama .

Jawa


Hal terpenting dalam Java analyzer adalah bahwa ia muncul :). Kami ingin mengundang pengembang Java untuk mengunduh alat dan memeriksa proyek, yang saat ini Anda gunakan.

Kami menyediakan cara-cara paling populer dari integrasi penganalisa dalam sistem build untuk pengguna:

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

Dalam hal menggunakan sistem build yang ditulis sendiri, kami memiliki kemampuan untuk menjalankan analisa secara langsung, mendaftar sumber dan classpath .

Anda dapat menemukan informasi terperinci tentang semua cara menjalankan analisis pada halaman dokumentasi " Cara Menjalankan PVS-Studio Java ".

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

C, C ++


Pada tahun 2018, tim kami secara aktif bekerja pada pengembangan alat analisis C ++. Banyak diagnostik baru muncul bersamaan dengan algoritme , yang memungkinkan pengumpulan dan pemrosesan data yang diekstrak dari pohon sintaksis.

CWE, CERT

Peringatan penganalisa C ++ (dan C #) dikelompokkan menurut Common Weakness Enumeration ( CWE ). CWE adalah sistem klasifikasi kerentanan potensial dan dikonfirmasi. Ini didukung oleh komunitas dengan maksud untuk mengidentifikasi masalah perangkat lunak dan membuat alat otomatis yang dapat digunakan untuk mengidentifikasi dan menyelesaikan masalah ini.

Selain itu, pesan-pesan tersebut diklasifikasikan menurut Standar Pengodean CERT C dan Standar Pengodean CERT C ++. SEI CERT Coding Standards adalah seperangkat standar untuk menulis perangkat lunak dalam C, C ++, Java, dan Perl, yang dikembangkan oleh 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 telah dapat mengklasifikasikan peringatannya sesuai dengan standar MISRA C dan MISRA C ++. Karena mendukung standar-standar ini, dimungkinkan untuk menggunakan penganalisa secara efektif untuk meningkatkan tingkat keamanan, portabilitas, dan keandalan program untuk sistem embedded.

Baca lebih lanjut: " PVS-Studio: Dukungan MISRA C dan MISRA C ++ Standar Pengkodean ."

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

Pengembangan tertanam

Pada tahun 2018, kompiler tertanam berikut telah didukung di 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 topik mendukung sistem tertanam:

  1. Static Code Analyzer PVS-Studio 6.22 Sekarang Mendukung Kompiler ARM (Keil, IAR) .
  2. PVS-Studio Sekarang Mendukung GNU Arm Embedded Toolchain .

Memperluas anotasi khusus

Terkadang implementasi tersesuaikan dari berbagai fungsi sistem, seperti, misalnya, memcpy , malloc , dan sebagainya digunakan dalam proyek. Penganalisa dapat mendeteksi kesalahan dalam kode yang menggunakan fungsi standar dengan baik, tetapi dalam kode yang disesuaikan, tidak mungkin untuk menerapkan algoritma tersebut hingga saat ini. Sekarang menggunakan anotasi V_FUNC_ALIAS Anda dapat memasukkan nama fungsi Anda sesuai dengan yang sistem.

Format komentar:

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

  • Kunci implementasi - menentukan nama fungsi standar untuk menentukan alias.
  • Tombol fungsi - menentukan nama alias. Tanda tangan fungsi, nama yang ditentukan dalam kunci ini, harus cocok dengan tanda tangan fungsi, ditentukan dalam kunci implementasi.
  • Kunci kelas adalah nama kelas. Mungkin hilang.
  • Kunci namespace adalah nama namespace. Mungkin hilang.

Mari kita lihat sebuah contoh:

 //V_FUNC_ALIAS, implementation:memcpy, function:MyMemCpy 

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

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

C #


Tahun ini tidak ada perubahan signifikan dari penganalisa C #. Ada beberapa perbaikan diagnostik dan perbaikan kesalahan. Peringatan penganalisis C #, serta peringatan penganalisa C ++ telah diklasifikasikan menurut Common Weakness Enumeration ( CWE ). Pemetaan diagnostik C # dengan pengidentifikasi CWE diberikan di sini (lihat diagnostik dengan angka 3xxx).

Kami berencana untuk kembali ke pengembangan yang lebih aktif dari penganalisis C # pada tahun 2019. Kami juga berencana untuk mengembangkan diagnostik baru dan meningkatkan mekanisme Analisis Data-Flow.

Laporkan konverter


Utilitas PlogConverter.exe dan plog-converter termasuk dalam distribusi PVS-Studio untuk Windows dan Linux / macOS, masing-masing. Selain itu, kode sumber utilitas ini tersedia di GitHub .

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

Selain itu, kolom MISRA ditambahkan untuk laporan dalam format ini.

Laporkan konverter


Selain ID CWE, kolom MISRA bersifat opsional dan diaktifkan oleh pengulas keamanan kode ketika menyelidiki hasil analisis.

Plugin SonarQube


1. Pembaruan lengkap

Kami telah menulis ulang plugin kami menggunakan API baru. Ini memungkinkan kami untuk menambah fitur baru dan menyediakan kompatibilitas dengan SonarQube 7 x. Versi minimum yang didukung sekarang adalah SonarQube 6.7 LTS .

2. PVS-Studio untuk Java

Versi baru termasuk dukungan diagnostik dalam bahasa Jawa. Sekarang Anda dapat menambahkan PVS-Studio ke alat kontrol kualitas lain dari proyek Java Anda.

3. Standar MISRA

Kami baru-baru ini mengumumkan dukungan standar MISRA C dan MISRA C ++. Plugin baru juga menyertakan dukungan mereka. Misalnya, parameter berikut ditambahkan (selain CWE):

 sonar.pvs-studio.misra=active 

yang mencakup penambahan pengidentifikasi MISRA ke peringatan penganalisa:

PVS-Studio, MISRA


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

4. Metrik baru

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

Sonarquube


Dengan menggunakan masing-masing metrik, Anda dapat membuat bagan dan memantau dinamika kemunculan berbagai kelompok peringatan.

4. Transisi multiline

Beberapa diagnostik analis penganalisa mengeluarkan peringatan untuk beberapa baris kode. 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 multibahasa, oleh karena itu semua proses telah difokuskan pada penulisan instruksi yang lebih umum dan mudah dipahami untuk bekerja pada sistem yang berbeda.

SAST


Sampai saat ini, dalam artikel kami, kami telah memposisikan PVS-Studio sebagai alat untuk mendeteksi kesalahan dalam kode. Meskipun kami hampir tidak pernah menganggap PVS-Studio dalam konteks keamanan. Tahun ini kami memperbaiki situasi ini dan mempertimbangkan alat tersebut dalam hal pengujian aplikasi keamanan dan praktik DevSecOps.

PVS-Studio adalah alat pengujian keamanan aplikasi statis (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 dapat menghasilkan peringatan dalam format berikut: Pencacahan Kelemahan Umum , Standar Pengodean CERT SEI . Memetakan tabel diagnosa PVS-Studio ke berbagai standar:

  1. Pemetaan CWE
  2. Pemetaan sertifikat SEI

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

Kami juga menyarankan untuk melihat publikasi ini:

  1. Bagaimana PVS-Studio Dapat Membantu dalam Deteksi Kerentanan?
  2. Tembak kaki Anda saat memegang data input .
  3. Membagikan Lisensi Analyzer PVS-Studio ke Pakar Keamanan .

PVS-Studio Gratis


Pada malam tahun baru 2019, tim PVS-Studio memutuskan untuk memberikan hadiah yang bagus untuk semua kontributor proyek sumber terbuka yang diselenggarakan di GitHub atau Bitbucket. Mereka diberikan penggunaan bebas analisa statis PVS-Studio untuk pengembangan proyek sumber terbuka.

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

macOS


Pada 2018, PVS-Studio sudah mulai bekerja di bawah macOS. Tim kami memutuskan untuk melakukan pemeriksaan XNU Kernel untuk bertepatan dengan acara ini: " PVS-Studio sekarang tersedia di MacOS: 64 kelemahan di Kernel XNU Apple ".

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

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


All Articles