Autor: Filip Kulić, Senior Embedded Software Engineer u Spyrosoftu
Pozdrav svim C/C++ developerima!
C/C++ programiranje je popularno, ali je i među najzahtjevnijim načinima razvoja softvera. Ovi programski jezici koriste se u širokom rasponu aplikacija – od operativnih sustava, do igara i mobilnih aplikacija.
No i najiskusniji C/C++ developeri suočavaju se s izazovima koji otežavaju programiranje. Kako bi olakšali ovaj proces, razvijeni su razni alati i tehnologije koje pomažu programerima da napišu bolji, brži i sigurniji kod.
Tako smo u Spyrosoftu razvili upravo jedan takav alat za koji se nadamo se da će biti koristan za sve C/C++ developere koji traže načine za olakšavanje svog razvojnog procesa i poboljšanje kvalitete svog koda.
Scargo omogućuje:
- stvoriti novi projekt
- izgraditi projekt
- pokrenuti statičke analizatore koda
- automatski popraviti odabrani problem na temelju analize kontrolora
- pokrenuti jedinične testove
- generirati dokumentaciju iz izvornog koda
- rad s predefiniranim docker okruženjem ovisno o odabranoj arhitekturi
- Otklonite pogreške u softveru,
- I više …
Scargo je CLI (command line interface) alat inspiriran rustovim cargom te olakšava C/C++ developerima upravljanje životnim ciklusom projekta.
Scargo je open source i napisan je u Pythonu. Konfiguracija projekta se radi na jednom mjestu, u scargo.toml datoteci, a scargo će sve ostalo učiniti za vas. Update naredba radi update projekta koristeći scargo.toml konfiguracijsku datoteku.
Kreirati projekt možete uz pomoć new naredbe, a trenutno su podržane x86, stm32 i esp32 arhitekture. Scargo će za vas kreirati standardnu strukturu direktorija sa src i test direktorijima te cmake, conan i ostalim datotekama za alate koje scargo koristi u pozadini. Defaultna konfiguracija projekta je takva da scargo u pozadini koristi docker kako ne bi bilo potrebe za instalacijom dodatnih alata na računalu.
Scargo build naredba će koristeći conan preuzeti potrebne dependecy pakete te koristeći cmake napraviti build projekta. Podržani su različiti build profili, a po defaultu scargo će koristiti debug build profil. Moguće je modificirati scargo.toml datoteku te dodati nove build profile ukoliko je to potrebno. Binarne datoteke nalazit će se u build/<profil>/bin direktoriju.
No, nije potrebno samostalno pokretati ili debugirati binarne datoteke. Scargo omogućuje i debugiranje korištenjem debug naredbe koristeći gdb CLI, a u budućnosti se planira i podrška za vscode i ostale IDE-ove. Ukoliko nije potrebno debugirati, već samo pokrenuti binary, to je moguće napraviti koristeći run naredbu.
Kvaliteta koda je izrazito bitna, a da bi se kvaliteta koda održavala pomoći će scargo check naredba. U pozadini će scargo konfigurirati clang-tidy, clang-format, cppcheck i lizard. Pri pozivu scargo check naredbe pozvat će se sve provjere već navedenih alata te neke od scargo provjera, za sad su to todo check, pragma i copyright check. Neke od grešaka moguće je i automatski ispraviti koristeći fix naredbu, a trenutno su podržane ispravke za pragma, copyright i clang-format.
Visokoj kvaliteti koda značajno doprinose i testovi, kako jednostavniji unit testovi, tako i integracijski testovi. Test pokrenut će testove te generirati izvješće o prolaznosti testova te pokrivenost source koda testovima za unit i integracijske testove.
Kako bi se ubrzao repetitivni proces kreiranja datoteka, modificiranja cmake lista i ostalih muka prilikom pisanja novih testova, pobrinut će se gen naredba. Gen naredba može generirati kostur unit testova, mockova. Osim navedenog gen naredba može generirati i neke esp32 specifične datoteke kao što su azure certifikati, datoteku za konfiguraciju filesystema i single binary.
Pošto scargo podržava stm32 i esp32 arhitekturu postoji i flash naredba koja omogućuje flashanje binarnih datoteka na stm32 i esp32 pločice.
Po defaultu su scargo projekti dockerizirani, a ulazak u docker containere, build docker kontejnera olakšan je korištenjem docker build, docker exec i docker run naredbama. U kontejnerima instaliran je sam scargo pa je sve naredbe moguće i koristiti unutar samih kontejnera.
Publish naredba omogućuje objavljivanje biblioteka na conan repositorij koristeći conan u pozadini. Potrebno je samo definirati url repozitorija u scargo.toml datoteci te napraviti update.
Svaki projekt treba imati i pripadajuću dokumentaciju, a doc naredba omogućuje generiranje dokumentacije koristeći doxygen u pozadini.
Do developera je da jasno dokumentira kod doxygen komentarima, a doc naredba će učiniti ostalo.
Cilj scarga je olakšati developerima posao oko učenja ove hrpe alata koje scargo koristi u pozadini. Konfiguracija projekta se radi na jednoj datoteci, a naredbe su samorazumljive iz samog imena naredbe. Ukoliko trebate dodatnu pomoć uvijek je moguće pozvati –help argument za scargo i svaku od naredbi.
Scargo nije za svakog developera i za svaki projekt, barem ne trenutno. Početniku će vjerojatno značajno pomoći sa jednostavnošću naredbi i apstrakcijama kojima skriva svo potrebno znanje mnoštva alata koji su potrebni za kvalitetan projekt. Naprednom korisniku koji je već upoznat sa svim alatima će možda biti previše ograničavajuć u ovom trenutku, ali i to bi željeli promijeniti, pa se slobodno javi ili podigni github issue.
Više na .debugu
Toliko za sada o scargo, vidimo se na nadolazećoj .debug konferenciji gdje ekipu iz Spyrosofta i našeg predavača Slavena Glumca slobodno zaustavite za više pitanja.
Sve informacije kako raditi sa scargo možete vidjeti ina službenoj github webpage. Do tada bacite pogled na našu stranicu i upoznajte se sa svime što Spyrosoft radi, ne samo u Hrvatskoj nego i u svijetu.