Dib u eegis madax banaan ee PVS-Studio (Linux, C++)
Waxaan arkay daabacaad ay PVS ka baratay in lagu falanqeeyo Linux hoosteeda, oo waxaan go'aansaday inaan tijaabiyo mashaariicdayda. Waana tan ka soo baxday.
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));
}
Haa waa ereyga muhiimka ah auto Macnaheedu waa void, taasi waa waxa loogu talagalay baabuur. Laakiin PVS waxay soo saartay fariimahan soo socda:
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.
Goob aad u gaabis ah
Haa, interface-ka shabakada ee ku xigta fariin kasta waxaa jira xiriiriye u dhigma sharaxaadda ogaanshaha oo leh tusaalooyin. Laakiin marka aad gujiso xiriirinta, waa inaad sugtaa waqti dheer, mararka qaarkoodna way dhacdaa 504 Gateway Time-out.
Π―Π·ΡΠΊ
Dhammaan sharraxaadaha waxay ku qoran yihiin Ruush, taas oo aad u fiican. Laakin xiriirinta warbixinta ayaa had iyo jeer u horseeda nooca Ingiriisiga. Way fiicnaan lahayd inaad awood u yeelato inaad beddesho luqadda si aad u aragto ogaanshaha isla markiiba Ruush. Anigu ma helin ikhtiyaarka noocan oo kale ah interface-ka.
Ma fududa in lagu shaqeeyo heerarka ogaanshaha iyada oo loo marayo console-ka
Aan ku bilowno xaqiiqda ah in labada amar la isticmaalay (kan pvs-studio-analyzer ΠΈ plog-converter) qaabab kala duwan oo lagu qeexo ogaanshaha.
Caawinta pvs-studio-analyzer akhriyey:
-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
Waxaan waqti dheer ku qaatay inaan ogaado meel aan aado ku dar ("ku dar qiyamka") furayaasha. Waxa aan isku dayay in aan ku liso iyaga oo ay kala sooceen:
Oo markaas uun baan ogaaday in kuwani ay ahaayeen maaskaro yar! Oo aad u baahan tahay soo koobidiyo ma ku dar macnaha. Tusaale ahaan, si aad u hesho ogaanshaha guud, ogaanshaha wax-soo-saarka-yar-yar iyo MISRA, waxaad u baahan tahay inaad soo koobto (4 + 8 + 32 = 44):
pvs-studio-analyzer analyze ... -a 44
Isticmaalka 'bitmasks' ee is-dhexgalka isticmaalaha guud ahaan waa qaab xun. Waxaas oo dhan waxaa lagu soo koobi karaa gudaha, iyo calamo ayaa loo dejin karaa isticmaalaha.
Intaa waxaa dheer, waxaa sidoo kale jira utility plog-converter, kaas oo soo saara macluumaadka falanqaynta taagan ee bini'aadamku akhrin karo. Dhibaatooyin kale ayay haysataa.
-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
Qaar ka mid ah "heerarka" ayaa halkan ka muuqday oo aan horay u jirin, oo aanan waxba ka helin dukumeentiyada midkoodna.
Guud ahaan, ma cadda. Taasi waa sababta aan wax walba u dhigay heerka ugu sarreeya.
Catch nacas ah oo caydh ah
Laba ka mid ah saddexda mashruuc ee aan falanqeeyay waxay isticmaalaan maktabadda tijaabada cutubka Qabashada2. Farriimaha qaybta libaaxa (!!! 90 ka mid ah 138 ka mid ah iyo 297 ka mid ah 344 ee kale!!!) waxay leeyihiin qaabkan soo socda:
Aan xisaabta ku darsanayn isku xidhka badan
Waxaa jira waxyaabo badan oo been abuur ah oo ku saabsan doorsoomayaal aan isbeddelayn ama wareegyo aan dhammaad lahayn, halka la shaqeynta doorsoomayaashani ay ka yimaadaan dun kala duwan, iyo haddii tani aysan sidaas ahayn, markaa imtixaannada cutubku ma shaqeyn doonaan.
Si kastaba ha ahaatee, falanqeeye taagan xitaa ma ku xisaabtami karaa tan? Ma garanayo.
PVS kama helin wax kutaanno dhab ah mashaariicda ishayda furan qarxaan ΠΈ Xiga, iyo sidoo kale qabyo-qowl shaqo, taas oo, sababo cad dartood, aanan soo bandhigi karin. Run, waxaa habboon in maskaxda lagu hayo in cilladaha qaarkood mar hore la qabtay oo la saxay mar hore iyadoo la isticmaalayo Cppcheck ΠΈ scan-build.
Waa suurtogal (iyo anigu shakhsi ahaan waxaan jeclahay inaan sidaas u fekero) in kooxdeena ay isticmaalaan hababka horumarinta software ee noo ogolaanaya inaan abuurno qadarka ugu yar ee koodka shitty. Waxaa fiican in aan dhibaato la abuurin intii si geesinimo leh looga adkaan lahaa.
Sidaa darteed, waxaan xor u ahay inaan siiyo xoogaa talo ah oo ku saabsan sida loogu qoro C++ si aan qofna lugaha looga toogan ama qofna loogu dhufan wejiga.
Si fiican uga faa'iidayso ogaanshaha isku-darka
Kooxdayadu waxay adeegsataa (oo waxay kugula talinaysaa) xulashooyinka soo socda ee ururinta:
U oggolow iyaga mashruucaaga oo wax badan ka baro koodkaaga.
Ku dheji heerka
Isku day inaadan isticmaalin waxyaabo ku tiirsan madal haddii ay jiraan analogues caadiga ah, iyo haddii aadan gabi ahaanba awoodin la'aantood, ku duub baloogyo gaar ah oo loogu talagalay macro (ama shay kale) oo si fudud ha u oggolaan in koodhkaaga lagu soo ururiyo xaalado aan la taageerin.
Ku dheggan macnaha hawlgalka caadiga ah
Wax-ku-darku waa inuu ahaadaa isku-dhufasho, isku-dhufasho waa inuu noqdaa isku-dhufasho, wicitaanka shaqada waa inuu noqdaa shaqo-wac, koobi waa inuu noqdaa mid koobi ah, waa in la xambaaraa, weel la qaadi karo, waa inuu noqdaa mid la cusbooneysii karo, waa inuu leeyahay dallacaad. ++ iyo dib u dhigista *. Iyo wixi la mida iyo wixi la mida.
Waxaan filayaa in fikraddu ay caddahay. Waxa jira xeerar la aasaasay oo aan xidhnayn, laakiin dhammaan isticmaalayaasha iyo akhristayaasha koodkaagu ay filayaan inay arkaan. Ha isku dayin in aad dadka kale ka dhaadhiciso, haddii kale adigaa iska dhaafi doona.
Qor kood ku habboon
Marka hore, waxaan ula jeedaa maktabadda caadiga ah. Waxaa aad loo jecel yahay in is dhex galka fasalladaada iyo shaqooyinkaaga loo isticmaali karo heerar iyo maktabado kale (tusaale, Kobcinta).
Dareen xor u ah inaad eegto STL iyo kor u qaadida isdhexgalka. Marka laga reebo naadir, waxaad halkaas ku arki doontaa qof ku dayasho mudan.
Ka faa'iidayso agabka il furan
Falanqaynta isku midka ah, waxaa jira ugu yaraan laba qalab oo furan oo bilaash ah kuwaas oo lagu xidhi karo hal mar mashruuc kasta oo leh nidaamka dhismaha CMake.
Ugu dambeyntii, waxaan jeclaan lahaa inaan carrabka ku adkeeyo inaanan u doodin inaanan isticmaalin PVS ama falanqeeyayaasha kale ee taagan. Laakiin waxaan kugu dhiirigelinayaa inaad ka fikirto sida ay u dhacday in falanqeeyaha joogtada ahi uu si joogto ah u helo khaladaad muhiim ah koodkaaga.
Tani waa uun cawaaqib. Waxaan u baahanahay inaan raadino oo meesha ka saarno sababta.