Tinjauan umum fitur PVS-Studio versi 7.07

Gambar 30

Tujuan artikel ini adalah demonstrasi ikhtisar kemampuan penganalisa statis PVS-Studio. Cara termudah dan paling visual untuk melakukan ini adalah untuk menunjukkan operasi alat dengan contoh. Verifikasi proyek akan ditampilkan menggunakan plug-in untuk Visual Studio, meluncurkan penganalisis dalam sistem operasi Linux, mengimpor hasil analisis ke SonarQube.

informasi Umum


PVS-Studio adalah penganalisa kode statis yang ditulis dalam C, C ++, C # dan Java. PVS-Studio melakukan berbagai pemeriksaan kode, tetapi paling kuat dalam menemukan kesalahan ketik dan konsekuensi dari Salin-Tempel yang gagal (contoh: satu , dua , tiga , empat ). Analisis statis adalah pelengkap yang baik untuk salah satu metode tertua dan paling dapat diandalkan untuk mendeteksi cacat - tinjauan kode. Beberapa kesalahan sulit ditemukan selama tinjauan bersama kode (misalnya, kesalahan ketik yang sama). Contohnya:

int trans_rest(transcoder_settings *trans)
{
  ....
  for(i=0; i<16; i++);
  {
    trans->eq.eq.preamp[i]   = 0.0;
    for(j=0; j<32; j++)
    {
      trans->eq.eq.boost[i][j] = 0.0;
    }
  }
}

Bagi yang belum memperhatikan, perhatikan titik koma setelah yang pertama untuk . Atau:

private class ObjectArrayComparer : IEqualityComparer<object[]>
{
  public bool Equals(object[] x, object[] y)
  {
    ....
    for (int i = 0; i < x.Length; i++)
    {
      if (!object.Equals(x[0], y[0])) 
      {
        return false;
      }
    }
    return true;
  }
  ....
}

Elemen yang sama selalu dibandingkan. Agar tidak membuang waktu Anda mencari kesalahan seperti itu, ada baiknya memperkenalkan penganalisa statis. Anda dapat mengunduh dan mencoba PVS-Studio di tautan ini .

Plugin untuk studio visual


PVS-Studio memiliki plugin untuk Visual Studio 2010-2019. Sebelum kami melanjutkan langsung ke verifikasi, saya akan mendemonstrasikan kemampuan plugin. Mari kita membahas beberapa poin yang dapat menimbulkan pertanyaan dalam semangat "tentang apa semua ini?"

Gambar 13


Saya akan menarik perhatian pada item Pesan Penekan, yang membuka jendela untuk bekerja dengan peringatan penganalisa yang ditekan dan sekarang saya akan menjelaskan apa item ini. Faktanya adalah bahwa PVS-Studio dapat menekan peringatan, yang membuatnya mudah untuk mulai menggunakan analisa bahkan dalam proyek besar. Ini memungkinkan Anda untuk dengan cepat dan mudah memasukkan analisa statis ke dalam proses pengembangan.

Jika proyek Anda kecil, mengimplementasikan penganalisa akan sangat sederhana. Namun, jika proyek ini "dengan sejarah", maka Anda mungkin memiliki keraguan merayap masuk: siapa yang akan terlibat dalam memproses dan menyaring hasil, berapa banyak waktu yang Anda butuhkan untuk ini, dll. Saya akan mencoba mengusir mereka.

Penggunaan ideal alat analisis dalam hal ini adalah sebagai berikut. Anda menjalankannya di proyek Anda dan melihat banyak pesan penganalisa. Kemudian, menggunakan mekanisme penindasan peringatan, memerintahkan PVS-Studio untuk tidak menampilkan pesan-pesan ini. Karena Karena proyek Anda telah berkembang untuk waktu yang lama, maka dalam laporan analisa hampir pasti akan ada beberapa peringatan terkait dengan beberapa cacat kritis. Lebih lanjut, selama proses pengembangan, Anda dan kolega Anda hanya melihat kesalahan yang berhubungan dengan kode yang diubah atau baru. Peringatan-peringatan yang telah ditekan sekarang menjadi tugas teknis Anda, yang dapat Anda kembali secara bertahap. Mekanisme penindasan peringatan dijelaskan secara lebih rinci di sini .

