PVS-Studio ṣe atilẹyin fun itupalẹ awọn iṣẹ akanṣe ti a kọ ni C, C++, C#, ati Java. A le lo oluyẹwo naa lori awọn eto. Windows, Linux и macOSÀpilẹ̀kọ yìí yóò jíròrò ìṣàyẹ̀wò kódì tí a kọ ní C àti C++ nínú àyíká Linux.
eto
Fi PVS-Studio sori ẹrọ labẹ Linux Ọ̀nà púpọ̀ ló wà láti ṣe èyí, ó sinmi lórí irú ìpínkiri náà. Ọ̀nà tó rọrùn jùlọ àti èyí tó wù ú jùlọ ni láti lo ibi ìpamọ́, nítorí èyí ń jẹ́ kí a ṣe àtúnṣe aládàáṣe ti analyzer nígbà tí a bá tú àwọn ẹ̀yà tuntun jáde. Àṣàyàn kejì ni láti lo àpò ìfisẹ́lé, èyí tí a lè gbà láti gba. .
Àwọn àṣẹ tí o nílò láti ṣiṣẹ́ fún fífi sori ẹrọ sinmi lórí ìpínkiri náà. Linux, èyí tí o ń lò. Fún àpẹẹrẹ, fún àwọn ètò tí ó dá lórí Debian, fifi sori ẹrọ lati ibi ipamọ naa dabi eyi:
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-studioLati fi PVS-Studio sori ẹrọ lati package fifi sori ẹrọ, o le lo ohun elo gdebi:
sudo gdebi pvs-studio-VERSION.debIlana fifi sori ẹrọ jẹ apejuwe ni awọn alaye diẹ sii ni "» àwọn ìwé. Níbẹ̀ o tún le rí ìwífún nípa àwọn ètò tí kò dá lórí Debian.
Lẹhin fifi sori ẹrọ, o nilo lati tẹ data iwe-aṣẹ sii. Fun eyi, a lo aṣẹ naa
pvs-studio-analyzer credentials NAME KEY [-o LIC-FILE]Nibo orukọ и KỌ – orukọ labẹ eyiti iwe-aṣẹ ti forukọsilẹ ati bọtini iwe-aṣẹ. Iyan paramita -tabi gba ọ laaye lati ṣeto ọna nibiti faili iwe-aṣẹ yoo ṣe ipilẹṣẹ. Nipa aiyipada o ti wa ni ipamọ sinu ilana ~/.config/PVS-Studio/.
O le gba bọtini idanwo lori oju-iwe naa "".
Ijeri ise agbese
Lẹhin fifi sori ẹrọ atunnkanka, o le bẹrẹ ṣayẹwo awọn iṣẹ akanṣe. Awọn ọna akọkọ meji lo wa lati ṣe eyi:
- Abojuto akopọ;
- Ṣiṣe ni awọn Kọ ilana taara lati awọn Kọ eto.
Ẹ jẹ́ ká kọ́kọ́ wo ọ̀nà àkọ́kọ́. Láti bẹ̀rẹ̀ sí í ṣe àbójútó lábẹ́ Linux, iwọ yoo nilo ohun elo kan . Oluyanju lo lati gba alaye nipa kini awọn ilana ti n ṣiṣẹ lakoko kikọ iṣẹ naa.
Ifilọlẹ naa jẹ nipasẹ aṣẹ atẹle:
pvs-studio-analyzer trace -- makeApẹẹrẹ yii nlo ṣiṣe lati kọ, ṣugbọn ṣe le paarọ rẹ nipasẹ aṣẹ miiran ti o lo lati bẹrẹ kikọ naa. Awọn paramita laini aṣẹ le kọja si rẹ ni ọna deede.
Ni kete ti a kọ, strace yoo ṣẹda faili kan ti parser yoo lo lati ṣayẹwo koodu orisun naa. O le bẹrẹ itupalẹ pẹlu aṣẹ naa
pvs-studio-analyzer analyze -o /path/to/project.logIjade yoo jẹ faili ti a fi koodu pamọ pẹlu awọn esi, eyiti o le yipada si ọkan ninu awọn ọna kika ti o ni atilẹyin. A yoo jiroro bi o ṣe le ṣiṣẹ pẹlu awọn ijabọ ni apakan atẹle.
Ni afikun si lilo strace, itupalẹ tun le ṣiṣẹ da lori faili kan compile_commands.json (JSON Compilation Database). Ọpọlọpọ awọn eto kikọ gba ọ laaye lati okeere awọn pipaṣẹ epe alakojo, tabi o le lo awọn IwUlO . Ni idi eyi, itupalẹ le bẹrẹ pẹlu aṣẹ naa
pvs-studio-analyzer analyze –f /path/to/compile_commands.jsonO yẹ ki o ṣe akiyesi pe olutupalẹ ṣe idanimọ olupilẹṣẹ ti a lo nipasẹ orukọ faili ti o ṣiṣẹ. Ti o ba ni aṣiṣe "Ko si awọn ẹya akopo ti a rii" nigbati o n ṣayẹwo, gbiyanju pato orukọ alakojọ rẹ nipasẹ paramita --akojọpọ tabi –c:
pvs-studio-analyzer analyze -c MyCompilerEyi le nilo nigba iṣakojọpọ ati lilo awọn alakojọ pẹlu awọn orukọ faili ti kii ṣe deede.
Ni afikun si ṣiṣiṣẹ ni ipo atẹle, o le ṣepọ olutupalẹ sinu eto kikọ tabi IDE rẹ. O le wa awọn apẹẹrẹ ti awọn iṣẹ akanṣe pẹlu iṣọpọ ti iṣeto tẹlẹ ni ninu ibi ipamọ PVS_Studio:
Àwọn ìtọ́ni tó kún rẹ́rẹ́ lórí bí a ṣe lè ṣe àgbéyẹ̀wò náà wà ní ìsàlẹ̀ yìí. Linux wo inu .
Ṣiṣẹ pẹlu awọn iroyin
Lẹhin ti ṣayẹwo apẹrẹ naa, olutupalẹ ṣe agbejade ijabọ koodu kan. Lati le yipada si ọkan ninu awọn ọna kika atilẹyin, o yẹ ki o lo ohun elo naa plog-iyipada, eyi ti o ti fi sori ẹrọ pọ pẹlu PVS-Studio.
IwUlO ṣe atilẹyin awọn ọna kika wọnyi:
- xml - ọna kika irọrun fun sisẹ afikun ti awọn abajade itupalẹ, ni atilẹyin nipasẹ ohun itanna fun SonarQube;
- csv jẹ ọna kika ọrọ ti a ṣe apẹrẹ lati ṣe aṣoju data tabular;
- aṣiṣe faili - gcc ati ọna kika idile;
- tasklist - aṣiṣe kika ti o le wa ni la ni QtCreator;
- html – html ijabọ pẹlu apejuwe kukuru ti awọn abajade onínọmbà;
- fullhtml – Ijabọ html pẹlu awọn abajade itupalẹ lẹsẹsẹ nipasẹ awọn aye oriṣiriṣi ati lilọ kiri koodu orisun.
Lati wo ijabọ naa, ọna kika fullhtml jẹ irọrun julọ, bi o ṣe gba ọ laaye lati fo si laini koodu orisun ninu eyiti ikilọ naa waye. Aṣẹ atẹle n gba ọ laaye lati yi ijabọ atunnkanka pada si ọna kika yii:
plog-converter -a GA:1,2 -t fullhtml /path/project.log -o /path/report_dirLẹhin ṣiṣe pipaṣẹ naa, itọsọna kan yoo ṣẹda /ona/report_dir, eyi ti yoo ni awọn faili iroyin.
San ifojusi si bọtini -a. O faye gba o lati pato iru ikilo yẹ ki o wa ninu awọn iroyin. Eyi jẹ irọrun ti iwulo ba wa lati ṣe àlẹmọ iṣelọpọ ti itupale. Aṣẹ ti o wa loke yoo ṣe agbekalẹ ijabọ kan ti yoo ni awọn ikilọ nikan lati ẹgbẹ itupalẹ gbogbogbo ti awọn ipele igbẹkẹle akọkọ ati keji (ga и alabọde).
Apeere jabo:

