Ngabona incwadi i-PVS eyayifunde ukuyihlaziya ngaphansi kwe-Linux, ngase nginquma ukuyizama kumaphrojekthi ami. Futhi yilokhu okwaphuma kukho.
Okuqukethwe
ΠΠ»ΡΡΡ
Ukwesekwa okusabelayo
Ngacela ukhiye wokuzama futhi bangithumelela wona ngalo lolo suku.
Amadokhumenti acacile
Sikwazile ukwethula i-analyzer ngaphandle kwezinkinga. Usizo lwemiyalo ye-console luyatholakala (yize kukhona izikhalazo lapha, bheka isigaba
Amathuba okuhlaziya anezintambo eziningi
I-analyzer inenketho "ejwayelekile". -j
, okuvumela ukuhlaziya ukuthi kwenziwe ngokuhambisana emisebenzini eminingana. Lokhu konga isikhathi esiningi.
Ukubonwa okuhle
Amafomethi amaningi okukhiphayo ahlukene, ukusuka embhalweni kuya kumabhobho amancane ewebhu.
Ukuhlanganiswa okulula kumhlangano
Wonke amadokhumenti akuwebhusayithi yabo, ngingasho nje ukuthi uma iphrojekthi yakho yakhiwe kusetshenziswa i-CMake, khona-ke konke kulula kakhulu.
Izincazelo ezinhle zokuxilonga
Uma ukhiqiza okukhiphayo kumodi fullhtml
, bese umlayezo ngamunye unesixhumanisi sencazelo yokuxilonga, enezincazelo, izibonelo zekhodi nezixhumanisi ezengeziwe.
ΠΠΈΠ½ΡΡΡ
Ukungazi kahle kolimi lwe-C++ ngomhlaziyi
Ngeshwa, i-PVS kwesinye isikhathi yenza amaphutha e-syntax futhi ikhiqize imilayezo eqondile engamanga lapho ikhodi ilungile ngokuphelele.
Isibonelo, kunomsebenzi 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));
}
Yebo igama elingukhiye auto
Kungasho void
, injalo nje imoto. Kodwa i-PVS ikhiqize imilayezo elandelayo:
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.
Isayithi elinensa kakhulu
Yebo, kusixhumi esibonakalayo sewebhu eduze nomlayezo ngamunye kukhona isixhumanisi sencazelo ehambisanayo yokuxilonga enezibonelo. Kodwa uma uchofoza isixhumanisi, kufanele ulinde isikhathi eside, futhi ngezinye izikhathi kuyenzeka
Ulimi
Zonke izincazelo zingesiRashiya, okuyinto enhle. Kodwa izixhumanisi ezivela embikweni zihlala ziholela enguqulweni yesiNgisi. Kungaba kuhle ukwazi ukushintsha ulimi ukuze ukwazi ukubuka ukuxilonga ngokushesha ngesi-Russian. Angiyitholanga inketho enjalo kusixhumi esibonakalayo.
Akulula ukusebenza ngamaleveli okuxilonga usebenzisa ikhonsoli
Ake siqale ngeqiniso lokuthi imiyalo emibili esetshenzisiwe (le pvs-studio-analyzer
ΠΈ plog-converter
) amafomethi ahlukene okucacisa ukuxilonga.
Usizo lwe pvs-studio-analyzer
uyafunda:
-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
Ngichithe isikhathi eside ngizama ukuthi ngiyephi engeza (βukwengeza amananiβ) okhiye. Ngizamile ukuzifaka ohlwini zihlukaniswe ngokhefana:
pvs-studio-analyzer analyze ... -a 1,4,16
Ngizame ukubhalisa ukhiye izikhathi ezimbalwa:
pvs-studio-analyzer analyze ... -a 1 -a 4 -a 16
Kungaleso sikhathi kuphela lapho ngabona khona ukuthi lezi kwakuyizifihla-buso! Futhi udinga Fingqakodwa cha engeza izincazelo. Isibonelo, ukuze uthole ukuxilonga okujwayelekile, ukuxilonga kokusebenza kahle okuncane kanye ne-MISRA, udinga ukukufingqa (4 + 8 + 32 = 44):
pvs-studio-analyzer analyze ... -a 44
Ukusebenzisa ama-bitmasks ezindaweni zokusebenzelana nomsebenzisi kuvamise ukuthi kubi. Konke lokhu kungase kufinyezwe ngaphakathi, futhi iqoqo lamafulegi lingasethwa kumsebenzisi.
Ngaphezu kwalokho, kukhona utility plog-converter
, ekhiqiza ulwazi lokuhlaziya olumile olufundeka umuntu. Unezinye izinkinga.
Usizo lohlelo plog-converter
kubika:
-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 "amazinga" avele lapha abengekho ngaphambilini, futhi angitholanga lutho ngawo emibhalweni.
Ngokuvamile, akucaci. Yingakho ngibeke yonke into phezulu.
Isigejane senhlamba eyisiphukuphuku ku-Catch
Amaphrojekthi amabili kwamathathu engiwahlaziyile asebenzisa umtapo wolwazi wokuhlola amayunithi
Ayinaki i-multithreading
Kunamaqiniso amaningi angamanga mayelana nokuguquguquka okungaguquki noma izihibe ezingapheli, kuyilapho ukusebenza nalezi ziguquguqukayo kwenzeka emicu ehlukahlukene, futhi ukube lokhu bekungenjalo, ukuhlolwa kweyunithi bekungeke kusebenze.
Nokho, ingabe umhlaziyi omile angakucabangela lokhu? Angazi.
Imiphumela
I-PVS ayitholanga noma yiziphi iziphazamisi zangempela kumaphrojekthi wami womthombo ovulekile scan-build
Ngokuvamile, umbono ovela kubo bonke laba bahlaziyi ucishe ufane: yebo, babamba okuthile, ngezinye izikhathi ngisho nento ebalulekile, kodwa jikelele umdidiyeli wanele.
Kungenzeka (futhi mina ngokwami ββngithanda ukucabanga kanjalo) ukuthi ithimba lethu lisebenzise izinqubo zokuthuthukisa isofthiwe esivumela ukuthi sikhiqize inani elincane lekhodi ye-shitty. Kungcono ukungadali izinkinga kunokuzinqoba ngobuqhawe.
Ngakho-ke, ngithatha inkululeko yokunikeza iseluleko sendlela yokubhala ku-C++ ngendlela yokuthi ngingadubuli imilenze yanoma ubani noma ngishaye noma ubani ebunzini ngeraki.
Yenza okuningi ngokuxilonga komqambi
Ithimba lethu lisebenzisa (futhi likucebisa ukuthi) lezi zinketho zokuhlanganisa ezilandelayo:
-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
Zinike amandla kuphrojekthi yakho futhi ufunde okuningi mayelana nekhodi yakho.
Namathela esimisweni
Zama ukungasebenzisi izinto ezincike endaweni uma kukhona ama-analogue ajwayelekile, futhi uma ungeke ukwazi ukwenza ngaphandle kwawo, zigoqe ngamabhulokhi akhethekile wama-macros (noma enye into) futhi ungavumeli ikhodi yakho ihlanganiswe ngaphansi kwezimo ezingasekelwa.
Namathela ku-semantics yokusebenza okujwayelekile
Ukwengeza kufanele kube ukuhlanganisa, ukuphindaphinda kufanele kube ukuphindaphinda, ikholi yomsebenzi kufanele kube ucingo lomsebenzi, ikhophi kufanele ikopishwe, ithwalwe, isiqukathi kufanele siphindaphindeke, isiphindisi sibe nephromoshini. ++
kanye nokuhlehla *
. Futhi njalo njalo njalo.
Ngicabanga ukuthi umqondo ucacile. Kukhona izivumelwano ezimisiwe ezingabophezeli, kodwa bonke abasebenzisi nabafundi bekhodi yakho abalindele ukuyibona. Ungazami ukwedlula abanye, kungenjalo uzozidlula wena.
Bhala ikhodi ehambisanayo
Okokuqala nje, ngiqonde umtapo wolwazi ojwayelekile. Kufiseleka kakhulu ukuthi ukuxhumana kwamakilasi akho nemisebenzi kusetshenziswe nemitapo yolwazi ejwayelekile kanye neminye (isibonelo, i-Boost).
Zizwe ukhululekile ukubheka i-STL ne-Boost interface. Ngaphandle kokungavamile, uzobona imodeli efanelekayo lapho.
Yenza okuningi ngamathuluzi omthombo ovulekile
Ukuze uthole ukuhlaziya okufanayo okumile, kukhona okungenani amathuluzi amabili avulekile avulekile angaxhunywa kanye kunoma iyiphi iphrojekthi ngohlelo lokwakha lwe-CMake.
I-Afterword
Okokugcina, ngithanda ukugcizelela ukuthi angikhuthazi ukungasebenzisi i-PVS noma ezinye izihlaziyi ezimile. Kodwa ngiyakukhuthaza ukuthi ucabange ukuthi kwenzeka kanjani ukuthi i-analyzer emile ihlale ithola amaphutha abalulekile kukhodi yakho.
Lokhu kungumphumela nje. Kudingeka sibheke futhi siqede imbangela.
Source: www.habr.com