Gambar 14


Selanjutnya, buka item "Tampilkan Kode CWE di Jendela Output". PVS-Studio adalah alat untuk pengujian keamanan aplikasi statis (Static Application Security Testing, SAST). Peringatan PVS-Studio dapat digolongkan menurut Common Weakness Enumeration (CWE). Untuk mempelajari tentang klasifikasi peringatan PVS-Studio menurut CWE, mengapa CWE diperlukan, apa itu dan seterusnya, saya sarankan Anda membaca tautan berikut:


Mari kita beralih ke tab "Opsi".

Gambar 6

Di bagian "Detectable Errors (C, C ++)", kita bisa mengontrol tampilan tipe pesan analyzer. Pesan-pesan diagnostik yang karena alasan tertentu tidak relevan untuk proyek ini dapat disembunyikan atau dinonaktifkan. Misalnya, diagnostik MISRA tidak mungkin menarik minat siapa pun selain pengembang yang disematkan. Oleh karena itu, mereka dinonaktifkan secara default . Pengguna yang pertama kali memutuskan untuk menggunakan alat analisis, jumlah peringatan MISRA dapat menakuti dan masuk ke keadaan pingsan. Dan bagian dari pengguna yang dengan sengaja meluncurkan analisa untuk memeriksa proyek mereka untuk kepatuhan dengan standar MISRA dapat dengan mudah menyalakannya di pengaturan.

Gambar 10

Di sini Anda dapat memasukkan jalur / topeng untuk mengecualikan beberapa file atau folder dari analisis. Anda bisa memilih topeng dengan jalur (Path Mask) atau topeng dengan nama file (FileName Mask). Mereka diperlukan jika Anda ingin mengecualikan perpustakaan pihak ketiga, file yang dihasilkan secara otomatis, dll dari analisis. Setelah menetapkan masker pengecualian, pesan dari file yang terkait dengannya akan menghilang dari jendela output PVS-Studio, dan mereka tidak akan dimasukkan dalam pemindaian berikutnya. Dengan demikian, pengecualian file dan direktori melalui topeng dapat secara signifikan mengurangi waktu analisis keseluruhan dari keseluruhan proyek.

Lebih detail di sini .

Gambar 8

Anda juga dapat memfilter output penganalisis sesuai dengan teks yang terkandung di dalamnya. Misalnya, dalam laporan analisis Anda ada peringatan yang menyebutkan fungsi my_super_fungsi dalam teks , tetapi Anda yakin bahwa semua peringatan ini salah. Kemudian Anda dapat menambahkan kata my_super_function di bidang ini. Semua peringatan yang mengandung kata ini akan disaring. Nah, untuk berjaga-jaga, saya akan meninggalkan tautan di sini ke bagian yang sesuai dari dokumentasi .

Catatan. Di PVS-Studio ada cara lain untuk menandai peringatan salah dalam kode atau makro. Mereka dijelaskan dalam dokumentasi di bagian Menekan Tanda Palsu .

Setelah kita selesai dengan ikhtisar pengaturan, mari kita beralih ke memeriksa proyek. Seperti yang mungkin telah Anda perhatikan, artikel ini memiliki beberapa pengaturan yang terkait dengan proyek C ++, tetapi tidak ada spesifikasi untuk C # dan Java. Hanya ada lebih banyak pengaturan untuk C ++ daripada untuk C #, jadi kami memutuskan untuk memikirkan ulasan singkat ini. Tetapi untuk perubahan cerita, mari kita periksa dengan bantuan plug-in untuk Visual Studio bukan C ++, tetapi proyek C # dan lihat seperti apa laporan analisa itu.

