Pažintis su PVS-Studio statiniu analizatoriumi kuriant C++ programas šioje aplinkoje Linux

Pažintis su PVS-Studio statiniu analizatoriumi kuriant C++ programas šioje aplinkoje Linux„PVS-Studio“ palaiko C, C++, C# ir Java kalbomis parašytų projektų analizę. Analizatorių galima naudoti sistemose Windows, Linux и macOSŠiame straipsnyje bus aptarta C ir C++ kalbomis parašyto kodo analizė aplinkoje Linux.

Montavimas

Įdiekite PVS-Studio Linux Yra keli būdai tai padaryti, priklausomai nuo platinimo tipo. Patogiausias ir pageidaujamas būdas yra naudoti saugyklą, nes tai leidžia automatiškai atnaujinti analizatorių, kai išleidžiamos naujos versijos. Antrasis variantas – naudoti diegimo paketą, kurį galima atsisiųsti. čia.

Komandos, kurias reikia paleisti diegimui, priklauso nuo platinimo. Linux, kurį naudojate. Pavyzdžiui, sistemoms, pagrįstoms Debian, diegimas iš saugyklos atrodo taip:

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

Norėdami įdiegti PVS-Studio iš diegimo paketo, galite naudoti gdebi įrankį:

sudo gdebi pvs-studio-VERSION.deb

Diegimo procesas išsamiau aprašytas "PVS-Studio diegimas ir atnaujinimas Linux» dokumentaciją. Ten taip pat galite rasti informacijos apie sistemas, kurios nėra pagrįstos Debian.

Įdiegę turite įvesti licencijos duomenis. Tam naudojama komanda

pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]

kur VARDAS и PAGRINDINIAI – pavadinimas, kuriuo licencija registruota, ir licencijos raktas. Pasirenkamas parametras -arba leidžia nustatyti kelią, kuriuo bus generuojamas licencijos failas. Pagal numatytuosius nustatymus jis saugomas kataloge ~/.config/PVS-Studio/.

Bandomąjį raktą galite gauti puslapyje "Atsisiųskite ir išbandykite PVS-Studio"

Projekto patikrinimas

Įdiegę analizatorių galite pradėti tikrinti projektus. Yra du pagrindiniai būdai tai padaryti:

  1. Kompiliacijos stebėjimas;
  2. Vykdykite kūrimo procesą tiesiai iš kūrimo sistemos.

Pirmiausia panagrinėkime pirmąjį metodą. Norėdami pradėti stebėti pagal Linux, jums reikės įrankio trace. Analizatorius jį naudoja rinkdamas informaciją apie tai, kokie procesai buvo vykdomi kuriant projektą.

Paleidimas atliekamas naudojant šią komandą:

pvs-studio-analyzer trace -- make

Šiame pavyzdyje naudojama make to build, tačiau make gali būti pakeista bet kuria kita komanda, kurią naudojate kūrimui pradėti. Komandinės eilutės parametrus jai galima perduoti įprastu būdu.

Sukūręs „strace“ sukurs failą, kurį analizatorius naudos šaltinio kodui patikrinti. Galite pradėti analizę naudodami komandą

pvs-studio-analyzer analyze -o /path/to/project.log

Išvestis bus užkoduotas failas su rezultatais, kurį galėsite konvertuoti į vieną iš palaikomų formatų. Kaip dirbti su ataskaitomis, aptarsime kitame skyriuje.

Be „strace“ naudojimo, analizė taip pat gali būti vykdoma remiantis failu compile_commands.json (JSON kompiliavimo duomenų bazė). Daugelis kūrimo sistemų leidžia eksportuoti kompiliatoriaus iškvietimo komandas arba galite naudoti įrankį TURĖTI. Tokiu atveju analizę galima pradėti komanda

pvs-studio-analyzer analyze –f /path/to/compile_commands.json

Reikėtų pažymėti, kad analizatorius atpažįsta naudojamą kompiliatorių pagal vykdomojo failo pavadinimą. Jei tikrindami gaunate klaidą „Nerasta kompiliavimo vienetų“, pabandykite nurodyti kompiliatoriaus pavadinimą per parametrą --kompiliatorius arba –c:

pvs-studio-analyzer analyze -c MyCompiler

To gali prireikti atliekant kryžminį kompiliavimą ir naudojant kompiliatorius su nestandartiniais vykdomųjų failų pavadinimais.

