Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Մենք ցանկանում ենք կիսել SonarQube կոդի որակի շարունակական վերլուծության և չափման հարթակի ներդրման մեր փորձը Ազգային Հաշվարկային Դեպոզիտարիայի DPO համակարգի (Alameda ավանդապահ և քլիրինգային հաշվառման համակարգի հավելում) մշակման առկա գործընթացներում:

Ազգային հաշվարկային դեպոզիտարիան (Մոսկվայի բորսայի ընկերությունների խումբը) հիմնական ֆինանսական ենթակառուցվածքային ընկերություններից մեկն է, որը պահպանում և գրանցում է ռուսաստանյան և արտասահմանյան թողարկողների ավելի քան 50 տրիլիոն ռուբլի արժողությամբ արժեթղթեր: Համակարգի կողմից իրականացվող գործողությունների աճող ծավալը, ինչպես նաև ֆունկցիոնալության շարունակական աճը պահանջում են համակարգերի սկզբնական կոդի բարձր որակի պահպանում։ Այս նպատակին հասնելու գործիքներից մեկը SonarQube ստատիկ անալիզատորն է: Այս հոդվածում մենք նկարագրում ենք SonarQube ստատիկ անալիզատորի անխափան ներդրման հաջող փորձը մեր բաժնի առկա զարգացման գործընթացներում:

Համառոտ բաժնի մասին

Մեր իրավասությունը ներառում է հետևյալ մոդուլները՝ վճարումներ NSD հաճախորդներին, էլեկտրոնային փաստաթղթերի կառավարում (EDF), առևտրի պահեստային հաղորդագրությունների մշակում (արտաբորսային գործարքների գրանցում), հաճախորդների և NSD-ի միջև էլեկտրոնային փոխգործակցության ուղիներ և շատ ավելին: Ընդհանուր առմամբ, աշխատանքի տեխնիկական կողմի մեծ շերտ: Մենք աշխատում ենք դիմումների հիման վրա։ Ասողների դիմումները մշակվում են վերլուծաբանների կողմից. նրանք հավաքում են հաճախորդների պահանջները և մեզ ներկայացնում իրենց տեսլականը, թե ինչպես այն պետք է տեղավորվի ծրագրի մեջ: Այնուհետև, ստանդարտ սխեման. կոդի մշակում - փորձարկում - փորձնական գործարկում - կոդի առաքում արտադրողական միացում ուղղակի հաճախորդին:

Ինչու՞ SonarQube:

Սա մեր բաժնի առաջին փորձն է կոդերի որակի վերահսկման հարթակի ներդրման գործում. նախկինում մենք դա անում էինք ձեռքով, միայն կոդի վերանայում: Բայց աշխատանքի աճող ծավալը պահանջում է այս գործընթացի ավտոմատացում։ Բացի այդ, թիմում կան նաև անփորձ աշխատակիցներ, ովքեր լիովին ծանոթ չեն զարգացման ներքին կանոնակարգերին և հակված են ավելի շատ սխալվելու: Կոդի որակը վերահսկելու համար որոշվել է իրականացնել ստատիկ անալիզատոր։ Քանի որ SonarQube-ն արդեն օգտագործվել է որոշ NSD համակարգերում, ընտրությունը երկար չպահանջվեց: Նախկինում այլ ստորաբաժանումների գործընկերներն այն օգտագործել են Alameda համակարգում (NSD-ի սեփական դեպոզիտար և քլիրինգային հաշվառման համակարգ), CFT-ում (հաշվապահական հաշվառման, հաշվեկշռի, պարտադիր և ներքին հաշվետվությունների պատրաստման տեղեկատվական համակարգ) վերլուծելու համար։ համակարգեր. Փորձերի համար մենք որոշեցինք սկսել SonarQube-ի անվճար տարբերակից: Այսպիսով, եկեք անցնենք մեր գործին:

Իրականացման գործընթացը

Մենք ունենք:

  • համակարգի ավտոմատ հավաքում TeamCity-ում;
  • կարգավորել MergeRequest-ի միջոցով կոդի վերբեռնման գործընթացը GitLab-ի առանձնահատկությունների ճյուղից դեպի գլխավոր մասնաճյուղ (մշակման գործընթացը՝ ըստ GitHub Flow-ի);
  • SonarQube-ը կազմաձևված է ժամանակացույցով վերլուծելու DPO համակարգի կոդը:

Մեր նպատակըիրականացնել կոդերի ավտոմատ վերլուծություն AVE-ի CI/CD գործընթացներում:

Անհրաժեշտ է հարմարեցնել: կոդի ավտոմատ ստուգման գործընթացը ստատիկ անալիզատորի միջոցով յուրաքանչյուր MergeRequest-ով դեպի հիմնական մասնաճյուղ:

Նրանք. թիրախային պատկերը հետևյալն է. հենց որ մշակողը փոփոխություններ է վերբեռնում գործառույթի ճյուղում, սկսվում է կոդի նոր սխալների ավտոմատ ստուգումը: Եթե ​​սխալներ չկան, ապա փոփոխությունները թույլատրվում է ընդունել, հակառակ դեպքում սխալները պետք է ուղղվեն: Արդեն սկզբնական փուլում մենք կարողացանք բացահայտել կոդի որոշակի քանակությամբ սխալներ: Համակարգն ունի շատ ճկուն կարգավորումներ. այն կարող է կարգավորվել այնպես, որ այն աշխատի մշակողների հատուկ առաջադրանքների համար, յուրաքանչյուր համակարգի և ծրագրավորման ոճի համար:

QualityGate-ի կարգավորում SonarQube-ում