Secara alami, setelah pemeriksaan pertama proyek, Anda harus kembali ke pengaturan untuk mengurangi persentase positif palsu. Positif palsu tidak bisa dihindari, tetapi persentase mereka dapat dikurangi dengan menetapkan nilai yang dapat diterima. Lihat artikel: " Karakteristik penganalisis PVS-Studio menggunakan contoh EFL Core Libraries, 10-15% positif palsu ."

Gambar 1

Pilih item "Analisis Solusi dengan PVS-Studio".

Gambar 2

Sebuah jendela dengan bilah kemajuan akan muncul.

Gambar 3

Dan kemudian kita bisa melihat laporan penganalisa.

Gambar 11

Ngomong-ngomong, di sini Anda juga dapat memfilter beberapa peringatan. Misalnya, Anda dapat menyembunyikan peringatan pertama dalam laporan kami dengan memilihnya dan mengklik item โ€œTandai pesan terpilih sebagai Alarm Palsuโ€. Untuk detail lebih lanjut, merujuk lagi ke bagian Menekan Pemberitahuan Palsu .

Linux


Sebelumnya kami menguji proyek C #. Sekarang mari kita coba periksa kode yang ditulis dalam C ++. Untuk menambah variasi pada artikel, kami akan mengujinya di Linux. Omong-omong, di bawah Windows, Linux dan macOS, Anda dapat memeriksa proyek dalam bahasa apa pun (C, C ++, C #, Java).

Gambar 20

Kami mengkloning repositori.

Gambar 18

Kami meluncurkan skrip konfigurasi untuk perakitan.

Gambar 16

Kami meluncurkan PVS-Studio dalam mode jejak dan merakit proyek. Utilitas strace yang diinstal diperlukan . Alih-alih perintah make, dalam kasus Anda bisa ada perintah untuk mulai membangun proyek dengan semua parameter yang diperlukan.

Gambar 12

Kami menganalisis file dari proyek menggunakan hasil dari langkah sebelumnya. Saklar -a memungkinkan Anda menentukan peringatan mana yang harus dimasukkan dalam laporan.

Gambar 4

Kami mengonversi log menjadi html dan menikmati hasilnya.

Saya menjelaskan hanya satu opsi untuk memeriksa proyek di Linux dan sangat resmi, tanpa masuk ke rincian. Ada cara lain untuk memeriksa proyek, misalnya, dengan menulis panggilan penganalisa di makefile. Untuk ulasan lebih rinci, saya sarankan merujuk ke tautan berikut:

Sonarquube


SonarQube adalah platform sumber terbuka untuk analisis berkelanjutan dan pengukuran kualitas kode, mendukung sejumlah besar bahasa pemrograman dan memungkinkan Anda menerima laporan tentang metrik seperti duplikasi kode, kepatuhan dengan standar pengkodean, cakupan uji, kompleksitas kode, potensi kesalahan, dll.

PVS-Studio memiliki plugin untuk mengimpor hasil analisis ke SonarQube, mari kita coba menggunakannya.

Gambar 9

Untuk memulai, kita mendapatkan laporan analisa dan file konfigurasi sonar-project.properties.

Gambar 27

Selanjutnya, kita memerlukan perintah peluncuran pemindai.

Gambar 28

Hasil :)

Gambar 23

Selain itu, file konfigurasi dapat dibuat (atau diedit). Misalnya, pada tangkapan layar di atas, kami mengaktifkan penambahan pengidentifikasi MISRA ke peringatan penganalisa. Ya, yaitu, secara default, MISRA dinonaktifkan di sini. Jika Anda perlu memeriksa kode Anda untuk kepatuhan MISRA, kemudian tambahkan "aktif" ke file konfigurasi Anda untuk disertakan.

Gambar 25

Di tab Ukuran, berbagai metrik kode dan grafik tersedia.

Gambar 26

Anda juga dapat membuat grafik menggunakan bagian PVS-Studio. Anda dapat mempelajari lebih lanjut tentang mengintegrasikan hasil analisis PVS-Studio ke SonarQube di ini bagian dari manual.

