{"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 oma kogemusi SonarQube'i platvormi juurutamisel, mis v\u00f5imaldab pidevat koodi kvaliteedi anal\u00fc\u00fcsi ja m\u00f5\u00f5tmist olemasolevates DPO (deposiit- ja kliiringus\u00fcsteemi \"Alameda\" t\u00e4iendus) arendusprotsessides Rahvuslikus Arveldusdepoos. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Rahvuslik Arveldusdepoo (Moskva B\u00f6rsi grupi ettev\u00f5te) on \u00fcks finantsinfrastruktuuri v\u00f5tmeettev\u00f5tteid, mis hoiab ja arvestab Venemaa ja v\u00e4lismaiste emitentide v\u00e4\u00e4rtpabereid kogusummas \u00fcle 50 triljoni rubla. S\u00fcsteemi teostatavate operatsioonide kasvav maht ja pidev funktsionaalsuse t\u00e4iustamine n\u00f5uavad s\u00fcsteemide l\u00e4htekoodi k\u00f5rge kvaliteedi s\u00e4ilitamist. \u00dcks t\u00f6\u00f6riist selle eesm\u00e4rgi saavutamiseks on staatiline anal\u00fcsaator SonarQube. Selles artiklis kirjeldame sujuvat SonarQube'i staatilise anal\u00fcsaatori juurutamise kogemust meie osakonna olemasolevates arendusprotsessides. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Osakonnast l\u00fchidalt<\/h3>\n<p><\/p>\n<p>Meie kompetentsi kuuluvad j\u00e4rgmised moodulid: NRD klientidele maksete teostamine, elektrooniline dokumendihaldus (EDO), kauplemisdepoo s\u00f5numite t\u00f6\u00f6tlemine (\u00fclevaatamata tehingute registreerimine), elektroonilise suhtluse kanalid klientide ja NRD vahel ning palju muud. Kokkuv\u00f5ttes on meil suur koormus t\u00f6\u00f6 tehnilise poolega operatiivtegevuses. Me t\u00f6\u00f6leme vastavalt taotlustele. Operatsioonide taotlusi t\u00f6\u00f6tlevad anal\u00fc\u00fctikud: nad koguvad tellija n\u00f5udmisi ja esitavad meile oma n\u00e4gemuse sellest, kuidas see programmisesse peaks mahtuma. Edasi rakendatakse standardset skeemi: koodi v\u00e4ljat\u00f6\u00f6tamine \u2013 testimine \u2013 katsek\u00e4itamine \u2013 koodi tarnimine otse tellijale tootmisprotsessi. <\/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 kvaliteedikontrolli platvormi rakendamisel - varem tegime seda k\u00e4sitsi, tehes ainult koodile \u00fclevaate. Kuid kasvav t\u00f6\u00f6maht n\u00f5uab selle protsessi automatiseerimist. Lisaks on meeskonnas ka kogenematuid t\u00f6\u00f6tajaid, kes ei tunne arenduse sisereegleid ja kipuvad rohkem vigu tegema. Kvaliteedikontrolli jaoks otsustati rakendada staatilist anal\u00fcsaatorit. Kuna SonarQube oli juba kasutusel m\u00f5nedes NRD s\u00fcsteemides, ei pidanud kaua valima. Varasemad kolleegid anal\u00fc\u00fcsisid selle abil mikroteenuste koodi s\u00fcsteemis \u201eAlameda\u201d (NRD enda depoo-kliiringu arvestuse s\u00fcsteem), CFT-s (infos\u00fcsteem raamatupidamise, bilansi ning kohustusliku ja sisearuande koostamiseks) ja m\u00f5nedes teistes s\u00fcsteemides. Katsetamiseks otsustasime alustada SonarQube tasuta versioonist. 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 kogumine TeamCitys;<\/li>\n<li>on seadistatud koodi laadimise protsess MergeRequest'ide kaudu feature-haru master-haru GitLabis (arenduse protsess vastavalt GitHub Flow'le);<\/li>\n<li>SonarQube, seadistatud DPO s\u00fcsteemi koodi anal\u00fc\u00fcsimiseks ajakava j\u00e4rgi.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Meie eesm\u00e4rk<\/strong>: rakendada automaatne koodi anal\u00fc\u00fcs CI\/CD protsessides DPO-st.<\/p>\n<p><\/p>\n<p><strong>Peame seadistama<\/strong>: staatilise anal\u00fcsaatori automaatne koodi kontrollimise protsess iga MergeRequest'i puhul p\u00f5hiharu.<\/p>\n<p><\/p>\n<p>T.e. sihtruum on j\u00e4rgmine: kui arendaja laadib muudatused feature-harusse, k\u00e4ivitatakse automaatne kontroll uute vigade leidmiseks koodis. Kui vigu ei ole, on muudatuste vastuv\u00f5tmine lubatud, vastasel juhul tuleb vead parandada. Juba algusest suutsime tuvastada teatud arvu vigu koodis. S\u00fcsteemil on v\u00e4ga paindlikud seaded: seda saab konfigureerida nii, et see t\u00f6\u00f6taks konkreetsete arendajate \u00fclesannete, iga s\u00fcsteemi ja programmeerimisstiili j\u00e4rgi. <\/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 oleme leidnud interneti s\u00fcgavadest nurkadest. Alguses kasutasime me teistsugust l\u00e4henemist, mis oli keerulisem ja mingil viisil mitte just \u00f5ige. Esiteks k\u00e4ivitasime skaneerimise SonarQube'is kaks korda: skaneerisime feature-haru ja haru, kuhu plaanisime feature-haru liita, ning seej\u00e4rel v\u00f5rdlesime vigade arvu. See meetod ei olnud stabiilne ja ei andnud alati \u00f5iget tulemust. Siis saime teada, et kahe skaneerimise asemel saab m\u00e4\u00e4rata vigade lubatud piiri (QualityGate) ja anal\u00fc\u00fcsida ainult seda haru, mida sa laadid ja mille v\u00f5rreldakse.<\/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 me endiselt \u00fcsna primitiivset koodikontrolli. Tasub m\u00e4rkida, et SonarQube ei \u00fchildu m\u00f5nede programmeerimiskeeltega, sealhulgas Delphiga. Hetkel anal\u00fc\u00fctime 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>Me anal\u00fc\u00fcsime meie projekti jaoks ainult PL\/SQL koodi.<\/li>\n<li>SonarQube'is on QualityGate seadistatud nii, et vigade arv ei suureneks koos commit'iga. <\/li>\n<li>Esimese k\u00e4ivitamise ajal oli meie vigade arv 229. Kui commit'i ajal vigade arv suureneb, siis merge ei ole lubatud. <\/li>\n<li>Edasi, tingimusel et vead parandatakse, saab QualityGate'i uuesti seadistada. <\/li>\n<li>Samuti saab lisada uusi anal\u00fc\u00fcsi punkte, n\u00e4iteks koodi testide katvust jne.<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00f6\u00f6 skeem:<\/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 vigade arv ei ole suurenenud. Seega on k\u00f5ik 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>K\u00e4ttesaadav on nupp Merge.<\/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 vigade arv on \u00fcletanud lubatud piiri. Seega on k\u00f5ik 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. Praegu ei ole keeldu, et lisada muudatusi vigase koodi t\u00f5ttu, kuid see toimub vastutava arendaja otsusel. Tulevikus v\u00f5ib keelata selliste commit'ide tegemise p\u00f5hiharusse.<\/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\">T\u00f6\u00f6tamine vigadega iseseisvalt<\/h3>\n<p><\/p>\n<p>Seej\u00e4rel on vajalik kontrollida k\u00f5iki s\u00fcsteemi tuvastatud vigu, kuna SonarQube anal\u00fc\u00fcsib oma rangete standardite j\u00e4rgi. Mis tahes asja, mida ta peab vipuks, ei pruugi meie koodis olla t\u00f5eline viga. Seet\u00f5ttu on vajalik kontrollida ja m\u00e4rkida, kas see on t\u00f5eliselt viga v\u00f5i pole meie tingimustes parandamiseks vajadust. Nii v\u00e4hendame vigade 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\u00f5udsime<\/h2>\n<p><\/p>\n<p>Meie eesm\u00e4rgiks oli m\u00f5ista, kas on m\u00f5ttekas automatiseerimise raames koodi kontrolli t\u00f5lkida. Ja tulemus \u00fcletas ootusi. SonarQube v\u00f5imaldab meil t\u00f6\u00f6tada vajalike keeltes, teeb \u00fcsna kvaliteetset anal\u00fc\u00fcsi ja omab potentsiaali \u00f5ppida arendajate soovitustest. \u00dcldiselt oleme rahul oma esimese kogemusega SonarQube'iga ja plaanime selles suunas edasi areneda. Ootame, et tulevikus suudame rohkem aega ja energiat koodi kontrollimiseks kokku hoida ning muuta selle kvaliteet paremaks, v\u00e4hendades inimfaktorit. V\u00f5imalik, et protsessi k\u00e4igus avastame platvormi puudusi v\u00f5i vastupidi, kinnitame veel kord, et see on \u00e4ge vahend suure potentsiaaliga. <\/p>\n<p><\/p>\n<p>Selles \u00fclevaateartiklis r\u00e4\u00e4kisime oma tutvumisest staatilise anal\u00fcsaatori SonarQube'iga. Kui teil on k\u00fcsimusi, kirjutage julgelt kommentaarides. Kui see teema huvitab teid, siis j\u00e4rgmises postituses r\u00e4\u00e4gime juba p\u00f5hjalikumalt, kuidas k\u00f5ik \u00f5igesti seadistada ja kirjutada koodi, et sarnast kontrolli teostada. <\/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 5.0.1.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\/et\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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.\" \/>\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 integreerisime SonarQube'i ja avastasime selle suure potentsiaali | ProHoster","description":"Me soovime jagada.","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.","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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"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}]}}