PVS-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. .
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-studioFor å installere PVS-Studio fra installasjonspakken, kan du bruke gdebi-verktøyet:
sudo gdebi pvs-studio-VERSION.debInstallasjonsprosessen er beskrevet mer detaljert i "» 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 "".
Prosjektverifisering
Etter å ha installert analysatoren, kan du begynne å sjekke prosjekter. Det er to hovedmåter å gjøre dette på:
- Overvåking av kompilering;
- 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 . 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 -- makeDette 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.logUtdataene 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 . I dette tilfellet kan analysen startes med kommandoen
pvs-studio-analyzer analyze –f /path/to/compile_commands.jsonDet 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 MyCompilerDette 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å i PVS_Studio-depotet:
Mer detaljerte instruksjoner om hvordan du kjører analysen finner du nedenfor. Linux se inn .
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_dirEtter å 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:

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

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 "".
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.logInformasjon 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. .
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. .
Hvis du vil dele denne artikkelen med et engelsktalende publikum, vennligst bruk oversettelseslenken: Yuri Minaev. .
Kilde: www.habr.com
