SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Біз Ұлттық есеп айырысу депозитарийінің DPO жүйесін (Аламеда депозитарийі мен клирингтік есеп жүйесіне қосымша) дамытудың қолданыстағы процестеріне SonarQube кодының сапасын үздіксіз талдау және өлшеу платформасын енгізу тәжірибесімен бөліскіміз келеді.

Ұлттық есеп айырысу депозитарийі (Мәскеу биржалық компаниялар тобы) ресейлік және шетелдік эмитенттердің құны 50 триллион рубльден асатын бағалы қағаздарын сақтайтын және есепке алатын негізгі қаржылық инфрақұрылымдық компаниялардың бірі болып табылады. Жүйе жүзеге асыратын операциялардың өсіп келе жатқан көлемі, сондай-ақ функционалдық мүмкіндіктерінің үздіксіз ұлғаюы жүйелердің бастапқы кодының жоғары сапасын сақтауды талап етеді. Осы мақсатқа жету құралдарының бірі - SonarQube статикалық анализаторы. Бұл мақалада біз SonarQube статикалық анализаторын бөліміміздің бар даму процестеріне үздіксіз енгізудің сәтті тәжірибесін сипаттаймыз.

Бөлім туралы қысқаша

Біздің құзыретімізге келесі модульдер кіреді: NSD клиенттеріне төлемдер, электрондық құжат айналымы (EDF), сауда репозиторийі хабарламаларын өңдеу (биржадан тыс транзакцияларды тіркеу), клиенттер мен NSD арасындағы электрондық өзара әрекеттесу арналары және т.б. Жалпы алғанда, операциялардың техникалық жағында жұмыстың үлкен қабаты. Біз өтінімдер негізінде жұмыс істейміз. Төлемшілердің өтініштерін талдаушылар өңдейді: олар тұтынушылардың талаптарын жинайды және бізге оның бағдарламаға қалай сәйкес келуі керектігі туралы өз көзқарастарын ұсынады. Әрі қарай стандартты схема: кодты әзірлеу – тестілеу – сынақ операциясы – кодты өнімді тізбекке тікелей тұтынушыға жеткізу.

Неліктен SonarQube?

Бұл біздің бөлімнің код сапасын бақылау платформасын енгізудегі алғашқы тәжірибесі - бұрын біз оны қолмен орындайтынбыз, тек кодты қарап шығу. Бірақ өсіп келе жатқан жұмыс көлемі бұл процесті автоматтандыруды талап етеді. Сонымен қатар, командада ішкі даму ережелерімен толықтай таныс емес және жиі қателесетін тәжірибесі жоқ қызметкерлер де бар. Кодтың сапасын бақылау үшін статикалық анализаторды енгізу туралы шешім қабылданды. SonarQube кейбір NSD жүйелерінде қолданылғандықтан, таңдау көп уақытты қажет етпеді. Бұрын басқа бөлімшелердегі әріптестер оны Аламеда жүйесіндегі (NSD-тің меншікті депозитарийлік және клирингтік есеп жүйесі), CFT-дегі (бухгалтерлік есеп, баланс, міндетті және ішкі есептілікті дайындаудың ақпараттық жүйесі) микросервистердің кодын талдау үшін пайдаланды. жүйелері. Эксперимент үшін біз SonarQube тегін нұсқасынан бастауды шештік. Ендеше өз ісімізге көшейік.

Іске асыру процесі

Бізде бар:

  • TeamCity жүйесінде жүйені автоматты түрде жинау;
  • MergeRequest арқылы GitLab жүйесіндегі негізгі тармаққа мүмкіндік тармағынан кодты жүктеп салу процесін орнату (GitHub Flow бойынша әзірлеу процесі);
  • SonarQube кесте бойынша DPO жүйесінің кодын талдау үшін конфигурацияланған.

Біздің мақсат: AVE CI/CD процестерінде автоматты код талдауын енгізу.

Баптау керек: негізгі тармаққа әрбір MergeRequest арқылы статикалық анализатор арқылы кодты автоматты түрде тексеру процесі.

Анау. мақсатты сурет келесідей: әзірлеуші ​​мүмкіндіктер тармағына өзгерістерді жүктеп салған бойда кодтағы жаңа қателерді автоматты түрде тексеру басталады. Егер қателер болмаса, өзгертулерді қабылдауға рұқсат етіледі, әйтпесе қателерді түзетуге тура келеді. Бастапқы кезеңде біз кодтағы қателердің белгілі бір санын анықтай алдық. Жүйеде өте икемді параметрлер бар: оны әзірлеушілердің нақты тапсырмалары үшін, әрбір жүйе мен бағдарламалау стилі үшін жұмыс істейтін етіп конфигурациялауға болады.