PVS-Studio Java


Kami sekarang melihat pengaturan untuk proyek C ++, menguji proyek dalam C #, tetapi Java entah bagaimana jatuh dari artikel. Penting untuk memperbaiki ini dan memberi tahu apa itu alat analisa Java PVS-Studio. Penganalisa memiliki beberapa cara berbeda untuk diintegrasikan ke dalam proyek. Bergantung pada sistem build, Anda dapat menggunakan plugin untuk Maven atau Gradle. Anda juga dapat menggunakan inti penganalisa secara langsung. Menggunakan Gradle, Maven atau plugin kernel secara langsung memungkinkan Anda untuk bekerja dengan mudah dengan Sonar Qube atau CI (Jenkins). Jika Anda mengaktifkan plugin ini, maka proyek Java diperiksa oleh analisis statis secara langsung selama proses pembangunan dan sebagai hasilnya Anda akan menerima tidak hanya proyek rakitan Anda, tetapi juga log dari penganalisa PVS-Studio.

Alat analisa Java PVS-Studio juga dapat digunakan sebagai plug-in untuk IntelliJ IDEA. Dalam hal ini, analisis struktur proyek dilakukan dengan menggunakan IDE ini, dan plug-in menyediakan antarmuka grafis yang nyaman untuk bekerja dengan penganalisa.

Gambar 40

Saya sarankan membaca lebih detail di bagian tentang cara memulai PVS-Studio Java .

Juga, dengan memeriksa proyek Java, Anda dapat menekan pesan penganalisa sehingga integrasi ke dalam proyek besar cepat dan tidak menyakitkan.

Di IntelliJ IDEA, sepertinya ini.

Gambar 42

Di jendela ini kita melihat laporan penganalisa.

Gambar 43

Dengan mengklik kanan pada pesan yang dipilih, kita melihat menu konteks seperti itu. Di dalamnya kita dapat memilih item yang disorot dan pesan akan menghilang dari output analyzer.

Gambar 44

Kami juga dapat menekan semua pesan penganalisa.

Untuk menekan peringatan penganalisa di Gradle, jalankan perintah:

./gradlew pvsSuppress "-Ppvsstudio.report=/path/to/report.json"
  "-Ppvsstudio.output=/path/to/suppress_base.json"

Untuk menekan peringatan penganalisa di Maven, jalankan perintah:
mvn pvsstudio:pvsSuppress "-Dpvsstudio.report=/path/to/report.json"
  "-Dpvsstudio.output=/path/to/suppress_base.json"

Baca lebih lanjut tentang mekanisme penindasan di sini .

Untuk meringkas


Tujuan artikel ini adalah untuk menunjukkan kemampuan analisa statis PVS-Studio, cara mudah bekerja dengannya menggunakan plug-in untuk Visual Studio dan untuk Linux. Berkat kemampuan untuk berintegrasi dengan platform SonarQube, Anda dapat memberikan analisis berkelanjutan dan manajemen kualitas kode Anda, yang hanya salah satu dari banyak fitur yang dijelaskan dalam dokumentasi.

Integrasi analisa statis ke dalam sistem CI memungkinkan Anda untuk mendeteksi bug segera setelah membangun proyek. Ini mengurangi biaya untuk menemukan dan memperbaiki kesalahan. Di bawah ini adalah tautan ke artikel dengan integrasi dengan layanan cloud paling populer:

  1. PVS-Studio pergi ke awan: Travis CI
  2. PVS-Studio pergi ke awan: Azure DevOps
  3. PVS-Studio pergi ke awan: CircleCI
  4. PVS-Studio beralih ke cloud: GitLab CI / CD
  5. Luncurkan PVS-Studio di TeamCity


Jika Anda ingin berbagi artikel ini dengan audiens yang berbahasa Inggris, silakan gunakan tautan ke terjemahan: Ekaterina Nikiforova. PVS-Studio 7.07: Gambaran Umum Fitur .

All Articles