{"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\/de\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wir m\u00f6chten unsere Erfahrungen mit der Implementierung der Plattform zur kontinuierlichen Analyse und Messung der Codequalit\u00e4t SonarQube in die bestehenden Entwicklungsprozesse des DPO-Systems (Erg\u00e4nzung zum System der Depot- und Clearingbuchhaltung \u201eAlameda\u201c) des Nationalen Abrechnungstaatsdepots teilen. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Das Nationale Abrechnungstaatsdepot (Gruppe der Unternehmen \u201eMoskauer B\u00f6rse\u201c) ist eines der Schl\u00fcsselunternehmen der Finanzinfrastruktur und verwaltet und verwahrt Wertpapiere von russischen und ausl\u00e4ndischen Emittenten im Wert von \u00fcber 50 Billionen Rubel. Das wachsende Volumen der \u00fcber das System abgewickelten Transaktionen sowie die kontinuierliche Erweiterung der Funktionalit\u00e4ten erfordern die Aufrechterhaltung einer hohen Qualit\u00e4t des Quellcodes der Systeme. Ein Instrument zur Erreichung dieses Ziels ist der statische Code-Analysator SonarQube. In diesem Artikel werden wir die erfolgreiche Umsetzung des statischen Analysators SonarQube in die bestehenden Entwicklungsprozesse unserer Abteilung beschreiben. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Kurz \u00fcber die Abteilung<\/h3>\n<p><\/p>\n<p>In unserem T\u00e4tigkeitsbereich befinden sich folgende Module: Zahlungen an die Kunden des NRD, elektronischer Dokumentenaustausch (EDE), Verarbeitung von Nachrichten des Handelsdepot (Registrierung von au\u00dferb\u00f6rslichen Gesch\u00e4ften), Kan\u00e4le der elektronischen Interaktion zwischen Kunden und NRD und vieles mehr. Im Allgemeinen betrifft dies einen gro\u00dfen Bereich der technischen Arbeit im operativen Gesch\u00e4ft. Wir arbeiten auf der Grundlage von Anfragen. Die Anfragen der Operatoren werden von Analysten bearbeitet: Sie sammeln die Anforderungen des Kunden und pr\u00e4sentieren uns ihre Vision, wie dies im Programm umgesetzt werden sollte. Dann folgt das Standardschema: Codeentwicklung \u2013 Testen \u2013 Betriebserprobung \u2013 Auslieferung des Codes an den produktiven Kontrakt an den direkten Kunden. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">Warum gerade SonarQube?<\/h3>\n<p><\/p>\n<p>Dies ist die erste Erfahrung unserer Abteilung bei der Implementierung einer Plattform zur Qualit\u00e4tssicherung des Codes \u2013 zuvor haben wir dies manuell gemacht und nur Code-Reviews durchgef\u00fchrt. Aber das wachsende Arbeitsvolumen erfordert eine Automatisierung dieses Prozesses. Au\u00dferdem gibt es im Team unerfahrene Mitarbeiter, die mit den internen Entwicklungsrichtlinien nicht ganz vertraut sind und tendenziell mehr Fehler machen. Um die Codequalit\u00e4t zu kontrollieren, wurde beschlossen, einen statischen Code-Analyzer einzuf\u00fchren. Da SonarQube bereits in einigen Systemen der NRD verwendet wurde, musste nicht lange gew\u00e4hlt werden. Zuvor hatten Kollegen aus anderen Abteilungen damit den Code von Mikrodiensten im System \u201eAlemada\u201c (eigenes System f\u00fcr Depot- und Clearingbuchhaltung der NRD), im CFT (Informationssystem f\u00fcr die Buchhaltung, Bilanz, Erstellung von verpflichtenden und internen Berichten) und in einigen anderen Systemen analysiert. F\u00fcr die Experimente haben wir beschlossen, mit der kostenlosen Version von SonarQube zu beginnen. Lassen Sie uns also zu unserem Fall \u00fcbergehen.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Implementierungsprozess<\/h2>\n<p><\/p>\n<p><strong>Wir haben<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>eine automatische Systembuild in TeamCity;<\/li>\n<li>einen Prozess zum Einpflegen von Code \u00fcber MergeRequest vom Feature-Branch in den Master-Branch in GitLab (Entwicklungsprozess gem\u00e4\u00df GitHub Flow) eingerichtet;<\/li>\n<li>SonarQube, konfiguriert zur Analyse des Codes f\u00fcr das DPO-System nach Zeitplan.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Unser Ziel<\/strong>: die automatische Codeanalyse in die CI\/CD-Prozesse des DPO zu integrieren.<\/p>\n<p><\/p>\n<p><strong>Es muss eingerichtet werden<\/strong>: der Prozess der automatischen \u00dcberpr\u00fcfung des Codes durch den statischen Analyzer bei jedem MergeRequest in den Haupt-Branch.<\/p>\n<p><\/p>\n<p>Das hei\u00dft, das Zielbild ist folgendes: Sobald der Entwickler \u00c4nderungen in den Feature-Branch einpflegt, wird eine automatische \u00dcberpr\u00fcfung auf neue Fehler im Code gestartet. Wenn keine Fehler vorhanden sind, wird die Annahme der \u00c4nderungen genehmigt; andernfalls m\u00fcssen die Fehler behoben werden. Bereits in der Anfangsphase konnten wir eine bestimmte Anzahl von Fehlern im Code identifizieren. Das System hat sehr flexible Einstellungen: Es kann so konfiguriert werden, dass es f\u00fcr die spezifischen Aufgaben der Entwickler sowie f\u00fcr jedes System und jeden Programmierstil funktioniert. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Einrichtung des QualityGate in SonarQube<\/h3>\n<p><\/p>\n<p>Die Analyse von QualityGate ist etwas, das wir in den Tiefen des Internets gefunden haben. Urspr\u00fcnglich verwendeten wir einen anderen, komplizierteren und auf gewisse Weise nicht ganz richtigen Ansatz. Zuerst f\u00fchrten wir zwei Scans \u00fcber SonarQube durch: Wir scannten den Feature-Branch und den Branch, in den wir den Feature-Branch integrieren wollten, und verglichen dann die Anzahl der Fehler. Diese Methode war nicht stabil und lieferte nicht immer die richtigen Ergebnisse. Dann erfuhren wir, dass wir anstelle eines doppelten Durchlaufs von SonarQube ein Limit f\u00fcr die zul\u00e4ssige Anzahl von Fehlern (QualityGate) setzen k\u00f6nnen und nur den Branch analysieren sollten, den wir hochladen und vergleichen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bis jetzt verwenden wir eine ziemlich primitive Code\u00fcberpr\u00fcfung. Es ist erw\u00e4hnenswert, dass SonarQube mit einigen Programmiersprachen, einschlie\u00dflich Delphi, nicht kompatibel ist. Derzeit analysieren wir f\u00fcr unser System nur PL\/SQL-Code.<\/p>\n<p><\/p>\n<p>So funktioniert es:<\/p>\n<p><\/p>\n<ul>\n<li>F\u00fcr unser Projekt analysieren wir nur PL\/SQL-Code.<\/li>\n<li>In SonarQube ist das QualityGate so eingestellt, dass die Anzahl der Fehler mit jedem Commit nicht steigt. <\/li>\n<li>Die Anzahl der Fehler beim ersten Scan betrug 229. Wenn die Fehlerzahl beim Commit steigt, wird das Merge nicht genehmigt. <\/li>\n<li>Wenn die Fehler behoben sind, kann das QualityGate neu konfiguriert werden. <\/li>\n<li>Es k\u00f6nnen auch neue Punkte zur Analyse hinzugef\u00fcgt werden, beispielsweise die Testabdeckung etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Arbeitsweise:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In den Kommentaren der Skriptausf\u00fchrung ist zu sehen, dass die Anzahl der Fehler im Feature-Branch nicht gestiegen ist. Das hei\u00dft, alles ist in Ordnung.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Merge-Taste wird verf\u00fcgbar.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>In den Kommentaren der Skriptausf\u00fchrung ist zu sehen, dass die Anzahl der Fehler im Feature-Branch die zul\u00e4ssige Grenze \u00fcberschritten hat. Das hei\u00dft, alles ist schlecht.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Die Merge-Taste ist rot. Derzeit gibt es kein Verbot, \u00c4nderungen am fehlerhaften Code hochzuladen, aber dies erfolgt nach Ermessen des verantwortlichen Entwicklers. Zuk\u00fcnftig kann es untersagt werden, solche Commits in den Hauptbranch einzuf\u00fcgen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Wie wir SonarQube eingef\u00fchrt haben und sein gro\u00dfes Potenzial erkannt haben\" 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\">Selbstst\u00e4ndige Arbeit an den Fehlern<\/h3>\n<p><\/p>\n<p>Es ist nun notwendig, alle vom System identifizierten Fehler zu \u00fcberpr\u00fcfen, da SonarQube nach seinen strengen Standards analysiert. Was er als Fehler ansieht, k\u00f6nnte in unserem Code tats\u00e4chlich kein Fehler sein. Daher m\u00fcssen wir \u00fcberpr\u00fcfen und notieren, ob es sich wirklich um einen Fehler handelt oder ob in unseren Bedingungen keine Notwendigkeit zum Korrigieren besteht. Auf diese Weise reduzieren wir die Fehlerzahl. Mit der Zeit wird das System lernen, diese Nuancen zu verstehen. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">Wo sind wir gelandet<\/h2>\n<p><\/p>\n<p>Unser Ziel war es zu verstehen, ob es sinnvoll ist, die Codepr\u00fcfung in unserem Fall zu automatisieren. Und das Ergebnis hat die Erwartungen erf\u00fcllt. SonarQube erm\u00f6glicht es uns, mit den f\u00fcr uns notwendigen Sprachen zu arbeiten, bietet eine recht fundierte Analyse und hat das Potenzial, von den Hinweisen der Entwickler zu lernen. Insgesamt sind wir mit unseren ersten Erfahrungen mit SonarQube zufrieden und planen, uns in diesem Bereich weiterzuentwickeln. Wir erwarten, dass wir in Zukunft mehr Zeit und M\u00fche bei der Codepr\u00fcfung sparen k\u00f6nnen und dass diese qualitativ hochwertiger wird, indem wir den menschlichen Faktor beseitigen. M\u00f6glicherweise werden wir im Prozess M\u00e4ngel der Plattform entdecken oder uns erneut davon \u00fcberzeugen, dass dies ein gro\u00dfartiges Tool mit gro\u00dfem Potenzial ist. <\/p>\n<p><\/p>\n<p>In diesem \u00dcberblicksartikel haben wir \u00fcber unsere Bekanntschaft mit dem statischen Analysewerkzeug SonarQube berichtet. Wenn Sie Fragen haben, schreiben Sie bitte in die Kommentare. Wenn Sie sich f\u00fcr dieses Thema interessieren, werden wir in einer neuen Ver\u00f6ffentlichung bereits n\u00e4her erl\u00e4utern, wie man alles richtig einrichtet und Code schreibt, um eine \u00e4hnliche Pr\u00fcfung durchzuf\u00fchren. <\/p>\n<p><\/p>\n<p>Autor des Textes: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Wie wir SonarQube implementiert und sein gro\u00dfes Potenzial erkannt haben | ProHoster","description":"Wir m\u00f6chten teilen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}