SonarQube жүйесінде QualityGate конфигурациялануда

QualityGate талдауы - біз Интернеттен оқитын нәрсе. Бастапқыда біз басқа тәсілді қолдандық, күрделірек және әйтеуір дұрыс емес. Алдымен біз SonarQube арқылы сканерлеуді екі рет жүргіздік: біз мүмкіндік тармағын және функция тармағын біріктіретін тармақты сканерледік, содан кейін қателер санын салыстырдық. Бұл әдіс тұрақты болмады және әрқашан дұрыс нәтиже бермеді. Содан кейін біз SonarQube-ті екі рет іске қосудың орнына сіз жіберілген қателер санына шектеу қоюға болатынын білдік (QualityGate) және сіз жүктеп салатын және салыстыратын филиалды ғана талдай аласыз.

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Әзірге біз әлі де қарапайым кодты тексеруді қолданамыз. Айта кету керек, SonarQube кейбір бағдарламалау тілдерімен, соның ішінде Delphi-мен үйлесімді емес. Қазіргі уақытта біздің жүйе үшін біз тек PLSql кодын талдаймыз.

Ол келесідей жұмыс істейді:

  • Біз жобамыз үшін тек PL/SQL кодын талдаймыз.
  • QualityGate SonarQube бағдарламасында қателер саны міндеттемемен бірге көбеймейтіндей конфигурацияланған.
  • Бірінші іске қосудағы қателер саны 229 болды. Тапсырма кезінде қателер көп болса, біріктіруге рұқсат етілмейді.
  • Әрі қарай, қателер түзетілген жағдайда, QualityGate қайта конфигурациялауға болады.
  • Сондай-ақ талдау үшін жаңа элементтерді қосуға болады, мысалы, сынақтармен кодты қамту және т.б.

Жұмыс схемасы:

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Сценарийдің түсініктемелерінде сіз функция тармағындағы қателер саны көбеймегенін көре аласыз. Сондықтан бәрі жақсы.

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Біріктіру түймесі қолжетімді болады.

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Сценарийдің түсініктемелерінде сіз функция тармағындағы қателер саны рұқсат етілгеннен көп болғанын көре аласыз. Сондықтан бәрі ЖАМАН.

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Біріктіру түймесі қызыл. Қазіргі уақытта қате кодқа өзгертулерді жүктеп салуға ешқандай тыйым жоқ, бірақ бұл жауапты әзірлеушінің қалауы бойынша жасалады. Болашақта мұндай міндеттемелердің негізгі филиалға жасалуына жол бермеуге болады.

SonarQube-ті қалай іске асырдық және оның үлкен әлеуетін іске асырдық

Қателермен өздігінен күресу

Әрі қарай, жүйе анықтаған барлық қателерді тексеру керек, өйткені SonarQube өзінің қатаң стандарттарына сәйкес талдайды. Ол қате деп санайтын нәрсе біздің кодымызда болмауы мүмкін. Сондықтан, бұл шынымен қате ме, әлде біздің шарттарымызда өңдеудің қажеті жоқ па, соны тексеріп, ескеру керек. Осылайша, біз қателер санын азайтамыз. Уақыт өте келе жүйе бұл нюанстарды түсінуге үйренеді.

Неге келдік

Біздің мақсатымыз кодты тексеруді автоматтандыруға көшіру біздің жағдайда орынды ма екенін түсіну болды. Ал нәтиже үмітті ақтады. SonarQube бізге қажетті тілдермен жұмыс істеуге мүмкіндік береді, жеткілікті сауатты талдау жасайды және әзірлеушілер кеңестерінен үйренуге мүмкіндігі бар. Жалпы, біз SonarQube-пен алғашқы тәжірибемізге қуаныштымыз және осы бағытта одан әрі дамуды жоспарлап отырмыз. Біз болашақта кодты қарауға көбірек уақыт пен күш-жігерді үнемдей аламыз және адам факторын жою арқылы оны жақсартамыз деп күтеміз. Мүмкін бұл процесте біз платформаның кемшіліктерін табамыз немесе керісінше, бұл үлкен әлеуеті бар керемет нәрсе екеніне тағы бір рет көз жеткіземіз.

Осы шолу мақаласында біз SonarQube статикалық анализаторымен танысуымыз туралы айттық. Сұрақтарыңыз болса, түсініктемелерде жазыңыз. Егер сізді осы тақырып қызықтырса, жаңа басылымда біз бәрін қалай дұрыс орнату керектігін және мұндай тексеруді жасау үшін кодты қалай жазу керектігін егжей-тегжейлі сипаттайтын боламыз.

Мәтін авторы: атаня

Ақпарат көзі: www.habr.com

пікір қалдыру