M'malo mwake, mavuto omwe amathetsedwa mwa kusanthula ndi okulirapo. Kupatula apo, nthawi zambiri, kusanthula kwa static ndi cheke chilichonse cha ma source code omwe amachitidwa asanakhazikitsidwe. Nazi zina zomwe mungachite:
Kuyang'ana kalembedwe ka zilembo m'lingaliro lalikulu la liwu. Izi zikuphatikizapo kuyang'ana masanjidwe ndi kuyang'ana kugwiritsa ntchito zopanda kanthu / zolembera zowonjezera, kukhazikitsa malire pazitsulo monga kuchuluka kwa mizere / njira ya cyclomatic, ndi zina zotero. Ku Java chida ichi ndi Checkstyle, mu Python ndi flake8. Mapulogalamu a kalasi iyi nthawi zambiri amatchedwa "linter".
Osati ma code executable okha omwe angasanthulidwe. Mafayilo azinthu monga JSON, YAML, XML, .properties angathe (ndipo ayenera!) kufufuzidwa kuti ndi oona. Kodi sikwabwino kudziwa kuti chifukwa cha mawu osasinthika mawonekedwe a JSON adasweka atangoyamba kumene kutsimikizira Kokani Kufunsira kuposa poyesa mayeso kapena pa Run time? Zida zoyenera zilipo: mwachitsanzo, YAMLlint, JSONLint.
Kuphatikiza (kapena kugawa zilankhulo zosinthika) ndi mtundu wa kusanthula kokhazikika. Monga lamulo, compilers amatha kupereka machenjezo omwe amasonyeza mavuto ndi khalidwe la code source, ndipo sayenera kunyalanyazidwa.
Ndi mitundu iti mwa mitundu iyi yowunikira yomwe iyenera kugwiritsidwa ntchito mu polojekiti yanu? Inde, kwambiri, ndi bwino! Chinthu chachikulu ndikuchigwiritsa ntchito moyenera, chomwe chidzakambidwenso.
Amayika malire pa chiwerengero chonse cha machenjezo, kapena chiwerengero cha machenjezo ogawidwa ndi chiwerengero cha mizere ya code. Izi sizikugwira ntchito bwino, chifukwa chipata choterocho chimadumpha momasuka kusintha ndi zolakwika zatsopano mpaka malire awo adutsa.
Kukonza, nthawi ina, machenjezo onse akale mu code ngati anyalanyazidwa, ndi kulephera kumanga pamene machenjezo atsopano achitika. Izi zimaperekedwa ndi PVS-studio ndi zinthu zina zapaintaneti, monga Codacy. Ndinalibe mwayi wogwira ntchito ku PVS-studio, monga momwe ndinadziwira ndi Codacy, vuto lawo lalikulu ndiloti tanthauzo la "zakale" ndi zomwe "chatsopano" cholakwika ndi ndondomeko yovuta kwambiri yomwe sichitha. nthawi zonse zimagwira ntchito moyenera, makamaka ngati mafayilo asinthidwa kwambiri kapena kusinthidwanso. Ndikukumbukira, Codacy amatha kudumpha machenjezo atsopano popempha kukoka, ndipo nthawi yomweyo osadumpha pempho la kukoka chifukwa cha machenjezo omwe sanali okhudzana ndi kusintha kwa code ya PR iyi.
Malingaliro anga, yankho lothandiza kwambiri likufotokozedwa m'bukuli Kupitiliza kopitilira njira ya "kusokoneza". Lingaliro lalikulu ndiloti katundu wa kumasulidwa kulikonse ndi chiwerengero cha machenjezo owunikira, ndipo zosintha zokha zomwe sizikuwonjezera chiwerengero cha machenjezo ndizololedwa.
Ratchet
Zimagwira ntchito motere:
Pa gawo loyambirira, zolembedwa mu metadata yotulutsidwa ya kuchuluka kwa machenjezo mu code yomwe owunikira amawunikira imakhazikitsidwa. Chifukwa chake, mukamamanga kumtunda, woyang'anira malo anu amalembedwa osati "kutulutsa 7.0.2", koma "kutulutsa 7.0.2 yomwe ili ndi machenjezo a 100500 Checkstyle". Ngati mukugwiritsa ntchito woyang'anira malo apamwamba (monga Artifactory), ndikosavuta kusunga metadata yotereyi ponena za kumasulidwa kwanu.
Tsopano pempho lililonse kukoka pa kumanga akufanizira chiwerengero cha machenjezo amene amalandira ndi chiwerengero mu kumasulidwa panopa. Ngati PR imapangitsa kuti chiwerengerochi chiwonjezeke, ndiye kuti codeyo sichidutsa pachipata cha khalidwe mu kusanthula kosasintha. Ngati chiwerengero cha machenjezo chikuchepa kapena sichisintha, chimadutsa.
Pakutulutsa kotsatira, machenjezo owerengedweratu adzalembedwanso ku metadata yotulutsidwa.
Chifukwa chake pang'onopang'ono, koma pang'onopang'ono (monga ndi ratchet), kuchuluka kwa machenjezo kumakhala zero. Inde, dongosololi likhoza kupusitsidwa poyambitsa chenjezo latsopano, koma kukonza la wina. Izi ndi zachilendo, chifukwa m'kupita kwa nthawi zimapereka zotsatira: machenjezo amakhazikitsidwa, monga lamulo, osati limodzi ndi limodzi, koma nthawi yomweyo ndi gulu la mtundu wina, ndipo machenjezo onse omwe amachotsedwa mosavuta amachotsedwa mwamsanga.
Chithunzichi chikuwonetsa kuchuluka kwa machenjezo a Checkstyle kwa miyezi isanu ndi umodzi yogwira ntchito ya "ratchet" yotere imodzi mwama projekiti athu otseguka. Chiwerengero cha machenjezo chatsika ndi dongosolo la kukula, ndipo izi zinachitika mwachibadwa, mofanana ndi chitukuko cha mankhwala!
Ndimagwiritsa ntchito njira yosinthidwayi, ndikuwerengera padera machenjezo ndi gawo la polojekiti ndi chida chowunikira, zomwe zimapangitsa kuti pakhale fayilo ya YAML yokhala ndi metadata yapagulu yomwe imawoneka motere:
Mudongosolo lililonse lapamwamba la CI, ratchet imatha kukhazikitsidwa pazida zilizonse zowunikira osadalira mapulagini ndi zida za chipani chachitatu. Aliyense wa analyzer amatulutsa lipoti lake m'malemba osavuta kapena mawonekedwe a XML omwe ndi osavuta kuwunikira. Zimatsalira kulembetsa malingaliro ofunikira mu script CI. Mutha kuwona momwe izi zimagwiritsidwira ntchito m'mapulojekiti athu otseguka ozikidwa pa Jenkins ndi Artifactory, mutha apa kapena apa. Zitsanzo zonsezi zimadalira laibulale ratchetlib: njira countWarnings() amawerengera ma tag a xml m'mafayilo opangidwa ndi Checkstyle ndi Spotbugs mwachizolowezi, ndi compareWarningMaps() imagwiritsa ntchito ratchet yomweyo, kuponya zolakwika pamene chiwerengero cha machenjezo m'magulu aliwonse chikukwera.
Kukhazikitsa kosangalatsa kwa ratchet ndikothekera pakusanthula kalembedwe ka ndemanga, zolemba, ndi zolemba pogwiritsa ntchito aspell. Monga mukudziwira, poyang'ana kalembedwe, si mawu onse osadziwika mumtanthauzira wamba omwe ndi olakwika, amatha kuwonjezeredwa ku mtanthauzira mawu. Ngati mupanga mtanthauzira mawu kukhala gawo la khodi ya pulojekiti, ndiye kuti chipata cha kalembedwe kalembedwe chikhoza kupangidwa motere: aspell execution ndi muyezo ndi mtanthauzira mawu. sayenera kutero musapeze zolakwika za kalembedwe.
Za kufunika kokonza mtundu wa analyzer
Pomaliza, zotsatirazi ziyenera kudziwidwa: ziribe kanthu momwe mungagwiritsire ntchito kusanthula mupaipi yanu yobweretsera, mtundu wa analyzer uyenera kukhazikitsidwa. Ngati mulola kuti analyzer asinthe mwachisawawa, ndiye pomanga pempho lotsatira kukoka, zolakwika zatsopano zikhoza "kutuluka" zomwe sizikugwirizana ndi kusintha kwa code, koma zikugwirizana ndi mfundo yakuti analyzer watsopano amatha kupeza zolakwika zambiri - ndi izi zidzaphwanya njira yovomereza zopempha zokoka. Kukweza analyzer kuyenera kukhala chinthu chozindikira. Komabe, kukonza molimbika mtundu wa gawo lililonse la msonkhano ndikofunikira kwambiri komanso mutu wokambirana.
anapezazo
Kusanthula kosasunthika sikungakupezereni nsikidzi ndipo sikungasinthe mtundu wa malonda anu chifukwa cha pulogalamu imodzi. Chokhacho chabwino pa khalidwe ndi ntchito yake mosalekeza pa nthawi yobereka.
Kupeza nsikidzi si ntchito yayikulu yowunikira konse, ntchito zambiri zothandiza zimapezeka mu zida zotsegulira.
Khazikitsani zipata zabwino potengera zotsatira za kusanthula kwa static pagawo loyamba la payipi yobweretsera, pogwiritsa ntchito ratchet yama code olowa.