{"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\/et\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Kuidas me rakendasime SonarQube'i ja m\u00f5istsime selle suurt potentsiaali","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Soovime jagada kogemusi SonarQube'i platvormi rakendamisest pidevaks koodikvaliteedi anal\u00fc\u00fcsiks ja m\u00f5\u00f5tmiseks DPO s\u00fcsteemi arendusprotsessides (t\u00e4iendamine deponeerimise ja kliirimise arvestuss\u00fcsteemis \u201eAlameda\u201d) Rahvuslikus Arveldusdepoos. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Rahvuslik Arveldusdepoo (Moskva b\u00f6rsi kontsern) on \u00fcks finantsinfrastruktuuri keskseid ettev\u00f5tteid, mis hoiab ja arvestab Venemaa ja v\u00e4lismaiste emitterite v\u00e4\u00e4rtpabereid \u00fcle 50 triljoni rubla. Suurenev tehingute maht s\u00fcsteemis ning funktsionaalsuse pidev suurendamine n\u00f5uavad s\u00fcsteemide l\u00e4htekoodi kvaliteedi k\u00f5rge taseme s\u00e4ilitamist. \u00dcks vahend selle eesm\u00e4rgi saavutamiseks on staatiline anal\u00fcsaator SonarQube. Selles artiklis kirjeldame edukat SonarQube'i staatilise anal\u00fcsaatori sujuvat integreerimist meie osakonna olemasolevatesse arenduse protsessidesse. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">L\u00fchidalt osakonnast<\/h3>\n<p><\/p>\n<p>Meie p\u00e4devusse kuuluvad j\u00e4rgmised moodulid: NRD klientidele maksed, elektrooniline dokumendihaldus (EDO), kauplemisregisteri s\u00f5numite t\u00f6\u00f6tlemine (\u00fclevahetuste registreerimine), elektroonilise koost\u00f6\u00f6 kanalid klientide ja NRDi vahel ning palju muud. \u00dches\u00f5naga, suur hulk t\u00f6\u00f6d tehnilise poolega operatiivsete tegevuste osas. T\u00f6\u00f6 toimub taotluste alusel. Operatiivide taotlusi t\u00f6\u00f6tlevad anal\u00fc\u00fctikud: nad koguvad tellija n\u00f5uded ja esitavad meile oma n\u00e4gemuse, kuidas see programmile paigutada. Edasi k\u00e4ib standardne skeem: koodi arendamine \u2013 testimine \u2013 katseperiood \u2013 koodi tarnimine tootmisettev\u00f5tte otse tellijale. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">Miks just SonarQube?<\/h3>\n<p><\/p>\n<p>See on meie osakonna esimene kogemus koodikvaliteedi kontrollimise platvormi rakendamisel \u2013 varem tegime seda k\u00e4sitsi, tehes ainult koodikontrolle. Kuid kasvav t\u00f6\u00f6maht n\u00f5uab selle protsessi automatiseerimist. Lisaks on meeskonnas ka kogenematuid t\u00f6\u00f6tajaid, kes ei ole t\u00e4ielikult tuttavad arenduse sisereeglitega ja kipuvad rohkem vigu tegema. Koodikvaliteedi kontrollimiseks otsustati rakendada staatiline anal\u00fcsaator. Kuna SonarQube oli juba kasutusel m\u00f5nedes NRD s\u00fcsteemides, ei pidanud kaua valima. Varem on kolleegid teiste osakondade juures kasutanud seda mikroteenuste koodi anal\u00fc\u00fcsimiseks s\u00fcsteemis \u201eAlameda\u201c (NRD enda deposiitide ja kliiringu arvestuse s\u00fcsteem), CFT-s (info s\u00fcsteem raamatupidamise, bilansi ja kohustusliku ning sisereportingu koostamiseks) ning m\u00f5nedes teistes s\u00fcsteemides. Katsed otsustasime alustada SonarQube'i tasuta versiooniga. Nii et liigume edasi meie juhtumiga.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Rakendamisprotsess<\/h2>\n<p><\/p>\n<p><strong>Meil on<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>automaatne s\u00fcsteemi koostamine TeamCity's;<\/li>\n<li>protsess on seadistatud koodi \u00fcleslaadimiseks MergeRequestiga feature-haru master-harusse GitLabis (arendusprotsess vastavalt GitHub Flow'le);<\/li>\n<li>SonarQube, mis on seadistatud koodi anal\u00fc\u00fcsiks DPO s\u00fcsteemi jaoks graafiku alusel.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Meie eesm\u00e4rk<\/strong>: rakendada automaatset koodi anal\u00fc\u00fcsi DPO CI\/CD protsessidesse.<\/p>\n<p><\/p>\n<p><strong>Peab seadistama<\/strong>: automaatse koodi kontrollimise protsessi staatilise anal\u00fcsaatori abil iga MergeRequest\u2019i puhul p\u00f5hiharu.<\/p>\n<p><\/p>\n<p>T\u00e4htis on see, et kui arendaja \u00fcleslaadib muudatused feature-haru, k\u00e4ivitatakse automaatne kontroll uute koodivigade olemasolu suhtes. Kui vigu ei leita, on muudatuste vastuv\u00f5tmine lubatud, vastasel juhul tuleb vead parandada. Juba algusetapis \u00f5nnestus meil tuvastada teatud arv vigu koodis. S\u00fcsteemil on v\u00e4ga paindlikud seadistused: seda saab konfigureerida nii, et see t\u00f6\u00f6taks arendajate konkreetsete \u00fclesannete jaoks, iga s\u00fcsteemi ja programmeerimisstiili jaoks. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">QualityGate seadistamine SonarQubes<\/h3>\n<p><\/p>\n<p>QualityGate anal\u00fc\u00fcs on asi, mille me interneti s\u00fcgavustest v\u00e4lja kaevandasime. Alguses kasutasime keerulisemat ja mingil m\u00e4\u00e4ral vale l\u00e4henemist. Esiteks skanneerisime kaks korda SonarQube'iga: skanneerisime feature-haru ja haru, kuhu plaanisime feature-haru sulandada, ning seej\u00e4rel v\u00f5rdlesime vigu. See meetod ei olnud stabiilne ja ei andnud alati \u00f5igeid tulemusi. Siis saime teada, et kahekordse skaneerimise asemel saab SonarQube'is seadistada lubatud vigade arvu piiri (QualityGate) ja anal\u00fc\u00fcsida ainult seda haru, mille t\u00f5ukad ja mille v\u00f5rdled.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Praegu kasutame endiselt \u00fcsna primitiivset koodi kontrolli. Tuleb m\u00e4rkida, et SonarQube ei ole \u00fchilduv m\u00f5nede programmeerimiskeeltega, sealhulgas Delphiga. Praegu anal\u00fc\u00fcsime meie s\u00fcsteemis ainult PLSQL koodi.<\/p>\n<p><\/p>\n<p>See t\u00f6\u00f6tab nii:<\/p>\n<p><\/p>\n<ul>\n<li>Anal\u00fc\u00fcsime oma projekti jaoks ainult PL\/SQL koodi.<\/li>\n<li>SonarQube'is on QualityGate seadistatud nii, et vigade arv ei suurene koos commit'iga. <\/li>\n<li>Esimese skaneerimise ajal olid meil vead 229. Kui commit'i korral vigade arv suureneb, siis merge ei ole lubatud. <\/li>\n<li>J\u00e4rgmises etapis, kui vead on parandatud, saab QualityGate'i seadeid uuesti kohandada. <\/li>\n<li>Samuti saab lisada uusi anal\u00fc\u00fcsipunkte, n\u00e4iteks koodi katvuse testide jms.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00f6\u00f6protsess:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Skripti kommentaarides on n\u00e4ha, et feature-haru veanumber ei ole suurenenud. See t\u00e4hendab, et k\u00f5ik on korras.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Merge nupp muutub kergesti k\u00e4ttev\u00f5etavaks.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Skripti kommentaarides on n\u00e4ha, et feature-haru veanumber on \u00fcletanud lubatud arvu. See t\u00e4hendab, et k\u00f5ik on halvasti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Merge nupp on punane. Praeguseks ei ole keelatud teha muutusi vigase koodi t\u00f5ttu, kuid see s\u00f5ltub vastutava arendaja \u00e4ran\u00e4gemisest. Edaspidi v\u00f5ib sellised commit'id p\u00f5hiharu juurde lisamise keelata.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kuidas me rakendasime SonarQube&#039;i ja m\u00f5istsime selle suurt potentsiaali\" 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\">Iseseisev t\u00f6\u00f6 vigadega<\/h3>\n<p><\/p>\n<p>Seej\u00e4rel tuleb kontrollida k\u00f5iki s\u00fcsteemi tuvastatud vigu, kuna SonarQube anal\u00fc\u00fcsib vastavalt oma rangetele standarditele. See, mida ta veaks peab, ei pruugi meie koodis tegelikult vea olema. Seet\u00f5ttu tuleb kontrollida ja m\u00e4rkida, kas see on t\u00f5eliselt viga v\u00f5i kas sellele ei ole meie tingimustes vaja parandusi. Nii v\u00e4hendame veate arvu. Aja jooksul \u00f5pib s\u00fcsteem neid n\u00fcansse m\u00f5istma. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">Kuhu me j\u00f5udnud oleme<\/h2>\n<p><\/p>\n<p>Meie eesm\u00e4rk oli m\u00f5ista, kas meie jaoks on m\u00f5istlik koodi kontrolli automatiseerimist t\u00f5lkida. Ja tulemus oli ootusp\u00e4rane. SonarQube v\u00f5imaldab meil t\u00f6\u00f6tada vajalike keeltes, teeb \u00fcsna t\u00e4pset anal\u00fc\u00fcsi ja omab potentsiaali arendajate soovitustest \u00f5ppida. \u00dcldiselt oleme meie esimese SonarQube'i kasutuskogemusega rahul ja plaanime selles suunas edasi areneda. Ootame, et tulevikus suudame koodi kontrollimise peale rohkem aega ja vaeva kokku hoida ning muuta selle kvaliteet paremaks, v\u00e4hendades inimfaktorit. V\u00f5ib-olla avastame protsessi k\u00e4igus platvormi puudusi v\u00f5i t\u00f5estame vastupidi veel kord, et see on \u00e4ge asi suure potentsiaaliga. <\/p>\n<p><\/p>\n<p>Selles \u00fclevaateartiklis r\u00e4\u00e4kisime meie tutvusest SonarQube'i staatilise anal\u00fcsaatoriga. Kui teil on k\u00fcsimusi, siis kirjutage palun kommentaarides. Kui see teema huvitab teid, siis uus avaldus, milles me juba t\u00e4psemalt kirjeldame, kuidas k\u00f5ike \u00f5igesti seadistada ja koodi kirjutada, et sarnast kontrolli teha. <\/p>\n<p><\/p>\n<p>Teksti autor: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Allikas: <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 4.9.10 - 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 \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\" \/>\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\/et\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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\udd47Kuidas me rakendasime SonarQube'i ja m\u00f5istsime selle suurt potentsiaali | ProHoster","description":"Soovime jagada oma kogemust SonarQube platvormi rakendamisel, et pidevalt anal\u00fc\u00fcsida ja m\u00f5\u00f5ta koodi kvaliteeti olemasolevates DPO (depoo- ja selgete arvestus) s\u00fcsteemide arendusprotsessides (t\u00e4ienduse \u201eAlameda\u201d deposiidi- ja arvelduss\u00fcsteemile) Rahvuslikus Arveldusdeposiidis. Rahvuslik Arveldusdeposiit (Moskva B\u00f6rsi kontsern) on \u00fcks finantsinfostruktuuri v\u00f5tmetest, haldades ja arvestades Venemaa ja v\u00e4lismaiste emitentide v\u00e4\u00e4rtpabereid kogusummas \u00fcle","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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 \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","og:url":"https:\/\/prohoster.info\/et\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}