Analizatorių galite ne tik veikti monitoriaus režimu, bet ir integruoti į savo kūrimo sistemą arba IDE. Projektų su jau sukonfigūruota integracija pavyzdžių galite rasti adresu GitHub PVS_Studio saugykloje:

Išsamesnės instrukcijos, kaip atlikti analizę, pateiktos toliau. Linux pamatyti dokumentacija.

Darbas su ataskaitomis

Patikrinęs projektą, analizatorius generuoja koduotą ataskaitą. Norėdami konvertuoti jį į vieną iš palaikomų formatų, turėtumėte naudoti įrankį plog-keitiklis, kuris montuojamas kartu su PVS-Studio.

Priemonė palaiko šiuos formatus:

  • xml – patogus formatas papildomam analizės rezultatų apdorojimui, palaikomas SonarQube įskiepio;
  • csv yra teksto formatas, skirtas lentelės duomenims pavaizduoti;
  • errorfile - gcc ir clang išvesties formatas;
  • užduočių sąrašas – klaidos formatas, kurį galima atidaryti QtCreator;
  • html – html ataskaita su trumpu analizės rezultatų aprašymu;
  • fullhtml – html ataskaita su analizės rezultatais, surūšiuotais pagal skirtingus parametrus ir šaltinio kodo naršymą.

Norėdami peržiūrėti ataskaitą, patogiausias yra fullhtml formatas, nes jis leidžia pereiti prie šaltinio kodo eilutės, kurioje buvo įspėjimas. Ši komanda leidžia konvertuoti analizatoriaus ataskaitą į šį formatą:

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

Įvykdžius komandą, bus sukurtas katalogas /path/report_dir, kuriame bus ataskaitos failai.

Atkreipkite dėmesį į raktą -a. Tai leidžia nurodyti, kurie įspėjimai turi būti įtraukti į ataskaitą. Tai patogu, jei reikia filtruoti analizatoriaus išvestį. Aukščiau pateikta komanda sugeneruos ataskaitą, kurioje bus tik įspėjimai iš bendros pirmojo ir antrojo patikimumo lygių analizės grupės (aukštas и vidutinis).

Ataskaitos pavyzdys:

Pažintis su PVS-Studio statiniu analizatoriumi kuriant C++ programas šioje aplinkoje Linux

Spustelėjus langelyje Lokacija pranešimus, galite pereiti prie atitinkamos kodo eilutės:

Pažintis su PVS-Studio statiniu analizatoriumi kuriant C++ programas šioje aplinkoje Linux

Stulpelyje spustelėkite diagnostinį numerį kodas bus atidaryta dokumentacija, aprašanti šią diagnostiką.

Analizatoriaus slopinimas

Tikrinant kodą statiniu analizatoriumi, galimi klaidingi teigiami rezultatai arba tiesiog nepageidaujami pranešimai (triukšmas). „PVS-Studio“ pateikia tokių įspėjimų slopinimo mechanizmus. Jei norite atskirti aliarmų slopinimą, galite taikyti vieną iš metodų, aprašytų dokumentacijos skyriuje "Klaidingo įspėjimo slopinimas"

Be to, analizuojant seną kodą gali prireikti masiškai slopinti visus pranešimus. Paprastai tai būtina norint patikrinti tik kodą, kuris įtrauktas į esamą kodų bazę. Norėdami tai padaryti, naudokite parametrą slopinti Komunalinės paslaugos pvs-studio-analizatorius.

Galite masiškai nuslėpti pranešimus ataskaitoje naudodami šią komandą:

pvs-studio-analyzer suppress /path/to/report.log

Informacija apie užblokuotus pranešimus saugoma faile suppress_base.json, kuris yra šalia projekto. Tokie pranešimai į ataskaitą neįtraukiami vėlesnių patikrinimų metu.

Šis mechanizmas išsamiau aprašytas dokumentacijoje. čia.

išvada

Tai buvo trumpas įvadas į PVS-Studio analizatoriaus naudojimą LinuxTikiuosi, kad tai buvo naudinga ir atsakė į kai kuriuos dažniausiai užduodamus klausimus. Daugiau apie šią temą galite perskaityti dokumentacijoje. čia.

Pažintis su PVS-Studio statiniu analizatoriumi kuriant C++ programas šioje aplinkoje Linux

Jei norite pasidalinti šiuo straipsniu su angliškai kalbančia auditorija, naudokite vertimo nuorodą: Jurijus Minajevas. Darbo su PVS-Studio statiniu analizatoriumi, skirtu C++ kūrimui, pradžia Linux.

Šaltinis: www.habr.com

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster