Te tātari pateko - mai i te whakataki ki te whakauru

Kua ngenge koe ki te arotake i te waehere mutunga kore, te patuiro ranei, i etahi wa ka whakaaro koe me pehea te whakangawari i to oranga. A, i muri i te rapu iti, i te tutukitanga ohorere ranei, ka kite koe i te kupu makutu: "Tatari pateko." Kia kite tatou he aha tena me pehea e taea ai e ia te taunekeneke ki to kaupapa.

Te tātari pateko - mai i te whakataki ki te whakauru
Inaa, ki te tuhi koe i roto i tetahi reo hou, na, me te kore e mohio, ka rere koe i roto i te kaitirotiro pateko. Ko te meka ko tetahi kaitoi hou e whakarato ana, ahakoa he iti, he huinga whakatupato mo nga raru pea kei roto i te waehere. Hei tauira, ka whakahiatohia te waehere C++ ki Visual Studio ka kite pea koe i enei e whai ake nei:

Te tātari pateko - mai i te whakataki ki te whakauru
I tenei putanga ka kite tatou ko te taurangi var kaore i whakamahia i nga waahi katoa o te mahi. No reira, i nga wa katoa ka whakamahia e koe he kaitirotiro waehere pateko ngawari. Heoi, kaore i rite ki nga kaitirotiro ngaio penei i te Coverity, Klocwork, PVS-Studio ranei, ko nga whakatupato i tukuna mai e te kaitoha ka tohu noa i nga raru iti.

Mena kaore koe e tino mohio he aha te tātaritanga pateko me pehea te whakatinana, panuitia tenei tuhingaki te ako atu mo tenei tikanga.

He aha e hiahia ana koe ki te tātari pateko?

I roto i te poto: whakatere me te whakangāwari.

Ko te tātaritanga pateko ka taea e koe te kimi i te maha o nga raru rereke i roto i te waehere: mai i te he o te whakamahi i nga hanganga reo ki te hapa. Hei tauira, hei utu mo

auto x = obj.x;
auto y = obj.y;
auto z = obj.z;

I tuhia e koe te waehere e whai ake nei:

auto x = obj.x;
auto y = obj.y;
auto z = obj.x;

Ka kite koe, he hapa kei te rarangi whakamutunga. Hei tauira, ka tukuna e te PVS-Studio te whakatupato e whai ake nei:

V537 Whakaarohia te arotake i te tika o te whakamahinga o te taonga 'y'.

Mena kei te pirangi koe ki te totoro o ringaringa ki tenei hapa, whakamatau i tetahi tauira kua rite ki te Compiler Explorer: *tangi*.

A, ka mohio koe, kaore e taea te aro ki nga waahanga o te waehere i tenei wa tonu, a na tenei, ka taea e koe te noho ki te patuiro mo te haora pai, me te whakaaro he aha nga mea katoa e rere ke ana.

Heoi, he tino he tenei. He aha mena ka tuhia e te kaiwhakawhanake te waehere suboptimal na te mea kua wareware ia ki etahi hianga o te reo? Ka whakaaetia ranei i roto i te waehere whanonga kore tautuhi? Ko te mea pouri, ko enei keehi he mea noa, ka pau te wa o te raiona ki te patuiro i nga waehere mahi e mau ana i nga hapa, nga hapa angamaheni me nga whanonga kore-tautuhia.

Mo enei ahuatanga i puta mai te tātaritanga pateko. He kaiawhina tenei mo te kaiwhakawhanake ka tohu i nga raru maha i roto i te waehere me te whakamarama i roto i nga tuhinga he aha te take kaore e tika te tuhi penei, he aha te arahi me pehea te whakatika. Anei tetahi tauira o te ahua pea: *tangi*.

Ka kitea e koe etahi atu hapa pai ka kitea e te kaitirotiro i roto i nga tuhinga:

