{"id":97620,"date":"2020-10-19T20:42:40","date_gmt":"2020-10-19T18:42:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial"},"modified":"2020-10-19T20:42:40","modified_gmt":"2020-10-19T18:42:40","slug":"kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dorim s\u0103 \u00eemp\u0103rt\u0103\u0219im experien\u021ba implement\u0103rii platformei pentru analiza \u0219i m\u0103surarea continu\u0103 a calit\u0103\u021bii codului SonarQube \u00een procesele existente de dezvoltare a sistemului DPO (complement al sistemului de contabilitate de decontare \u00abAlameda\u00bb) al Depozitarului Na\u021bional. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Depozitarul Na\u021bional (grupul de companii \u00abBursa din Moscova\u00bb) este una dintre companiile cheie ale infrastructurii financiare, p\u0103streaz\u0103 \u0219i contabilizeaz\u0103 valori mobiliare emise de entit\u0103\u021bi ruse\u0219ti \u0219i str\u0103ine \u00een valoare total\u0103 de peste 50 trilioane ruble. Volumul \u00een cre\u0219tere al opera\u021biunilor efectuate de sistem \u0219i extinderea continu\u0103 a func\u021bionalit\u0103\u021bii necesit\u0103 men\u021binerea unei calit\u0103\u021bi ridicate a codului surs\u0103 al sistemelor. Unul dintre instrumentele pentru atingerea acestui obiectiv este analizatorul static SonarQube. \u00cen acest articol, vom descrie experien\u021ba noastr\u0103 de succes \u00een integrarea perfect\u0103 a analizatorului static SonarQube \u00een procesele existente de dezvoltare ale departamentului nostru. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">C\u00e2teva informa\u021bii despre departament<\/h3>\n<p><\/p>\n<p>\u00cen competen\u021ba noastr\u0103 se afl\u0103 urm\u0103toarele module: pl\u0103\u021bi c\u0103tre clien\u021bii NRD, circula\u021bia documentelor electronice (EDE), prelucrarea mesajelor din depozitul de valori (\u00eenregistrarea tranzac\u021biilor OTC), canale de interac\u021biune electronic\u0103 \u00eentre clien\u021bi \u0219i NRD \u0219i multe altele. \u00cen general, ne ocup\u0103m de o gam\u0103 larg\u0103 de lucr\u0103ri pe partea tehnic\u0103 a activit\u0103\u021bilor opera\u021bionale. Lucr\u0103m pe baza cererilor. Cererile operatorilor sunt procesate de anali\u0219ti: ace\u0219tia adun\u0103 cerin\u021bele clientului \u0219i ne prezint\u0103 viziunea lor despre cum ar trebui s\u0103 fie implementat \u00een program. Apoi, schema standard: dezvoltarea codului \u2013 testare \u2013 operare de prob\u0103 \u2013 livrarea codului pe circuitul de produc\u021bie clientului direct. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">De ce SonarQube?<\/h3>\n<p><\/p>\n<p>Aceasta este prima experien\u021b\u0103 a departamentului nostru \u00een implementarea unei platforme pentru controlul calit\u0103\u021bii codului \u2013 anterior, f\u0103ceam acest lucru manual, realiz\u00e2nd doar revizuiri de cod. \u00cens\u0103 volum enorm de munc\u0103 necesit\u0103 automatizarea acestui proces. \u00cen plus, echipa include \u0219i angaja\u021bi mai pu\u021bin experimenta\u021bi, care nu sunt familiariza\u021bi cu reglement\u0103rile interne de dezvoltare \u0219i tind s\u0103 fac\u0103 mai multe erori. Pentru controlul calit\u0103\u021bii codului, s-a decis implementarea unui analist static. Deoarece SonarQube a fost deja utilizat \u00een anumite sisteme N\u0420D, alegerea a fost rapid\u0103. Anterior, colegii din alte departamente au analizat astfel codul microserviciilor \u00een sistemul \u201eAlameda\u201d (sistemul propriu de contabilitate de depozitare \u0219i de clearing N\u0420D), \u00een CFT (sistem informa\u021bional pentru gestionarea contabilit\u0103\u021bii, bilan\u021bului, preg\u0103tirea raport\u0103rii obligatorii \u0219i interne), \u0219i \u00een alte c\u00e2teva sisteme. Pentru experimente, am decis s\u0103 \u00eencepem cu versiunea gratuit\u0103 SonarQube. A\u0219adar, s\u0103 trecem la cazul nostru.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Procesul de implementare<\/h2>\n<p><\/p>\n<p><strong>Avem<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>compilarea automat\u0103 a sistemului \u00een TeamCity;<\/li>\n<li>procesul de \u00eenc\u0103rcare a codului este configurat prin MergeRequest din ramura feature \u00een ramura master \u00een GitLab (proces de dezvoltare conform GitHub Flow);<\/li>\n<li>SonarQube, configurat pentru analiza codului pentru sistemul DPO conform unui program.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Scopul nostru<\/strong>: a implementa analiza automat\u0103 a codului \u00een procesele CI\/CD ale DPO.<\/p>\n<p><\/p>\n<p><strong>Trebuie configurat<\/strong>: procesul de verificare automat\u0103 a codului cu ajutorul analistului static la fiecare MergeRequest \u00een ramura principal\u0103.<\/p>\n<p><\/p>\n<p>Adic\u0103, imaginea \u021bint\u0103 este urm\u0103toarea: odat\u0103 ce un dezvoltator \u00eencarc\u0103 modific\u0103rile \u00een ramura feature, se ini\u021biaz\u0103 o verificare automat\u0103 pentru erorile noi din cod. Dac\u0103 nu exist\u0103 erori, modific\u0103rile sunt acceptate, \u00een caz contrar trebuie corectate erorile. Chiar \u0219i \u00een etapa ini\u021bial\u0103, am putut identifica un num\u0103r semnificativ de erori \u00een cod. Sistemul are set\u0103ri foarte flexibile: poate fi configurat astfel \u00eenc\u00e2t s\u0103 func\u021bioneze pentru sarcinile specifice ale dezvoltatorilor, pentru fiecare sistem \u0219i stil de programare. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Configurarea QualityGate \u00een SonarQube<\/h3>\n<p><\/p>\n<p>Analiza QualityGate este un lucru pe care l-am descoperit \u00een ad\u00e2ncurile internetului. Ini\u021bial am folosit o alt\u0103 abordare, mai complex\u0103 \u0219i oarecum incorect\u0103. La \u00eenceput, ruleam de dou\u0103 ori scanarea prin SonarQube: scaneam ramura feature \u0219i ramura \u00een care inten\u021bionam s\u0103 \u00eembin\u0103m ramura feature, apoi compar\u0103m num\u0103rul de erori. Aceast\u0103 metod\u0103 nu era stabil\u0103 \u0219i nu oferea \u00eentotdeauna un rezultat corect. Apoi am aflat c\u0103 \u00een loc de un dublu proces SonarQube, putem stabili un limit\u0103 asupra num\u0103rului de erori acceptabile (QualityGate) \u0219i analiza doar ramura pe care o \u00eencarci \u0219i o compari.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u00e2n\u0103 acum, folosim o verificare a codului destul de primitiv\u0103. Merit\u0103 men\u021bionat c\u0103 SonarQube nu este compatibil cu anumite limbaje de programare, inclusiv Delphi. \u00cen prezent, pentru sistemul nostru analiz\u0103m doar cod PLSql.<\/p>\n<p><\/p>\n<p>Func\u021bioneaz\u0103 astfel:<\/p>\n<p><\/p>\n<ul>\n<li>Analiz\u0103m pentru proiectul nostru doar cod PL\/SQL.<\/li>\n<li>\u00cen SonarQube, QualityGate este configurat astfel \u00eenc\u00e2t num\u0103rul de erori s\u0103 nu creasc\u0103 odat\u0103 cu un commit. <\/li>\n<li>Num\u0103rul de erori la primul nostru rulaj a fost de 229. Dac\u0103 num\u0103rul de erori \u00een timpul commit-ului cre\u0219te, atunci merge-ul nu este permis. <\/li>\n<li>Apoi, cu condi\u021bia de a corecta erorile, se poate reconfigura QualityGate. <\/li>\n<li>De asemenea, se pot ad\u0103uga noi puncte pentru analiz\u0103, cum ar fi acoperirea codului cu teste etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Schema de lucru:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cen comentariile execu\u021biei scriptului se poate vedea c\u0103 num\u0103rul de erori \u00een ramura feature nu a crescut. Asta \u00eenseamn\u0103 c\u0103 totul este \u00een regul\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Devine disponibil butonul Merge.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00cen comentariile execu\u021biei scriptului se poate observa c\u0103 num\u0103rul de erori \u00een ramura feature a dep\u0103\u0219it limita acceptabil\u0103. Asta \u00eenseamn\u0103 c\u0103 totul este R\u0102U.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Butonul Merge este ro\u0219u. \u00cen prezent, nu exist\u0103 nicio restric\u021bie pentru a \u00eenc\u0103rca modific\u0103ri pe un cod eronat, dar aceasta se face la discre\u021bia dezvoltatorului responsabil. \u00cen viitor, se poate interzice introducerea unor astfel de commit-uri \u00een ramura principal\u0103.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare\" src=\"\/wp-content\/uploads\/2020\/10\/353f896326bca76c25d72396386cbb13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"samostoyatelnaya-rabota-nad-oshibkami\">Lucru independent asupra erorilor.<\/h3>\n<p><\/p>\n<p>Apoi, este necesar s\u0103 verifici toate erorile identificate de sistem, deoarece SonarQube analizeaz\u0103 conform standardelor sale stricte. Ceea ce el consider\u0103 o eroare, poate s\u0103 nu fie cu adev\u0103rat \u00een codul nostru. Prin urmare, este important s\u0103 verific\u0103m \u0219i s\u0103 marc\u0103m dac\u0103 este cu adev\u0103rat o eroare sau dac\u0103 nu este necesar s\u0103 facem modific\u0103ri \u00een condi\u021biile noastre. Astfel, reducem num\u0103rul de erori. \u00cen timp, sistemul va \u00eenv\u0103\u021ba s\u0103 \u00een\u021beleag\u0103 aceste nuan\u021be. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">La ce am ajuns<\/h2>\n<p><\/p>\n<p>Scopul nostru a fost s\u0103 \u00een\u021belegem dac\u0103 este oportun s\u0103 traducem automatizarea verific\u0103rii codului \u00een cazul nostru. \u0218i rezultatul a fost pe m\u0103sura a\u0219tept\u0103rilor. SonarQube ne permite s\u0103 lucr\u0103m cu limbajele de care avem nevoie, ofer\u0103 o analiz\u0103 destul de competent\u0103 \u0219i are poten\u021bialul de a \u00eenv\u0103\u021ba din sugestiile dezvoltatorilor. \u00cen general, suntem mul\u021bumi\u021bi de prima noastr\u0103 experien\u021b\u0103 cu SonarQube \u0219i inten\u021bion\u0103m s\u0103 ne dezvolt\u0103m \u00een continuare \u00een aceast\u0103 direc\u021bie. Ne a\u0219tept\u0103m ca \u00een viitor s\u0103 economisim mai mult timp \u0219i efort \u00een verificarea codului \u0219i s\u0103 o facem mai calitativ, elimin\u00e2nd factorul uman. Este posibil ca \u00een proces s\u0103 descoperim neajunsuri ale platformei sau, dimpotriv\u0103, s\u0103 ne convingem din nou c\u0103 aceasta este o unealt\u0103 grozav\u0103 cu un mare poten\u021bial. <\/p>\n<p><\/p>\n<p>\u00cen acest articol de revizuire, am povestit despre \u00eent\u00e2lnirea noastr\u0103 cu analizele statice SonarQube. Dac\u0103 ave\u021bi \u00eentreb\u0103ri, v\u0103 rug\u0103m s\u0103 le scrie\u021bi \u00een comentarii. Dac\u0103 sunte\u021bi interesat de acest subiect, \u00een publica\u021bia urm\u0103toare vom detalia cum s\u0103 configur\u0103m corect totul \u0219i s\u0103 scriem cod pentru a efectua aceast\u0103 verificare. <\/p>\n<p><\/p>\n<p>Autorul textului: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nsd\/blog\/523732\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 SonarQube \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0414\u041f\u041e (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u043d\u043e-\u043a\u043b\u0438\u0440\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0443\u0447\u0435\u0442\u0430 \u00ab\u0410\u043b\u0430\u043c\u0435\u0434\u0430\u00bb) \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u044f. \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0439 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0439 (\u0433\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u00ab\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0431\u0438\u0440\u0436\u0430\u00bb) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0445\u0440\u0430\u043d\u0438\u0442 \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043d\u043d\u044b\u0435 \u0431\u0443\u043c\u0430\u0433\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u044d\u043c\u0438\u0442\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0443\u043c\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97621,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-19T18:42:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-19T18:42:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Cum am implementat SonarQube \u0219i am realizat poten\u021bialul s\u0103u mare | ProHoster","description":"Vrem s\u0103 \u00eemp\u0103rt\u0103\u0219im.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster","og:description":"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-19T18:42:40+00:00","article:modified_time":"2020-10-19T18:42:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97620","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:16:26","updated":"2022-09-28 13:56:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}