SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Биз Улуттук эсептешүү депозитарийинин DPO системасынын иштеп чыгуу процесстерине (Аламеда депозитарийине жана клирингдик эсепке алуу тутумуна кошумча) коддун сапатын үзгүлтүксүз талдоо жана өлчөө үчүн SonarQube платформасын ишке ашыруу боюнча тажрыйбабыз менен бөлүшкүбүз келет.

Улуттук эсептешүү депозитарийи (Moscow Exchange компаниялар тобу) 50 триллион рублдан ашык россиялык жана чет өлкөлүк эмитенттердин баалуу кагаздарын сактоо жана эсепке алуу боюнча финансылык инфраструктурадагы негизги компаниялардын бири болуп саналат. Система тарабынан аткарылып жаткан операциялардын өсүп жаткан көлөмү, ошондой эле функционалдуулуктун тынымсыз кеңейиши системалардын жогорку сапаттагы баштапкы коддорун сактоону талап кылат. Бул максатка жетүү үчүн курал SonarQube статикалык анализатор болуп саналат. Бул макалада биз SonarQube статикалык анализаторун биздин бөлүмдүн иштеп жаткан процесстерине үзгүлтүксүз киргизүүнүн ийгиликтүү тажрыйбасын сүрөттөп беребиз.

Бөлүм жөнүндө кыскача

Биздин компетенциябыз төмөнкү модулдарды камтыйт: NSD кардарларына төлөмдөр, электрондук документ жүгүртүү (EDF), соода репозиторийинин билдирүүлөрүн иштетүү (биржадан тышкары операцияларды каттоо), кардарлар менен NSD ортосундагы электрондук өз ара аракеттенүү каналдары жана башкалар. Жалпысынан эксплуатациялоо иштеринин техникалык жагында аткарыла турган иштер көп. Биз кайрылуулардын негизинде иштейбиз. Операция кызматкерлеринен түшкөн арыздар аналитиктер тарабынан каралат: алар кардардын талаптарын чогултуп, программага кандайча туура келиши керектиги тууралуу өз көз карашын беришет. Кийинки стандарт схемасы: кодду иштеп чыгуу - тестирлөө - сыноо операциясы - кодду түздөн-түз кардарга өндүрүш схемасына жеткирүү.

Эмне үчүн SonarQube?

Бул биздин бөлүмдүн коддун сапатын көзөмөлдөө платформасын ишке ашыруудагы биринчи тажрыйбасы - мурда биз аны кол менен жасап, кодду карап чыгууну гана жүргүзчүбүз. Бирок иштин өсүп келе жаткан көлөмү бул процессти автоматташтырууну талап кылат. Кошумчалай кетсек, команданын курамына өнүгүүнүн ички эрежелери менен толук тааныш эмес жана көп ката кетирүүгө жакын болгон тажрыйбасыз кызматкерлер да бар. Коддун сапатын көзөмөлдөө үчүн статикалык анализаторду ишке киргизүү чечими кабыл алынды. SonarQube мурунтан эле кээ бир NSD системаларында колдонулгандыктан, тандоо үчүн көп убакыт талап кылынган жок. Буга чейин башка бөлүмдөрдөгү кесиптештер аны Аламеда системасында (NSDдин өздүк депозитарий жана клирингдик эсепке алуу системасы), CFTде (бухгалтердик эсепти, баланстарды жүргүзүү, милдеттүү жана ички отчеттуулукту түзүү үчүн маалыматтык система) микросервистердин кодун талдоо үчүн колдонушкан. башка системалар. Эксперименттерди жүргүзүү үчүн, биз SonarQube акысыз версиясынан баштоону чечтик. Андыктан, келгиле, өзүбүздүн ишибизге өтөлү.

Ишке ашыруу процесси

Бизде бар:

  • TeamCityде автоматтык системаны чогултуу;
  • MergeRequest аркылуу кодду GitLabдагы негизги бутагына функция бутагына жүктөө процесси конфигурацияланды (GitHub Flow боюнча иштеп чыгуу процесси);
  • SonarQube, график боюнча DPO тутумунун кодун талдоо үчүн конфигурацияланган.

Биздин максат: DPOнун CI/CD процесстеринде автоматтык код анализин ишке ашыруу.

Конфигурациялоо керек: негизги бутакка ар бир MergeRequest менен статикалык анализатор менен кодду автоматтык түрдө текшерүү процесси.

Ошол. Максаттуу сүрөт төмөнкүдөй: иштеп чыгуучу функция бутагына өзгөртүүлөрдү жүктөөрү менен, коддогу жаңы каталарды автоматтык түрдө текшерүү башталат. Эгерде каталар жок болсо, анда өзгөртүүлөрдү кабыл алууга уруксат берилет, антпесе каталарды оңдоого туура келет. Алгачкы этапта биз коддогу каталардын белгилүү санын аныктай алдык. Системанын абдан ийкемдүү орнотуулары бар: аны иштеп чыгуучулардын конкреттүү тапшырмалары үчүн, ар бир система жана программалоо стили үчүн иштей тургандай кылып конфигурациялоого болот.