Inaianei kua panui koe i tenei tuhinga me te mohio ki nga painga o te tātaritanga pateko, ka hiahia pea koe ki te whakamatau. Engari me timata ki hea? Me pehea te whakauru i tetahi taputapu hou ki to kaupapa o naianei? Me pehea te whakauru i te roopu ki a ia? Ka kitea e koe nga whakautu ki enei patai i raro nei.

Tuhipoka. Ko te tātaritanga pateko e kore e whakakapi, e whakakore ranei i tetahi mea whai hua penei i nga arotake waehere. Ka whakakiia tenei mahinga, ka awhina ki te kite me te whakatika i nga hapa, nga hapa, me nga hoahoa kino i mua. He nui ake te whai hua ki te aro ki nga arotake waehere i runga i nga algorithms me te maramatanga o te waehere, kaua ki te rapu i te reu kua pohehe, panui nga mahi whakatairite hoha.

0. Te mohio ki te taputapu

Ka timata katoa ki te putanga whakamatautau. Ae, he uaua ki te whakatau ki te whakauru i tetahi mea ki roto i te tukanga whanaketanga mena kaore koe i kite i te taputapu i mua. Na reira, ko te mea tuatahi me mahi koe ko te tango putanga whakamatautau.

Ko nga mea ka ako koe i tenei waahanga:

  • He aha nga huarahi ki te mahi tahi me te kaitirotiro;
  • He hototahi te kaitataritari ki to taiao whanaketanga?
  • He aha nga raruraru kei roto i o kaupapa i tenei wa?

I muri i to whakauru i nga mea katoa e hiahia ana koe, ko te mahi tuatahi ko te whakahaere i te tātaritanga o te kaupapa katoa (Windows, Linux, MacOS). Mo te PVS-Studio i Visual Studio ka kite koe i tetahi pikitia rite (ka taea te panui):

Te tātari pateko - mai i te whakataki ki te whakauru
Ko te meka ko te nuinga o nga kaitirotiro pateko he maha nga whakatupato mo nga kaupapa me te turanga waehere nui. Kaore he take ki te whakatika i enei mea katoa, i te mea kei te mahi kee to kaupapa, ko te tikanga ehara enei raru i te tino taumaha. Heoi, ko koe ka taea e koe te titiro ki nga whakatupato tino pai me te whakatika ina tika. Ki te mahi i tenei, me tarai koe i te putanga ka waiho i nga karere tino pono. I roto i te mono PVS-Studio mo Visual Studio, ka mahia tenei ma te tarai i nga taumata hapa me nga waahanga. Mo te putanga tino tika, waiho noa Tino Hāngai и General (ka taea hoki te panui):

Te tātari pateko - mai i te whakataki ki te whakauru
Ae, 178 nga whakatupato he maamaa ake te maataki atu i te tini mano...

I roto i nga ripa wawaenga и iti I te nuinga o nga wa he pai nga whakatupato, engari kei roto i enei waahanga nga taatai ​​​​he iti ake te tika (he pono). Ko etahi atu korero mo nga taumata whakatupato me nga whiringa mo te mahi i raro i te Matapihi ka kitea i konei: *tangi*.

Ko te arotake angitu i nga hapa tino pai (me te whakatika angitu) he mea utu pehia nga toenga whakatupato. He mea tika tenei kia kore ai e ngaro nga whakatupato hou i waenga i nga mea tawhito. I tua atu, he kaiawhina te kaitirotiro pateko mo te kaihōtaka, ehara i te rarangi o nga pepeke. 🙂

1. Aunoatanga

I muri i te mohiotanga, kua tae ki te wa ki te whirihora i nga mono me te whakauru ki te CI. Me mahi tenei i mua i te tiimata o te hunga hötaka ki te whakamahi i te kaitirotiro pateko. Ko te meka ka wareware pea te kaitakataka ki te whakaahei i te tātari, kaore ranei e hiahia ki te mahi. Ki te mahi i tenei, me mahi koe i etahi arowhai whakamutunga o nga mea katoa kia kore ai e uru te waehere kaore i whakamatauria ki te peka whanaketanga whanui.

Ko nga mea ka ako koe i tenei waahanga:

  • He aha nga whiringa aunoa ka tukuna e te taputapu;
  • He hototahi te kaitirotiro ki to punaha huihuinga?

I te mea kaore he tuhinga tino pai, i etahi wa me tuhi koe ki roto tautoko. He mea noa tenei ka koa matou ki te awhina i a koe. 🙂

Inaianei me neke atu ki nga ratonga whakauru tonu (CI). Ka taea te whakauru i tetahi kaitirotiro ki a raatau kaore he raru nui. Ki te mahi i tenei, me hanga e koe he waahanga motuhake i roto i te paipa, kei te nuinga o te waa i muri i te hanga me nga whakamatautau waeine. Ka mahia tenei ma te whakamahi i nga momo taputapu papatohu. Hei tauira, ka whakaratohia e PVS-Studio nga taputapu e whai ake nei:

Hei whakauru i te tātaritanga ki te CI, me mahi e koe nga mea e toru:

  • Tāutahia te kaitātari;
  • Whakahaere tātaritanga;
  • Tukuna nga hua.

Hei tauira, ki te whakauru i te PVS-Studio ki Linux (Debian-base), me whakahaere e koe nga whakahau e whai ake nei:

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-get update -qq
sudo apt-get install -qq pvs-studio

I runga i nga punaha whakahaere Windows, karekau he huarahi ki te whakauru i te kaitirotiro mai i te kaiwhakahaere kete, engari ka taea te tuku i te kaitirotiro mai i te raina whakahau:

PVS-Studio_setup.exe /verysilent /suppressmsgboxes 
/norestart /nocloseapplications

Ka taea e koe te panui atu mo te tuku PVS-Studio ki runga i nga punaha whakahaere Windows *konei*.

I muri i te whakaurunga, me whakahaere tika koe i te tātaritanga. Heoi, e taunaki ana kia mahia tenei i muri i te whakahiato me te paahitanga o nga whakamatautau. Ko tenei na te mea ko te tātaritanga pateko e rua te roa atu i te whakahiato.

I te mea ko te tikanga whakarewanga e whakawhirinaki ana ki te turanga me nga ahuatanga kaupapa, ka whakaatu ahau i te whiringa mo C++ (Linux) hei tauira:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log
plog-converter -t errorfile PVS-Studio.log --cerr -w

Ko te whakahau tuatahi ka mahi i te tātari, me te tuarua pūheraka huri i te ripoata ki te whakatakotoranga kupu, ka whakaatu ki te mata me te whakahoki i te waehere whakahoki atu i te 0 mena he whakatupato. Ka taea te whakamahi i tetahi tikanga penei ki te aukati i te hanga ina he karere hapa. Heoi, ka taea e koe te tango i te haki i nga wa katoa -w kaua hoki e araia he huihuinga kei roto nga whakatupato.

Tuhipoka. He rawe te whakatakotoranga kupu. Ka whakaratohia noa hei tauira. Kia tupato ki tetahi whakatakotoranga purongo pai ake - FullHtml. Ka taea e koe te whakatere i roto i te waehere.

Ka taea e koe te panui ake mo te whakatuu tātaritanga mo CI i roto i te tuhinga "PVS-Studio me te Whakauru Tonu"(Windows) ranei"Me pehea te whakatu i te PVS-Studio i Travis CI"(Linux).

Kaati, kua whirihorahia e koe te kaitātari i runga i te tūmau hanga. Inaianei, mena ka tukuna e te tangata te waehere kaore i whakamatauria, ka hinga te waahi whakamana, ka kitea e koe te raru, heoi, kaore i te tino watea, na te mea he pai ake te tirotiro i te kaupapa kaore i muri i te whakakotahitanga o nga manga, engari i mua, i te wahanga tono toia.

I te nuinga o te waa, ko te whakatuu i te wetewete tono toia kare i tino rerekee mai i te whakarewatanga o mua o te wetewete i runga i te CI. Haunga te hiahia ki te tiki rarangi o nga konae kua whakarereketia. Ka taea te whiwhi i enei ma te patai i nga rereketanga i waenga i nga manga ma te whakamahi i te git:

git diff --name-only HEAD origin/$MERGE_BASE > .pvs-pr.list

Inaianei me tuku e koe tenei rarangi o nga konae ki te kaitirotiro hei whakaurunga. Hei tauira, i roto i te PVS-Studio ka whakatinanahia tenei ma te whakamahi i te haki -S:

pvs-studio-analyzer analyze -j8 
                            -o PVS-Studio.log 
                            -S .pvs-pr.list

Ka kitea e koe etahi atu korero mo te tātari tono toia *konei*. Ahakoa kaore to CI i te rarangi o nga ratonga kua whakahuahia i roto i te tuhinga, ka kitea e koe te waahanga whanui i whakatapua ki te ariā o tenei momo tātaritanga whai hua.

Ma te whakarite tātaritanga o nga tono kume, ka taea e koe te aukati i nga mahi e mau ana nga whakatupato, na reira ka hangaia he rohe e kore e taea e te waehere whakamatauria te whakawhiti.

He tino pai tenei, engari ko taku hiahia kia kite ahau i nga whakatupato katoa i te waahi kotahi. Ehara i te mea mai i te kaitirotiro pateko, engari mai i nga whakamatautau waeine mai i te kaitirotiro hihiri ranei. He maha nga ratonga me nga mono mo tenei. PVS-Studio, hei tauira, kua mono mo te whakauru ki SonarQube.

2. Te whakauru i runga i nga miihini kaiwhakawhanake

Inaianei kua tae ki te waa ki te whakauru me te whirihora i te kaitirotiro mo te whakamahi whanaketanga ia ra. I tenei wa kua mohio koe ki te nuinga o nga huarahi mahi, no reira ka kiia ko te waahanga ngawari.

Ko te mea ngawari noa, ka taea e nga kaiwhakawhanake te whakauru i te kaitirotiro e tika ana. Heoi, ka roa te waa ka whakararu i a raatau mai i te whakawhanaketanga, na ka taea e koe te whakaaunoa i tenei mahi ma te whakamahi i te kaiwhakauru me nga haki e tika ana. Mo te PVS-Studio he maha nga momo haki mo te whakaurunga aunoa. Heoi, kei reira tonu nga kaiwhakahaere kete, hei tauira, Chocolatey (Windows), Homebrew (macOS), he maha nga whiringa mo Linux.

Na ka hiahia koe ki te whakauru i nga taputapu e tika ana, hei tauira mo Visual Studio, IDEA, Rider etc

3. Te whakamahi i ia ra

I tenei waahanga, kua tae ki te wa ki te korero i etahi kupu mo nga huarahi ki te tere ake i te kaitirotiro i te wa e whakamahia ana ia ra. He roa te roa o te wetewete o te kaupapa katoa, engari e hia nga wa ka huri tatou i te waehere puta noa i te kaupapa katoa i te wa kotahi? Karekau he refactoring he nui rawa atu ka pa ki te turanga waehere katoa. Ko te maha o nga konae e whakarerekehia ana i te wa ka iti ake i te tatini, no reira he mea tika ki te tātari. Mo tera ahuatanga kei reira aratau tātaritanga pikinga. Kaua e mataku, ehara tenei i tetahi atu taputapu. He aratau motuhake tenei ka taea e koe te tarai i nga konae kua whakarereke me o raatau whakawhirinakitanga, ka puta aunoa tenei i muri i te hanganga mena kei te mahi koe i roto i te IDE me te whakauru i te mono.

