Kev soj ntsuam zoo li qub - los ntawm kev taw qhia txog kev sib koom ua ke
Nquag ntawm kev tshuaj xyuas cov lej tsis kawg lossis kev debugging, qee zaum koj xav txog yuav ua li cas kom yooj yim rau koj lub neej. Thiab tom qab tshawb nrhiav me ntsis, lossis los ntawm kev ua yuam kev poob rau nws, koj tuaj yeem pom cov kab lus khawv koob: "Kev tsom xam zoo li qub". Cia peb pom nws yog dab tsi thiab nws tuaj yeem cuam tshuam nrog koj qhov project.
Qhov tseeb, yog tias koj sau hauv ib hom lus niaj hnub, ces, txawm tias tsis paub txog nws, koj tau khiav nws los ntawm tus ntsuas qhov zoo li qub. Qhov tseeb yog tias txhua tus niaj hnub compiler muab, txawm tias me me, cov lus ceeb toom txog cov teeb meem tshwm sim hauv cov cai. Piv txwv li, thaum sau C ++ code hauv Visual Studio koj yuav pom cov hauv qab no:
Hauv qhov tso zis no peb pom tias qhov sib txawv var yeej tsis tau siv nyob qhov twg hauv txoj haujlwm. Yog li, hauv kev muaj tiag, koj yuav luag ib txwm siv qhov yooj yim zoo li qub code analyzer. Txawm li cas los xij, tsis zoo li cov kws tshuaj ntsuam xyuas xws li Coverity, Klocwork lossis PVS-Studio, cov lus ceeb toom muab los ntawm cov neeg muab sau ua ke tsuas yog qhia txog ntau yam teeb meem.
Yog tias koj xav tso koj txhais tes rau hauv qhov yuam kev no, sim ua piv txwv npaj ua hauv Compiler Explorer: *quaj*.
Thiab raws li koj nkag siab, nws tsis yog ib txwm ua tau los saib xyuas cov ntu ntawm cov cai tam sim ntawd, thiab vim li no, koj tuaj yeem zaum debugging rau ib teev zoo, xav tsis thoob vim li cas txhua yam ua haujlwm txawv txawv.
Txawm li cas los xij, qhov no yog qhov yuam kev. Yuav ua li cas yog hais tias tus tsim tawm sau suboptimal code vim nws tsis nco qab ib co subtlety ntawm cov lus? Los yog txawm tso cai rau nws nyob rau hauv cov cai tus cwj pwm tsis meej? Hmoov tsis zoo, cov xwm txheej zoo li no tshwm sim tag nrho thiab tus tsov ntxhuav feem ntawm lub sijhawm yog siv kev debugging tshwj xeeb ua haujlwm code uas muaj typos, raug yuam kev lossis tus cwj pwm tsis meej.
Nws yog rau cov xwm txheej no uas qhov kev soj ntsuam zoo li qub tau tshwm sim. Qhov no yog tus pab cuam rau tus tsim tawm uas yuav taw qhia ntau yam teeb meem hauv cov cai thiab piav qhia hauv cov ntaub ntawv vim li cas nws tsis tsim nyog los sau txoj kev no, nws tuaj yeem ua rau thiab yuav kho li cas. Nov yog ib qho piv txwv ntawm qhov nws yuav zoo li: *quaj*.
Tau ua tiav kev tshuaj xyuas qhov tsis txaus ntseeg tshaj plaws (thiab ua tiav kho lawv) yog qhov tsim nyog txwv cov lus ceeb toom ntxiv. Qhov no yog qhov tsim nyog kom cov lus ceeb toom tshiab tsis tau ploj ntawm cov qub. Tsis tas li ntawd, tus kws tshuaj ntsuam xyuas zoo li qub yog tus pab cuam rau tus programmer, thiab tsis yog cov npe kab. π
1. Automation
Tom qab tau txais kev paub, nws yog lub sijhawm los teeb tsa plugins thiab koom ua ke rau hauv CI. Qhov no yuav tsum tau ua ua ntej programmers pib siv lub static analyzer. Qhov tseeb yog tias tus programmer yuav hnov ββββqab qhib kev tsom xam lossis tsis xav ua txhua yam. Txhawm rau ua qhov no, koj yuav tsum ua qee qhov kev kuaj xyuas zaum kawg ntawm txhua yam kom tsis txhob sim cov lej tsis tuaj yeem nkag mus rau hauv kev txhim kho dav dav.
Yam koj yuav kawm nyob rau theem no:
Cov kev xaiv automation dab tsi uas lub cuab yeej muab;
Puas yog lub ntsuas ntsuas tau sib haum nrog koj qhov kev sib dhos?
Txij li thaum tsis muaj cov ntaub ntawv zoo meej, qee zaum koj yuav tsum sau rau hauv txhawb nqa. Qhov no yog qhov qub thiab peb zoo siab los pab koj. π
Tam sim no cia peb mus rau qhov kev pabcuam txuas ntxiv (CI) kev pabcuam. Ib qho tshuaj ntsuam xyuas tuaj yeem siv rau hauv lawv yam tsis muaj teeb meem loj. Txhawm rau ua qhov no, koj yuav tsum tsim cov theem sib cais hauv cov kav dej, uas feem ntau yog nyob tom qab kev tsim thiab chav kuaj. Qhov no yog ua tiav siv ntau yam khoom siv console. Piv txwv li, PVS-Studio muab cov khoom siv hauv qab no:
PVS-Studio_Cmd.exe (Kev tshuaj xyuas cov kev daws teeb meem, C #, C ++ tej yaam num ntawm Windows)
Tom qab kev teeb tsa, koj yuav tsum khiav qhov kev soj ntsuam ncaj qha. Txawm li cas los xij, nws raug nquahu kom ua qhov no tsuas yog tom qab muab tso ua ke thiab kev xeem dhau lawm. Qhov no yog vim qhov kev txheeb xyuas zoo li qub feem ntau siv ob zaug ntev li kev muab tso ua ke.
Txij li thaum txoj kev tso tawm nyob ntawm lub platform thiab qhov project nta, kuv yuav qhia qhov kev xaiv rau C ++ (Linux) ua piv txwv:
Okay, koj tau teeb tsa lub ntsuas ntsuas ntawm tus tsim server. Tam sim no, yog hais tias ib tug neeg uploaded untested code, lub pov thawj theem yuav ua tsis tau tejyam, thiab koj yuav nrhiav tau qhov teeb meem, txawm li cas los xij, qhov no tsis yooj yim kiag li, vim tias nws muaj txiaj ntsig zoo los xyuas qhov project tsis yog tom qab cov ceg ntoo tau sib koom ua ke, tab sis. ua ntej nws, ntawm qhov kev thov rub theem. A.
git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list
Tam sim no koj yuav tsum dhau daim ntawv teev npe ntawm cov ntaub ntawv no mus rau lub ntsuas ntsuas raws li kev nkag. Piv txwv li, hauv PVS-Studio qhov no yog siv los ntawm tus chij -S:
Los ntawm kev teeb tsa kev soj ntsuam ntawm rub cov lus thov, koj tuaj yeem thaiv cov lus cog tseg uas muaj cov lus ceeb toom, yog li tsim kom muaj ib thaj tsam uas tsis tau kuaj xyuas tsis tuaj yeem hla.
Qhov no yog txhua yam zoo, tab sis kuv xav kom pom tag nrho cov lus ceeb toom hauv ib qho chaw. Tsis yog tsuas yog los ntawm cov tshuaj ntsuam xyuas zoo li qub, tab sis kuj los ntawm cov kev ntsuam xyuas hauv tsev lossis los ntawm cov ntsuas dynamic. Muaj ntau yam kev pabcuam thiab plugins rau qhov no. PVS-Studio, piv txwv li, muaj plugin rau kev koom ua ke rau hauv SonarQube.
2. Kev koom ua ke ntawm cov tshuab tsim tawm
Tam sim no nws yog lub sijhawm los nruab thiab teeb tsa lub ntsuas ntsuas rau kev siv txhua hnub. Los ntawm qhov no koj twb tau paub txog feem ntau ntawm txoj kev ua haujlwm, yog li qhov no tuaj yeem hu ua qhov yooj yim tshaj plaws.
Raws li qhov kev xaiv yooj yim tshaj plaws, cov neeg tsim khoom tuaj yeem nruab qhov tsim nyog ntsuas lawv tus kheej. Txawm li cas los xij, qhov no yuav siv sij hawm ntau thiab cuam tshuam lawv los ntawm kev txhim kho, yog li koj tuaj yeem ua qhov txheej txheem no siv tus installer thiab cov chij tsim nyog. Rau PVS-Studio muaj ntau yam chij rau automated installation. Txawm li cas los xij, ib txwm muaj cov thawj tswj hwm pob, piv txwv li, Chocolatey (Windows), Homebrew (macOS) lossis ntau qhov kev xaiv rau Linux.