SonarQube ичинде QualityGate орнотуу

QualityGate анализи биз Интернеттин тереңинде окуган нерсе. Башында биз башка ыкманы колдондук, татаалыраак жана кээ бир жагынан таптакыр туура эмес. Биринчиден, биз SonarQube аркылуу эки жолу сканерден өткөрдүк: биз функция бутагын жана функция бутагын бириктире турган бутакты сканерлеп, андан кийин каталардын санын салыштырдык. Бул ыкма туруктуу эмес жана дайыма эле туура натыйжа берген эмес. Анан биз SonarQube'ти эки жолу иштетүүнүн ордуна, кетирилген каталардын санына чек коюп (QualityGate) жана сиз жүктөгөн жана салыштырган бутакты гана талдай аларыбызды билдик.

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Азырынча биз дагы эле жөнөкөй кодду карап чыгууну колдонуп жатабыз. Белгилей кетсек, SonarQube кээ бир программалоо тилдерине, анын ичинде Delphiге шайкеш келбейт. Учурда биз системабыз үчүн PLSql кодун гана талдап жатабыз.

Ал мындай иштейт:

  • Биз долбоор үчүн PL/SQL кодун гана талдайбыз.
  • SonarQube'де QualityGate конфигурацияланган, ошондуктан каталардын саны милдеттенме менен көбөйбөйт.
  • Биринчи ишке киргизүүдө каталардын саны 229 болду. Эгерде тапшырма учурунда каталар көп болсо, анда бириктирүүгө жол берилбейт.
  • Андан тышкары, каталар оңдолсо, QualityGate'ти кайра конфигурациялоого болот.
  • Сиз ошондой эле талдоо үчүн жаңы пункттарды кошо аласыз, мисалы, тесттер менен кодду камтуу ж.б.

Иштин схемасы:

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Сценарийдин комментарийлери өзгөчөлүк тармагындагы каталардын саны көбөйбөгөнүн көрсөтүп турат. Ошентип, баары жакшы.

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Бириктирүү баскычы жеткиликтүү болот.

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Сценарийдин комментарийлеринде сиз өзгөчөлүктөр тармагындагы каталардын саны алгылыктуу болуп калганын көрө аласыз. Ошентип, баары ЖАМАН.

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Бириктирүү баскычы кызыл. Азыркы учурда, ката коддун негизинде өзгөртүүлөрдү жүктөө боюнча эч кандай тыюу жок, бирок бул жооптуу иштеп чыгуучунун кароосу боюнча жүзөгө ашырылат. Келечекте мындай милдеттенмелердин негизги бутакка кошулушун алдын ала аласыз.

SonarQube-ди кантип ишке киргиздик жана анын чоң потенциалын ишке ашырдык

Каталар боюнча өз алдынча иштөө

Андан кийин, сиз система тарабынан аныкталган бардык каталарды текшеришиңиз керек, анткени SonarQube өзүнүн катуу стандарттарына ылайык талдайт. Ал ката деп эсептеген нерсе чындыгында биздин кодубузда болбошу мүмкүн. Ошондуктан, бул чындап эле катабы, же биздин шарттарда түзөтүүнүн кереги жокпу, текшерип, белгилешиңиз керек. Ушундай жол менен биз каталардын санын азайтабыз. Убакыттын өтүшү менен система бул нюанстарды түшүнүүгө үйрөнөт.

Эмнеге келдик

Биздин максат биздин учурда кодду карап чыгууну автоматташтырууга өткөрүү максатка ылайыктуубу, жокпу, түшүнүү болчу. Ал эми натыйжа үмүттөрдү актады. SonarQube бизге керектүү тилдер менен иштөөгө мүмкүндүк берет, жетиштүү компетенттүү талдоо жүргүзөт жана иштеп чыгуучулардын кеңештеринен үйрөнүү мүмкүнчүлүгүнө ээ. Жалпысынан, биз SonarQube колдонуудагы биринчи тажрыйбабызга ыраазыбыз жана бул багытта мындан ары өнүгүүнү пландап жатабыз. Келечекте биз кодду карап чыгууда көбүрөөк убакытты жана күч-аракетти үнөмдөп, адам факторун жок кылуу менен аны жакшыртабыз деп күтөбүз. Балким, процесстин жүрүшүндө биз платформанын кемчиликтерин ачабыз же тескерисинче, бул чоң потенциалы бар сонун нерсе экендигине дагы бир жолу ынанабыз.

Бул карап чыгуу макаласында биз SonarQube статикалык анализатору менен таанышканыбыз жөнүндө сүйлөштүк. Суроолоруңуз болсо, комментарийге жазыңыз. Эгер сизди бул тема кызыктырса, жаңы басылмада биз баарын кантип туура орнотууну жана ушундай текшерүү үчүн кодду жазууну кененирээк сүрөттөп беребиз.

Тексттин автору: атаня

Source: www.habr.com

Комментарий кошуу