Ndabona upapasho olwathi iPVS yalufunda ukuhlalutya phantsi kweLinux, kwaye ndagqiba kwelokuba ndiyizame kwiiprojekthi zam. Kwaye oku kuphuma kuyo.
Iziqulatho
ΠΠ»ΡΡΡ
Inkxaso ephendulayo
Ndacela isitshixo sesilingo baza bandithumelela sona kwangaloo mini.
Amaxwebhu acacileyo
Sikwazile ukuqalisa i-analyzer ngaphandle kweengxaki. Uncedo lwemiyalelo yeconsole lukwakhona (nangona kukho izikhalazo apha, bona icandelo
Ukubakho kohlalutyo lwemisonto emininzi
I-analyzer inokhetho "oluqhelekileyo". -j
, ukuvumela uhlalutyo lwenziwe ngokuhambelanayo kwimisebenzi emininzi. Oku konga ixesha elininzi.
Ukubona kakuhle
Iifomati ezininzi zemveliso ezahlukeneyo, ukusuka kwisicatshulwa ukuya kumlomo omncinci wewebhu.
Ukuhlanganiswa okulula kwindibano
Onke amaxwebhu akwiwebhusayithi yabo, ndingatsho kuphela ukuba ukuba iprojekthi yakho yakhiwe kusetyenziswa iCMake, ke yonke into ilula kakhulu.
Iinkcazo ezilungileyo zokuxilonga
Ukuba uvelisa imveliso kwimowudi fullhtml
, ngoko umyalezo ngamnye unekhonkco kwinkcazo yokuxilonga, kunye neenkcazo, imizekelo yekhowudi kunye neekhonkco ezongezelelweyo.
ΠΠΈΠ½ΡΡΡ
Ukungazi kakuhle ulwimi lwe-C ++ ngumhlalutyi
Ngelishwa, i-PVS ngamanye amaxesha yenza iimpazamo zesintaksi kwaye ivelise imiyalezo emihle yobuxoki xa ikhowudi ichanekile ngokupheleleyo.
Umzekelo, kukho umsebenzi obuyayo void
:
template <typename T>
auto copy (const void * source, void * destination)
->
std::enable_if_t
<
std::is_copy_constructible<T>::value
>
{
new (destination) T(*static_cast<const T *>(source));
}
Ewe ligama eliphambili auto
Inokuthetha void
, yiyo loo nto auto. Kodwa i-PVS ivelise le miyalezo ilandelayo:
dynamic_tuple_management.hpp:29:1: error: V591 Non-void function should return a value.
dynamic_tuple_management.hpp:29:1: error: V2542 Function with a non-void return type should return a value from all exit paths.
Indawo ecothayo kakhulu
Ewe, kwi-web interface ecaleni komyalezo ngamnye kukho ikhonkco kwinkcazo yokuxilonga ehambelana nemizekelo. Kodwa xa ucofa ikhonkco, kufuneka ulinde ixesha elide, kwaye ngamanye amaxesha kuyenzeka
ULwimi
Zonke iinkcazo zifumaneka ngesiRashiya, nto leyo intle. Kodwa amakhonkco avela kwingxelo ahlala ekhokelela kwinguqulelo yesiNgesi. Kuya kuba kuhle ukukwazi ukutshintsha ulwimi ukuze ukwazi ukujonga ukuxilongwa kwangoko ngesiRashiya. Khange ndifumane ukhetho olunjalo kujongano.
Kuyaphazamisa ukusebenza kunye namanqanaba oxilongo nge-console
Masiqale ngento yokuba kusetyenziswe imiyalelo emibini (le pvs-studio-analyzer
ΠΈ plog-converter
) iindlela ezahlukeneyo zokuchaza uxilongo.
Uncedo lwe pvs-studio-analyzer
iyafunda:
-a [MODE], --analysis-mode [MODE]
MODE defines the type of warnings:
1 - 64-bit errors;
2 - reserved;
4 - General Analysis;
8 - Micro-optimizations;
16 - Customers Specific Requests;
32 - MISRA.
Modes can be combined by adding the values
Default: 4
Ndichithe ixesha elide ndizama ukucinga ukuba mandiye ngaphi yongeza (βukongeza amaxabisoβ) amaqhosha. Ndizamile ukuzidwelisa zahlulwe ziikoma:
pvs-studio-analyzer analyze ... -a 1,4,16
Ndizame ukubhalisa isitshixo amaxesha amaninzi:
pvs-studio-analyzer analyze ... -a 1 -a 4 -a 16
Kulapho ndaye ndabona ukuba ezi yayiziimaski! Kwaye kufuneka shwankathela, kwaye akunjalo yongeza iintsingiselo. Umzekelo, ukufumana uxilongo oluqhelekileyo, uxilongo lwe-micro-optimizations kunye ne-MISRA, kufuneka uzishwankathele (4 + 8 + 32 = 44):
pvs-studio-analyzer analyze ... -a 44
Ukusebenzisa ii-bitmasks kujongano lomsebenzisi ngokuqhelekileyo kuyifomu embi. Konke oku kunokushwankathelwa ngaphakathi, kwaye iseti yeeflegi zinokumiselwa umsebenzisi.
Ukongeza, kukho kwakhona usetyenziso plog-converter
, eyenza ulwazi lohlalutyo lwe-static olufundeka ngabantu. Unezinye iingxaki.
Uncedo lwenkqubo plog-converter
Iingxelo:
-a, --analyzer Specifies analyzer(s) and level(s) to be
used for filtering, i.e.
'GA:1,2;64:1;OP:1,2,3;CS:1;MISRA:1,2'
Default: GA:1,2
Amanye "amanqanaba" avele apha awayengekho ngaphambili, kwaye andizange ndifumane nto malunga nawo kumaxwebhu.
Ngokubanzi, akucaci. Yiyo loo nto ndibeka yonke into phezulu.
Iqela lezidenge ziyathuka kuBamba
Ezimbini kwiiprojekthi ezintathu endizihlalutyileyo zisebenzisa ithala leencwadi lovavanyo
Ayithatheli ngqalelo i-multithreading
Kukho izinto ezininzi ezingeyonyani malunga neenguqu ezingaguqukiyo okanye iilophu ezingenasiphelo, ngelixa ukusebenza kwezi ziguquguqukayo kwenzeka kwimisonto eyahlukeneyo, kwaye ukuba oku bekungenjalo, iimvavanyo zeyunithi bezingayi kusebenza.
Nangona kunjalo, ngaba umhlalutyi ongatshintshiyo unokuthatha ingqalelo oku? Ndazi.
Iziphumo
I-PVS ayifumananga naziphi na iibhugi kwiiprojekthi zam zomthombo ovulekileyo scan-build
Ngokubanzi, impembelelo evela kubo bonke aba bahlalutyi iphantse ifane: ewe, babamba into ethile, ngamanye amaxesha nento ebalulekileyo, kodwa ngokubanzi umqambi wanele.
Kuyenzeka (kwaye mna ngokobuqu ndiyathanda ukucinga njalo) ukuba iqela lethu lisebenzise iinkqubo zophuhliso lwesoftware esivumela ukuba sivelise ubuncinci bekhowudi ye-shitty. Kungcono ukungazidali iingxaki kunokuzoyisa ngobugorha.
Ngoko ke, ndithatha inkululeko yokunika iingcebiso malunga nendlela yokubhala kwi-C ++ ngendlela yokuba ungadubuli imilenze yomntu okanye ubethe nabani na ebunzi ngeraki.
Yenza uninzi loxilongo lomqokeleli
Iqela lethu lisebenzisa (kwaye likucebisa ukuba) olu khetho lulandelayo luhlanganiselwe:
-Werror
-Wall
-Wextra
-Wpedantic
-Wcast-align
-Wcast-qual
-Wconversion
-Wctor-dtor-privacy
-Wenum-compare
-Wfloat-equal
-Wnon-virtual-dtor
-Wold-style-cast
-Woverloaded-virtual
-Wredundant-decls
-Wsign-conversion
-Wsign-promo
Yenza ukuba zisebenze kwiprojekthi yakho kwaye ufunde okuninzi malunga nekhowudi yakho.
Namathela kumgangatho
Zama ukungasebenzisi izinto ezixhomekeke kwiqonga ukuba kukho ii-analogues eziqhelekileyo, kwaye ukuba awukwazi ukwenza ngaphandle kwazo, zisonge kwiibhloko ezikhethekileyo zeemacros (okanye enye into) kwaye ungavumeli ikhowudi yakho ihlanganiswe phantsi kweemeko ezingaxhaswanga.
Namathela kwisemantics yokusebenza esemgangathweni
Ukongezwa kufuneka kongezwe, uphinda-phindo maluphindaphindeke, ukufowunelwa komsebenzi makube lubizo lomsebenzi, ikopi mayibe yikopi, ithwalwe, isikhongozeli masiphindaphindeke, umphinda-phindwa kufuneka anyuswe. ++
kunye nokunciphisa *
. Kwaye njalo njalo njalo.
Ndicinga ukuba ingcamango icacile. Kukho iindibano ezisekiweyo ezingabopheleliyo, kodwa ukuba bonke abasebenzisi kunye nabafundi bekhowudi yakho balindele ukuyibona. Musa ukuzama ukoyisa abanye, kungenjalo uya kuzenza ngaphezu kwakho.
Bhala ikhowudi ehambelanayo
Okokuqala, ndithetha ilayibrari eqhelekileyo. Kunqweneleka kakhulu ukuba ujongano lweeklasi zakho kunye nemisebenzi inokusetyenziselwa umgangatho kunye namanye amathala eencwadi (umzekelo, uBoost).
Zive ukhululekile ukuba ujonge kwi-STL kunye ne-Boost interfaces. Ngaphandle kwezinto ezinqabileyo, uya kubona umzekelo ofanelekileyo apho.
Yenza uninzi lwezixhobo zomthombo ovulekileyo
Kuhlalutyo olufanayo lwe-static, kukho ubuncinci izixhobo ezibini ezivulekileyo zasimahla ezinokudityaniswa kanye kuyo nayiphi na iprojekthi ngenkqubo yokwakha ye-CMake.
Emva kwegama
Ekugqibeleni, ndingathanda ukugxininisa ukuba andikhuthazi ukuba ndingasebenzisi i-PVS okanye nayiphi na enye i-static analyzers. Kodwa ndiyakukhuthaza ukuba ucinge malunga nendlela eyenzeka ngayo ukuba umhlalutyi we-static uhlala efumana iimpazamo ezibalulekileyo kwikhowudi yakho.
Lo ngumphumo nje. Kufuneka sikhangele kwaye siphelise unobangela.
umthombo: www.habr.com