Analisis statis - saka introduksi kanggo integrasi

Bosen karo review kode utawa debugging tanpa wates, kadhangkala sampeyan mikir babagan carane nggawe urip luwih gampang. Lan sawise nggoleki sethithik, utawa kanthi ora sengaja kesandhung, sampeyan bisa ndeleng tembung ajaib: "Analisis statis". Ayo ndeleng apa iku lan carane bisa sesambungan karo proyek sampeyan.

Analisis statis - saka introduksi kanggo integrasi
Nyatane, yen sampeyan nulis ing sembarang basa modern, banjur, tanpa sadhar, sampeyan mbukak liwat analyzer statis. Kasunyatane manawa kompiler modern nyedhiyakake, sanajan cilik, peringatan babagan masalah potensial ing kode kasebut. Contone, nalika ngumpulake kode C++ ing Visual Studio sampeyan bisa ndeleng ing ngisor iki:

Analisis statis - saka introduksi kanggo integrasi
Ing output iki kita waca sing variabel var ora tau digunakake ing ngendi wae ing fungsi kasebut. Dadi ing kasunyatan, sampeyan meh tansah nggunakake analisa kode statis sing prasaja. Nanging, ora kaya analisa profesional kayata Coverity, Klocwork utawa PVS-Studio, bebaya sing diwenehake dening compiler mung bisa nuduhake sawetara masalah.

Yen sampeyan ora ngerti apa analisis statis lan cara ngleksanakake, maca artikel ikikanggo mangerteni sing luwih lengkap babagan metodologi iki.

Napa sampeyan butuh analisis statis?

Ing ringkesan: percepatan lan simplifikasi.

Analisis statis ngidini sampeyan nemokake macem-macem masalah ing kode kasebut: saka panggunaan konstruksi basa sing salah nganti salah ketik. Contone, tinimbang

auto x = obj.x;
auto y = obj.y;
auto z = obj.z;

Sampeyan nulis kode ing ngisor iki:

auto x = obj.x;
auto y = obj.y;
auto z = obj.x;

Nalika sampeyan bisa ndeleng, ana salah ketik ing baris pungkasan. Contone, PVS-Studio ngetokake bebaya ing ngisor iki:

V537 Coba priksa manawa panggunaan item 'y' bener.

Yen sampeyan pengin nggawe kesalahan iki, coba conto sing wis digawe ing Compiler Explorer: *nangis*.

Lan sing ngerti, iku ora tansah bisa kanggo mbayar manungsa waΓ© menyang bagean kode langsung, lan amarga iki, sampeyan bisa njagong mudhun debugging kanggo jam apik, kepingin weruh apa kabeh dianggo supaya strangely.

Nanging, iki jelas kesalahan. Apa yen pangembang nulis kode suboptimal amarga kelalen sawetara subtlety basa? Utawa malah diijini ing kode prilaku undefined? Sayange, kasus kaya mengkono iku umum lan wektu paling gedhe digunakake kanggo debugging khusus kode kerja sing ngemot kesalahan ketik, kesalahan khas utawa prilaku sing ora ditemtokake.

Kanggo kahanan kasebut ana analisis statis. Iki minangka asisten pangembang sing bakal nuduhake macem-macem masalah ing kode lan nerangake ing dokumentasi kenapa ora perlu nulis kanthi cara iki, apa sing bisa nyebabake lan carane ndandani. Iki conto sing bisa katon kaya: *nangis*.

Sampeyan bisa nemokake kesalahan sing luwih menarik sing bisa dideteksi dening analisa ing artikel:

Saiki sampeyan wis maca materi iki lan yakin babagan keuntungan analisis statis, sampeyan bisa uga pengin nyoba. Nanging ngendi kanggo miwiti? Kepiye cara nggabungake alat anyar menyang proyek sampeyan saiki? Lan carane ngenalake tim marang dheweke? Sampeyan bakal nemokake jawaban kanggo pitakonan kasebut ing ngisor iki.

Wigati. Analisis statis ora ngganti utawa mbatalake bab migunani minangka review kode. Iki nglengkapi proses iki, mbantu ngerteni lan mbenerake kesalahan ketik, ora akurat, lan desain sing mbebayani sadurunge. Luwih produktif kanggo fokus ing review kode babagan algoritma lan kajelasan kode, tinimbang nggoleki kurung sing salah utawa maca fungsi comparison mboseni.

