„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. .
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-studioNorėdami įdiegti PVS-Studio iš diegimo paketo, galite naudoti gdebi įrankį:
sudo gdebi pvs-studio-VERSION.debDiegimo procesas išsamiau aprašytas "» 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 ""
Projekto patikrinimas
Įdiegę analizatorių galite pradėti tikrinti projektus. Yra du pagrindiniai būdai tai padaryti:
- Kompiliacijos stebėjimas;
- 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 . 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.logIš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į . Tokiu atveju analizę galima pradėti komanda
pvs-studio-analyzer analyze –f /path/to/compile_commands.jsonReikė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 MyCompilerTo 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 PVS_Studio saugykloje:
Išsamesnės instrukcijos, kaip atlikti analizę, pateiktos toliau. Linux pamatyti .
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:

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

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 ""
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.logInformacija 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. .
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. .
Jei norite pasidalinti šiuo straipsniu su angliškai kalbančia auditorija, naudokite vertimo nuorodą: Jurijus Minajevas. .
Šaltinis: www.habr.com