QualityGate-ի վերլուծությունը մի բան է, որը մենք կարդում ենք համացանցի խորքերում: Սկզբում մենք օգտագործում էինք այլ մոտեցում, ավելի բարդ և որոշ առումներով ոչ ամբողջությամբ ճիշտ: Նախ, մենք երկու անգամ սկանավորեցինք SonarQube-ի միջոցով. մենք սկանավորեցինք գործառույթի ճյուղը և այն ճյուղը, որտեղ մենք պատրաստվում էինք միավորել գործառույթի ճյուղը, այնուհետև համեմատեցինք սխալների թիվը: Այս մեթոդը կայուն չէր և միշտ չէ, որ տալիս էր ճիշտ արդյունք։ Եվ հետո մենք իմացանք, որ SonarQube-ը երկու անգամ գործարկելու փոխարեն, դուք կարող եք սահմանել թույլ տրված սխալների քանակը (QualityGate) և վերլուծել միայն այն ճյուղը, որը դուք վերբեռնում և համեմատում եք:

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Առայժմ մենք դեռ օգտագործում ենք բավականին պարզունակ կոդի ստուգում։ Հարկ է նշել, որ SonarQube-ը համատեղելի չէ ծրագրավորման որոշ լեզուների, այդ թվում՝ Delphi-ի հետ։ Այս պահին մեր համակարգի համար մենք վերլուծում ենք միայն PLSql կոդը։

Այն աշխատում է այսպես.

  • Մենք վերլուծում ենք միայն PL/SQL կոդը մեր նախագծի համար:
  • QualityGate-ը կազմաձևված է SonarQube-ում այնպես, որ սխալների թիվը չավելանա կատարման հետ:
  • Առաջին գործարկման ժամանակ սխալների թիվը 229 էր: Եթե կատարման ընթացքում ավելի շատ սխալներ կան, ապա միաձուլումն անթույլատրելի է:
  • Այնուհետև, սխալների ուղղման դեպքում, հնարավոր կլինի վերակարգավորել QualityGate-ը:
  • Կարող եք նաև նոր տարրեր ավելացնել վերլուծության համար, օրինակ՝ կոդերի ծածկույթ թեստերով և այլն։

Աշխատանքի սխեման.

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Սցենարի մեկնաբանություններում կարելի է տեսնել, որ ֆունկցիաների ճյուղում սխալների թիվը չի ավելացել։ Այսպիսով, ամեն ինչ կարգին է:

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Միաձուլման կոճակը հասանելի է դառնում:

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Սցենարի մեկնաբանություններում կարելի է տեսնել, որ ֆունկցիաների ճյուղում սխալների թիվը թույլատրելիից ավելի է դարձել։ Այսպիսով, ամեն ինչ ՎԱՏ է:

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Միաձուլման կոճակը կարմիր է: Այս պահին սխալ կոդի փոփոխություններ վերբեռնելու արգելք չկա, բայց դա արվում է պատասխանատու մշակողի հայեցողությամբ: Ապագայում դուք կարող եք կանխել նման պարտավորությունների կատարումը հիմնական մասնաճյուղում:

Ինչպես մենք ներդրեցինք SonarQube-ն և իրացրինք դրա մեծ ներուժը

Սխալների հետ ինքնուրույն վարվելը

Հաջորդը, դուք պետք է ստուգեք համակարգի կողմից հայտնաբերված բոլոր սխալները, քանի որ SonarQube-ն վերլուծում է իր խիստ չափանիշներին համապատասխան: Այն, ինչ նա համարում է սխալ, իրականում չի կարող լինել մեր կոդում: Հետևաբար, դուք պետք է ստուգեք և նշեք, թե արդյոք սա իսկապես սխալ է, թե՞ մեր պայմաններում խմբագրման կարիք չկա: Այսպիսով, մենք նվազեցնում ենք սխալների քանակը: Ժամանակի ընթացքում համակարգը կսովորի հասկանալ այս նրբությունները:

Ինչի ենք հասել

Մեր նպատակն էր հասկանալ, թե արդյոք մեր դեպքում նպատակահարմար է կոդի ստուգումը փոխանցել ավտոմատացման։ Եվ արդյունքը արդարացրեց սպասելիքները: SonarQube-ն մեզ թույլ է տալիս աշխատել մեզ անհրաժեշտ լեզուների հետ, բավականին գրագետ վերլուծություններ է անում և ծրագրավորողների խորհուրդներից սովորելու ներուժ ունի: Ընդհանուր առմամբ, մենք գոհ ենք SonarQube-ի հետ մեր առաջին փորձից և նախատեսում ենք հետագա զարգացում կատարել այս ուղղությամբ: Մենք ակնկալում ենք, որ ապագայում մենք կկարողանանք ավելի շատ ժամանակ և ջանք խնայել կոդի վերանայման վրա և այն ավելի լավը դարձնել՝ վերացնելով մարդկային գործոնը։ Միգուցե ընթացքում մենք բացահայտենք հարթակի թերությունները, կամ, ընդհակառակը, ևս մեկ անգամ համոզվենք, որ սա մեծ պոտենցիալով թույն բան է։

Այս ակնարկային հոդվածում մենք խոսեցինք SonarQube ստատիկ անալիզատորի հետ մեր ծանոթության մասին: Հարցերի դեպքում գրեք մեկնաբանություններում։ Եթե ​​ձեզ հետաքրքրում է այս թեման, ապա նոր հրապարակման մեջ մենք ավելի մանրամասն կպատմենք, թե ինչպես կարելի է ամեն ինչ ճիշտ կարգավորել և կոդ գրել՝ նման ստուգում կատարելու համար։

Տեքստի հեղինակ. Ատանյա

Source: www.habr.com

Добавить комментарий