0. Ngerti alat

Iku kabeh diwiwiti karo versi nyoba. Pancen, angel mutusake kanggo ngenalake babagan proses pangembangan yen sampeyan durung nate ndeleng alat kasebut langsung. Mulane, ing bab pisanan sampeyan kudu download versi njajal.

Apa sing bakal sampeyan sinau ing tahap iki:

  • Apa cara kanggo sesambungan karo penganalisis;
  • Apa analisa kompatibel karo lingkungan pangembangan sampeyan?
  • Masalah apa sing saiki ana ing proyek sampeyan?

Sawise sampeyan wis nginstal kabeh sing dibutuhake, sing pertama sampeyan kudu nindakake analisis kabeh proyek (Windows, Linux, MacOS). Ing kasus PVS-Studio ing Visual Studio sampeyan bakal weruh gambar sing padha (bisa diklik):

Analisis statis - saka introduksi kanggo integrasi
Kasunyatane, analisa statis biasane ngetokake bebaya kanggo proyek kanthi basis kode gedhe. Ora perlu ndandani kabeh, amarga proyek sampeyan wis digunakake, tegese masalah kasebut ora kritis. Nanging, sampeyan sampeyan bisa ndeleng bebaya paling menarik lan mbenerake yen perlu. Kanggo nindakake iki, sampeyan kudu nyaring output lan mung ninggalake pesen sing paling dipercaya. Ing plugin PVS-Studio kanggo Visual Studio, iki ditindakake kanthi nyaring miturut tingkat kesalahan lan kategori. Kanggo output paling akurat, ninggalake mung High ΠΈ Umum (uga bisa diklik):

Analisis statis - saka introduksi kanggo integrasi
Pancen, 178 bebaya luwih gampang dideleng tinimbang sawetara ewu ...

Ing tab Sedheng ΠΈ kurang Asring ana bebaya sing apik, nanging kategori kasebut kalebu diagnostik sing kurang akurasi (reliabilitas). Informasi liyane babagan level bebaya lan opsi kanggo nggarap Windows bisa ditemokake ing kene: *nangis*.

Duwe kasil nliti kesalahan sing paling menarik (lan kasil didandani) worth nyuda bebaya sing isih ana. Iki perlu supaya bebaya anyar ora ilang ing antarane sing lawas. Kajaba iku, analyzer statis minangka asisten kanggo programer, lan dudu dhaptar bug. πŸ™‚

1. Otomasi

Sawise kenalan, wektune kanggo ngatur plugin lan nggabungake menyang CI. Iki kudu ditindakake sadurunge programer miwiti nggunakake analisa statis. Kasunyatane yaiku programer bisa uga lali ngaktifake analisis utawa ora pengin nindakake kabeh. Kanggo nindakake iki, sampeyan kudu nindakake sawetara mriksa pungkasan kabeh supaya kode sing durung diuji ora bisa mlebu ing cabang pangembangan umum.

Apa sing bakal sampeyan sinau ing tahap iki:

  • Opsi otomatisasi apa sing diwenehake alat kasebut;
  • Apa analyzer kompatibel karo sistem perakitan sampeyan?

Amarga dokumentasi sing sampurna ora ana, kadhangkala sampeyan kudu nulis dhukungan. Iki normal lan kita seneng mbantu sampeyan. πŸ™‚

Saiki ayo pindhah menyang layanan integrasi terus-terusan (CI). Sembarang analyzer bisa dileksanakake menyang wong-wong mau tanpa masalah serius. Kanggo nindakake iki, sampeyan kudu nggawe panggung sing kapisah ing pipa, sing biasane ana sawise tes mbangun lan unit. Iki rampung nggunakake macem-macem keperluan console. Contone, PVS-Studio nyedhiyakake utilitas ing ngisor iki:

Kanggo nggabungake analisis menyang CI, sampeyan kudu nindakake telung perkara:

  • Instal analyzer;
  • Run analisis;
  • Ngirim asil.

Contone, kanggo nginstal PVS-Studio ing Linux (Debian-base), sampeyan kudu mbukak printah ing ngisor iki:

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-get update -qq
sudo apt-get install -qq pvs-studio

Ing sistem sing mbukak Windows, ora ana cara kanggo nginstal analyzer saka manajer paket, nanging bisa uga nggunakake analyzer saka baris perintah:

PVS-Studio_setup.exe /verysilent /suppressmsgboxes 
/norestart /nocloseapplications

Sampeyan bisa maca liyane babagan masang PVS-Studio ing sistem sing nganggo Windows *kene*.

Sawise instalasi, sampeyan kudu mbukak analisis langsung. Nanging, dianjurake kanggo nindakake iki mung sawise kompilasi lan tes wis lulus. Iki amarga analisis statis biasane njupuk kaping pindho suwene kompilasi.

Wiwit cara peluncuran gumantung ing platform lan fitur proyek, aku bakal nuduhake pilihan kanggo C ++ (Linux) minangka conto:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w

Printah pisanan bakal nindakake analisis, lan kaloro amplopngowahi laporan menyang format teks, nampilake ing layar lan ngasilake kode bali liyane saka 0 yen ana bebaya. Mekanisme kaya iki bisa digunakake kanthi gampang kanggo mblokir bangunan nalika ana pesen kesalahan. Nanging, sampeyan bisa tansah mbusak gendΓ©ra -w lan aja mblokir kumpulan sing ngemot bebaya.

Wigati. Format teks ora trep. Iku diwenehake mung minangka conto. Pay manungsa waΓ© menyang format laporan sing luwih menarik - FullHtml. Iku ngijini sampeyan kanggo navigasi liwat kode.

Sampeyan bisa maca liyane babagan nyetel analisis ing CI ing artikel "PVS-Studio lan Integrasi terus-terusan"(Windows) utawa"Carane nyiyapake PVS-Studio ing Travis CI"(Linux).

Oke, sampeyan wis ngonfigurasi analisa ing server mbangun. Saiki, yen ana wong sing ngunggah kode sing durung diuji, tahap verifikasi bakal gagal, lan sampeyan bakal bisa ndeteksi masalah kasebut, nanging iki ora trep, amarga luwih efisien mriksa proyek kasebut ora sawise cabang digabung, nanging sadurunge, ing tataran panyuwunan tarik. A.

UmumΓ©, nyiyapake analisis panjaluk narik ora beda karo peluncuran analisis biasa ing CI. Kajaba kanggo njaluk dhaptar file sing diganti. Iki biasane bisa dipikolehi kanthi takon beda antarane cabang nggunakake git:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

Saiki sampeyan kudu ngirim dhaptar file iki menyang analyzer minangka input. Contone, ing PVS-Studio iki dileksanakake nggunakake flag -S:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Sampeyan bisa ngerteni luwih akeh babagan nganalisa panjaluk tarik *kene*. Sanajan CI ora ana ing dhaptar layanan sing kasebut ing artikel kasebut, sampeyan bakal nemokake bagean umum sing ditrapake kanggo teori analisis jinis iki migunani.

Kanthi nyiyapake analisis panjaluk narik, sampeyan bisa mblokir komitmen sing ngemot bebaya, saΓ©ngga nggawe wates sing kode sing durung diuji ora bisa dilewati.

Iki kabeh mesthi apik, nanging aku pengin bisa ndeleng kabeh bebaya ing sak panggonan. Ora mung saka analisa statis, nanging uga saka tes unit utawa saka analisa dinamis. Ana macem-macem layanan lan plugin kanggo iki. PVS-Studio, contone, wis plugin kanggo integrasi menyang SonarQube.

2. Integrasi ing mesin pangembang

Saiki wektune kanggo nginstal lan ngatur analisa kanggo panggunaan pangembangan saben dina. Ing titik iki, sampeyan wis dadi akrab karo umume cara kerja, mula iki bisa diarani bagean sing paling gampang.

Minangka pilihan sing paling gampang, pangembang bisa nginstal analisa sing dibutuhake dhewe. Nanging, iki bakal entuk akeh wektu lan ngganggu pembangunan, supaya sampeyan bisa ngotomatisasi proses iki kanthi nggunakake installer lan panji sing dibutuhake. Kanggo PVS-Studio ana macem-macem panji kanggo instalasi otomatis. Nanging, mesthi ana manajer paket, contone, Chocolatey (Windows), Homebrew (macOS) utawa puluhan opsi kanggo Linux.

Banjur sampeyan kudu nginstal plugins sing dibutuhake, contone kanggo visual Studio, IDEA, Rider etc.