Tẹ lori sẹẹli kan Location awọn ifiranṣẹ, o le fo si laini koodu ti o baamu:

Tẹ nọmba aisan ti o wa ninu iwe Code yoo ṣii iwe ti n ṣalaye iwadii aisan yii.
Ipapa Oluyanju
Nigbati o ba ṣayẹwo koodu naa pẹlu olutupalẹ aimi, awọn idaniloju eke tabi awọn ifiranṣẹ aifẹ nirọrun (ariwo) ṣee ṣe. PVS-Studio n pese awọn ọna ṣiṣe fun idinku iru awọn ikilọ. Fun didi ẹni kọọkan ti awọn itaniji, o le lo ọkan ninu awọn ọna ti a ṣalaye ninu apakan iwe.".
Paapaa, nigba ti n ṣatupalẹ koodu atijọ, o le jẹ pataki lati tẹ gbogbo awọn ifiranṣẹ mọlẹ lọpọlọpọ. Gẹgẹbi ofin, eyi jẹ pataki lati ṣayẹwo nikan koodu ti o ṣafikun si koodu koodu to wa tẹlẹ. Lati ṣe eyi, lo paramita tẹmọlẹ ohun elo pvs-isise-itupalẹ.
O le di awọn ifiranšẹ idinku ninu ijabọ kan pẹlu aṣẹ atẹle:
pvs-studio-analyzer suppress /path/to/report.logAlaye nipa awọn ifiranšẹ ti tẹmọlẹ ti wa ni ipamọ sinu faili kan suppress_base.json, eyi ti o dubulẹ tókàn si ise agbese. Iru awọn ifiranṣẹ bẹẹ ni a yọkuro lati inu ijabọ ni awọn sọwedowo ti o tẹle.
Ilana yii jẹ apejuwe ni awọn alaye diẹ sii ninu iwe-ipamọ naa. .
ipari
Èyí jẹ́ ìṣáájú kúkúrú sí lílo PVS-Studio analyzer lábẹ́ LinuxMo nireti pe eyi wulo ati idahun si diẹ ninu awọn ibeere ti o maa n beere nigbagbogbo. O le ka diẹ sii nipa koko yii ninu iwe-ipamọ naa. .
Ti o ba fẹ pin nkan yii pẹlu awọn olugbo ti o sọ Gẹẹsi, jọwọ lo ọna asopọ itumọ: Yuri Minaev. .
orisun: www.habr.com