Mēnā ka kitea e te kaitātari he raru i roto i te waehere kua huri tata ake nei, ka ripoata takitahitia tenei. Hei tauira, ka korero a PVS-Studio ki a koe mo tenei ma te matohi:

Te tātari pateko - mai i te whakataki ki te whakauru
Ko te tikanga, ko te korero ki nga kaihanga ki te whakamahi i te taputapu kaore i te nui. Me korero tatou ki a ratou he aha te ahua me te pehea. Hei tauira, he tuhinga mo te tiimata tere mo te PVS-Studio, engari ka kitea e koe nga akoranga rite mo tetahi taputapu e pai ana koe:

Ko enei tuhinga e whakarato ana i nga korero katoa e tika ana mo te whakamahi i ia ra, me te kore e roa te wa. 🙂

Ahakoa i te wa e mohio ana matou ki te taputapu, he maha nga whakatupato i pehia e matou i tetahi o nga whakarewatanga tuatahi. Heoi ano, kaore i te tino tika nga kaitirotiro pateko, no reira i etahi wa ka tukuna e ratou nga hua pai. He ngawari noa ki te pehi i a raatau; hei tauira, i roto i te mono PVS-Studio mo Visual Studio me paato noa koe i te paatene kotahi:

Te tātari pateko - mai i te whakataki ki te whakauru
Heoi, ka taea e koe te mahi atu i te pehi noa i a raatau. Hei tauira, ka taea e koe te ripoata he raru ki te tautoko. Mena ka taea te whakatika i te pai teka, katahi ka kite koe i nga wa kei te heke mai ka iti ake te iti o nga hua teka e pa ana ki to turanga.

Whai muri i te whakakotahitanga

Na kua haere matou i nga waahanga katoa o te whakauru i te tātaritanga pateko ki te tukanga whanaketanga. Ahakoa te hiranga o te whakatu i aua taputapu ki runga CI, ko te waahi nui hei whakahaere i aua taputapu ko te rorohiko a te kaiwhakawhanake. I muri i nga mea katoa, ko te kaitirotiro tuuturu ehara i te kaiwhakawa e kii ana i tawhiti atu i a koe kaore he pai o te waehere. Engari, he kaiawhina e korero ana ki a koe kua ngenge koe me te whakamahara ki a koe mena kua wareware koe ki tetahi mea.

Pono, ki te kore e whakamahia i nga wa katoa, kaore pea te tātaritanga pateko e tino ngawari te whanaketanga. I muri i nga mea katoa, ko tana painga nui mo te kaiwhakawhanake ehara i te mea nui ki te rapu i nga waahanga uaua me te tautohetohe o te waehere, engari i to raatau kitenga wawe. Whakaae ko te kite i tetahi raru i muri i te tukunga o nga whakarereketanga mo te whakamatautau ehara i te mea kino anake, engari he wa roa. Ko te tātaritanga pateko, ina whakamahia i nga wa katoa, ka titiro tika ki nga huringa katoa i runga i to rorohiko me te whakaatu i nga waahi whakapae i te wa e mahi ana i te waehere.

A, ki te kore koe, o o hoa mahi ranei e tino mohio ana he pai ki te whakatinana i te kaitirotiro, katahi ahau ka kii atu kia timata koe ki te panui i te tuhinga "Nga take ki te whakauru i te kaitirotiro waehere pateko PVS-Studio ki te tukanga whanaketanga". Ka whakatutukihia e ia nga awangawanga o nga kaiwhakawhanake ka roa te mahi tātaritanga pateko me etahi atu mea.

Te tātari pateko - mai i te whakataki ki te whakauru

Mena kei te pirangi koe ki te tiri i tenei tuhinga ki te hunga whakarongo ki te reo Ingarihi, whakamahia te hononga whakamaori: Maxim Zvyagintsev. Tātari Pateko: Mai i te Tīmatanga ki te Whakauru.

Source: will.com

Tāpiri i te kōrero