3. Panggunaan saben dina

Ing tahap iki, wektune kanggo ngomong sawetara tembung babagan cara nyepetake analisa sajrone nggunakake saben dina. Analisis lengkap kabeh proyek mbutuhake wektu akeh, nanging sepira kerepe kita ngganti kode ing kabeh proyek bebarengan? Ora ana refactoring sing gedhe banget sing bakal langsung mengaruhi kabeh basis kode. Jumlah file sing diganti ing wektu arang ngluwihi rolas, supaya ana gunane kanggo nganalisa. Kanggo kahanan kaya mengkono ana mode analisis tambahan. Aja kuwatir, iki dudu alat liyane. Iki minangka mode khusus sing ngidini sampeyan nganalisa mung file sing diganti lan dependensi, lan iki kedadeyan kanthi otomatis sawise mbangun yen sampeyan nggarap IDE kanthi plugin sing diinstal.

Yen analisa ndeteksi masalah ing kode sing bubar diganti, bakal laporan iki independen. Contone, PVS-Studio bakal ngandhani babagan iki nggunakake tandha:

Analisis statis - saka introduksi kanggo integrasi
Mesthi, ngandhani pangembang nggunakake alat kasebut ora cukup. We kudu piye wae marang wong-wong mau apa iku lan carane iku. Ing kene, contone, ana artikel babagan wiwitan cepet kanggo PVS-Studio, nanging sampeyan bisa nemokake tutorial sing padha kanggo alat apa wae sing disenengi:

Artikel kasebut nyedhiyakake kabeh informasi sing dibutuhake kanggo panggunaan saben dina lan ora butuh wektu akeh. πŸ™‚

Malah ing tataran ngerteni alat kasebut, kita nahan akeh bebaya sajrone salah sawijining peluncuran pisanan. Sayange, analisa statis ora sampurna, mula saka wektu-wektu menehi positip palsu. Biasane gampang kanggo nyuda; contone, ing plugin PVS-Studio kanggo Visual Studio sampeyan mung kudu ngeklik tombol siji:

Analisis statis - saka introduksi kanggo integrasi
Nanging, sampeyan bisa nindakake luwih saka mung nyuda. Contone, sampeyan bisa nglaporake masalah kanggo ndhukung. Yen positif palsu bisa didandani, banjur ing nganyari mangsa sampeyan bisa sok dong mirsani yen saben-saben ana kurang lan kurang positif palsu khusus kanggo basis kode sampeyan.

Sawise integrasi

Dadi, kita wis ngliwati kabeh tahapan nggabungake analisis statis menyang proses pangembangan. Sanajan pentinge nyetel alat kasebut ing CI, papan sing paling penting kanggo mbukak yaiku komputer pangembang. Sawise kabeh, analisa statis dudu hakim sing ujar manawa kode kasebut ora apik. Kosok baline, iku asisten sing ngandhani yen sampeyan kesel lan ngelingake yen sampeyan wis lali.

Bener, tanpa nggunakake biasa, analisis statis ora bisa nyederhanakake pembangunan. Sawise kabeh, entuk manfaat utamane kanggo pangembang ora mung kanggo nggoleki bagean kode sing rumit lan kontroversial, nanging ing deteksi awal. Setuju yen nemokake masalah sawise suntingan wis dikirim kanggo testing ora mung ora nyenengake, nanging uga akeh wektu. Analisis statis, yen digunakake kanthi rutin, ndeleng saben owah-owahan langsung ing komputer lan nglaporake panggonan sing curiga nalika nggarap kode kasebut.

Lan yen sampeyan utawa kanca-kanca sampeyan isih ora yakin manawa analisa kudu ditindakake, mula aku saranake sampeyan miwiti maca artikel kasebut "Alasan kanggo ngenalake penganalisa kode statis PVS-Studio menyang proses pangembangan". Iki alamat uneg-uneg khas pangembang sing analisis statis bakal njupuk wektu lan ing.

Analisis statis - saka introduksi kanggo integrasi

Yen sampeyan pengin nuduhake artikel iki karo pamirsa sing nganggo basa Inggris, gunakake tautan terjemahan: Maxim Zvyagintsev. Analisis Statis: Saka Miwiti nganti Integrasi.

Source: www.habr.com

Add a comment