Bli kjent med den statiske analysatoren PVS-Studio når du utvikler C++-programmer i miljøet Linux

Bli kjent med den statiske analysatoren PVS-Studio når du utvikler C++-programmer i miljøet LinuxPVS-Studio støtter analyse av prosjekter skrevet i C, C++, C# og Java. Analysatoren kan brukes på systemer Windows, Linux и macOSDenne artikkelen vil diskutere analyse av kode skrevet i C og C++ i miljøet Linux.

Installasjon

Installer PVS-Studio under Linux Det finnes flere måter å gjøre dette på, avhengig av distribusjonstypen. Den mest praktiske og foretrukne metoden er å bruke et repository, da dette tillater automatiske oppdateringer av analysatoren når nye versjoner slippes. Det andre alternativet er å bruke en installasjonspakke, som kan lastes ned. her.

Kommandoene du må kjøre for installasjon avhenger av distribusjonen. Linux, som du bruker. For eksempel for systemer basert på Debian, installasjon fra depotet ser slik ut:

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

For å installere PVS-Studio fra installasjonspakken, kan du bruke gdebi-verktøyet:

sudo gdebi pvs-studio-VERSION.deb

Installasjonsprosessen er beskrevet mer detaljert i "Installere og oppdatere PVS-Studio i Linux» dokumentasjon. Der finner du også informasjon om systemer som ikke er basert på Debian.

Etter installasjonen må du legge inn lisensdata. For dette brukes kommandoen

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

hvor NAME и KEY – navnet som lisensen er registrert under og lisensnøkkelen. Valgfri parameter -eller lar deg spesifisere banen der lisensfilen skal genereres. Som standard er det lagret i katalogen ~/.config/PVS-Studio/.

Du kan få en prøvenøkkel på siden "Last ned og prøv PVS-Studio".

Prosjektverifisering

Etter å ha installert analysatoren, kan du begynne å sjekke prosjekter. Det er to hovedmåter å gjøre dette på:

  1. Overvåking av kompilering;
  2. Kjør i byggeprosessen direkte fra byggesystemet.

La oss se på den første metoden først. For å starte overvåking under Linux, trenger du et verktøy strace. Analysatoren bruker den til å samle informasjon om hvilke prosesser som kjørte under oppbyggingen av prosjektet.

Lanseringen gjøres med følgende kommando:

pvs-studio-analyzer trace -- make

Dette eksemplet bruker make to build, men make kan erstattes av en hvilken som helst annen kommando du bruker for å starte byggingen. Kommandolinjeparametere kan sendes til den på vanlig måte.

Når den er bygget, vil strace lage en fil som parseren vil bruke for å sjekke kildekoden. Du kan starte analysen med kommandoen

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

Utdataene vil være en kodet fil med resultatene, som du kan konvertere til et av de støttede formatene. Vi skal se på arbeidet med rapporter i neste avsnitt.

I tillegg til å bruke strace, kan analyse også kjøres basert på en fil compile_commands.json (JSON Compilation Database). Mange byggesystemer lar deg eksportere kompilatorpåkallingskommandoer, eller du kan bruke verktøyet BJØRN. I dette tilfellet kan analysen startes med kommandoen

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

Det skal bemerkes at analysatoren gjenkjenner den brukte kompilatoren ved navnet på den kjørbare filen. Hvis du får feilmeldingen "Ingen kompileringsenheter funnet" når du sjekker, prøv å spesifisere navnet på kompilatoren din gjennom parameteren --kompilator eller -c:

pvs-studio-analyzer analyze -c MyCompiler

Dette kan være nødvendig når du krysskompilerer og bruker kompilatorer med ikke-standard kjørbare filnavn.

I tillegg til å kjøre i monitormodus, kan du integrere analysatoren i byggesystemet eller IDE. Du kan finne eksempler på prosjekter med allerede konfigurert integrasjon på GitHub i PVS_Studio-depotet:

Mer detaljerte instruksjoner om hvordan du kjører analysen finner du nedenfor. Linux se inn dokumentasjon.

Arbeid med rapporter

Etter å ha kontrollert designet, genererer analysatoren en kodet rapport. For å konvertere den til et av de støttede formatene, bør du bruke verktøyet plog-omformer, som monteres sammen med PVS-Studio.

Verktøyet støtter følgende formater:

  • xml – et praktisk format for ytterligere behandling av analyseresultater, støttet av en plugin for SonarQube;
  • csv er et tekstformat designet for å representere tabelldata;
  • feilfil - gcc og clang utdataformat;
  • oppgaveliste - feilformat som kan åpnes i QtCreator;
  • html – html-rapport med en kort beskrivelse av analyseresultatene;
  • fullhtml – html-rapport med analyseresultater sortert etter ulike parametere og kildekodenavigasjon.

For å se rapporten er fullhtml-formatet mest praktisk, siden det lar deg hoppe til kildekodelinjen der advarselen oppsto. Følgende kommando lar deg konvertere analysatorrapporten til dette formatet:

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

Etter å ha utført kommandoen, vil en katalog bli opprettet /bane/rapport_dir, som vil inneholde rapportfilene.

Vær oppmerksom på nøkkelen -a. Den lar deg spesifisere hvilke advarsler som skal inkluderes i rapporten. Dette er praktisk hvis det er behov for å filtrere analysatorutgangen. Kommandoen ovenfor vil generere en rapport som kun inneholder advarsler fra den generelle analysegruppen for det første og andre konfidensnivået (Høyt и Medium).

Rapporteksempel:

Bli kjent med den statiske analysatoren PVS-Studio når du utvikler C++-programmer i miljøet Linux

Ved klikk i en celle Vårt kontor: meldinger, kan du hoppe til den tilsvarende kodelinjen:

Bli kjent med den statiske analysatoren PVS-Studio når du utvikler C++-programmer i miljøet Linux

Klikk på diagnosenummeret i kolonnen Kode vil åpne dokumentasjonen som beskriver denne diagnosen.

Analysatorundertrykkelse

Når du sjekker koden med en statisk analysator, er falske positive eller rett og slett uønskede meldinger (støy) mulig. PVS-Studio tilbyr mekanismer for å undertrykke slike advarsler. For individuell undertrykkelse av alarmer kan du bruke en av metodene beskrevet i dokumentasjonsdelen "Undertrykkelse av falsk advarsel".

Også når man analyserer gammel kode, kan det være nødvendig å massivt undertrykke alle meldinger. Som regel er dette nødvendig for å sjekke kun koden som er lagt til den eksisterende kodebasen. For å gjøre dette, bruk parameteren undertrykke verktøy pvs-studio-analyzer.

Du kan masseundertrykke meldinger i en rapport med følgende kommando:

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

Informasjon om undertrykte meldinger lagres i en fil suppress_base.json, som ligger ved siden av prosjektet. Slike meldinger er ekskludert fra rapporten i etterfølgende kontroller.

Denne mekanismen er beskrevet mer detaljert i dokumentasjonen. her.

Konklusjon

Dette var en kort introduksjon til bruk av PVS-Studio-analysatoren under LinuxJeg håper dette var nyttig og at det besvarte noen av de vanligste spørsmålene dine. Du kan lese mer om dette emnet i dokumentasjonen. her.

Bli kjent med den statiske analysatoren PVS-Studio når du utvikler C++-programmer i miljøet Linux

Hvis du vil dele denne artikkelen med et engelsktalende publikum, vennligst bruk oversettelseslenken: Yuri Minaev. Komme i gang med PVS-Studio Static Analyzer for C++-utvikling under Linux.

Kilde: www.habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster