{"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\/fr\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nous souhaitons partager notre exp\u00e9rience d'int\u00e9gration de la plateforme d'analyse continue et de mesure de la qualit\u00e9 du code SonarQube dans les processus de d\u00e9veloppement du syst\u00e8me DPO (compl\u00e9ment au syst\u00e8me de comptabilit\u00e9 des d\u00e9p\u00f4ts et des compensations \u00ab Alameda \u00bb) du D\u00e9positaire national de r\u00e8glement. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Le D\u00e9positaire national de r\u00e8glement (groupe de soci\u00e9t\u00e9s \u00ab Bourse de Moscou \u00bb) est l'une des entreprises cl\u00e9s de l'infrastructure financi\u00e8re, conservant et comptabilisant des titres \u00e9mis par des \u00e9metteurs russes et \u00e9trangers pour un montant sup\u00e9rieur \u00e0 50 trillions de roubles. L'augmentation des op\u00e9rations r\u00e9alis\u00e9es par le syst\u00e8me, ainsi que l'accroissement continu des fonctionnalit\u00e9s, n\u00e9cessitent le maintien d'une haute qualit\u00e9 du code source des syst\u00e8mes. L'un des outils pour atteindre cet objectif est l'analyseur statique SonarQube. Dans cet article, nous d\u00e9crivons l'exp\u00e9rience r\u00e9ussie d'int\u00e9gration transparente de l'analyseur statique SonarQube dans les processus de d\u00e9veloppement de notre d\u00e9partement. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Br\u00e8ve pr\u00e9sentation du d\u00e9partement<\/h3>\n<p><\/p>\n<p>Notre domaine de comp\u00e9tence inclut les modules suivants : paiements aux clients du NRD, circulation \u00e9lectronique des documents (CED), traitement des messages du d\u00e9positaire de n\u00e9gociation (enregistrement des transactions de gr\u00e9 \u00e0 gr\u00e9), canaux d'interaction \u00e9lectronique entre les clients et le NRD et bien d'autres encore. En somme, un vaste pan de travail sur l'aspect technique des op\u00e9rations. Nous travaillons sur la base de demandes. Les demandes des op\u00e9rationnels sont trait\u00e9es par les analystes : ils collectent les exigences des clients et nous pr\u00e9sentent leur vision de la fa\u00e7on dont cela doit \u00eatre int\u00e9gr\u00e9 dans le programme. Ensuite, le sch\u00e9ma standard : d\u00e9veloppement du code \u2013 test \u2013 exploitation exp\u00e9rimentale \u2013 livraison du code \u00e0 l'environnement de production au client direct. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">Pourquoi SonarQube en particulier ?<\/h3>\n<p><\/p>\n<p>C'est la premi\u00e8re exp\u00e9rience de notre d\u00e9partement dans l'impl\u00e9mentation d'une plateforme pour le contr\u00f4le de la qualit\u00e9 du code \u2013 auparavant, nous le faisions manuellement, en proc\u00e9dant uniquement \u00e0 des revues de code. Cependant, le volume croissant de travail n\u00e9cessite l'automatisation de ce processus. De plus, il y a des employ\u00e9s peu exp\u00e9riment\u00e9s dans l'\u00e9quipe, qui ne sont pas enti\u00e8rement familiers avec les r\u00e8glements internes de d\u00e9veloppement et ont tendance \u00e0 faire plus d'erreurs. Pour le contr\u00f4le de la qualit\u00e9 du code, il a \u00e9t\u00e9 d\u00e9cid\u00e9 de d\u00e9ployer un analyseur statique. Comme SonarQube avait d\u00e9j\u00e0 \u00e9t\u00e9 utilis\u00e9 dans certains syst\u00e8mes de la NRD, le choix n'a pas \u00e9t\u00e9 long. Auparavant, des coll\u00e8gues d'autres d\u00e9partements avaient analys\u00e9 le code de microservices dans le syst\u00e8me \u00ab Alamed\u0430 \u00bb (syst\u00e8me propre de comptabilit\u00e9 de d\u00e9p\u00f4t et de compensation de la NRD), dans le CFT (syst\u00e8me d'information pour la comptabilit\u00e9, les bilans, et la pr\u00e9paration des rapports obligatoires et internes), et dans certains autres syst\u00e8mes. Pour nos exp\u00e9riences, nous avons d\u00e9cid\u00e9 de commencer avec la version gratuite de SonarQube. Passons \u00e0 notre cas.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Processus d'impl\u00e9mentation<\/h2>\n<p><\/p>\n<p><strong>Nous avons<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>assemblage automatique du syst\u00e8me dans TeamCity ;<\/li>\n<li>le processus de transfert de code via MergeRequest de la branche feature \u00e0 la branche master dans GitLab est configur\u00e9 (processus de d\u00e9veloppement selon le GitHub Flow) ;<\/li>\n<li>SonarQube, configur\u00e9 pour analyser le code du syst\u00e8me DPO selon un emploi du temps.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Notre objectif<\/strong>: int\u00e9grer l'analyse automatique du code dans les processus CI\/CD du DPO.<\/p>\n<p><\/p>\n<p><strong>Il faut configurer<\/strong>: le processus de v\u00e9rification automatique du code par un analyseur statique \u00e0 chaque MergeRequest dans la branche principale.<\/p>\n<p><\/p>\n<p>C'est-\u00e0-dire, le tableau cible est le suivant : d\u00e8s qu'un d\u00e9veloppeur charge des modifications dans la branche feature, une v\u00e9rification automatique est lanc\u00e9e pour d\u00e9tecter de nouvelles erreurs dans le code. S'il n'y a pas d'erreurs, les modifications peuvent \u00eatre accept\u00e9es, sinon des corrections sont n\u00e9cessaires. D\u00e8s le d\u00e9but, nous avons pu identifier un certain nombre d'erreurs dans le code. Le syst\u00e8me a des param\u00e8tres tr\u00e8s flexibles : il peut \u00eatre configur\u00e9 de mani\u00e8re \u00e0 fonctionner pour des t\u00e2ches sp\u00e9cifiques des d\u00e9veloppeurs, pour chaque syst\u00e8me et style de programmation. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Configuration de QualityGate dans SonarQube<\/h3>\n<p><\/p>\n<p>L'analyse QualityGate est un sujet que nous avons d\u00e9couvert dans les profondeurs d'Internet. Au d\u00e9part, nous utilisions une autre approche, plus complexe et, d'une certaine mani\u00e8re, pas tout \u00e0 fait correcte. Nous lancions d'abord deux analyses \u00e0 travers SonarQube : nous analysions la branche feature et la branche dans laquelle nous souhaitions fusionner la branche feature, puis nous comparions le nombre d'erreurs. Cette m\u00e9thode manquait de stabilit\u00e9 et ne donnait pas toujours de r\u00e9sultats fiables. Ensuite, nous avons d\u00e9couvert qu'au lieu de faire deux analyses de SonarQube, il \u00e9tait possible de d\u00e9finir une limite sur le nombre d'erreurs autoris\u00e9es (QualityGate) et d'analyser uniquement la branche que vous chargez et comparez.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pour l'instant, nous utilisons encore une v\u00e9rification de code assez rudimentaire. Il convient de noter que SonarQube n'est pas compatible avec certains langages de programmation, y compris Delphi. Actuellement, pour notre syst\u00e8me, nous analysons uniquement le code PLSql.<\/p>\n<p><\/p>\n<p>\u00c7a fonctionne comme ceci :<\/p>\n<p><\/p>\n<ul>\n<li>Nous analysons pour notre projet uniquement le code PL\/SQL.<\/li>\n<li>Le QualityGate dans SonarQube est configur\u00e9 de telle mani\u00e8re que le nombre d'erreurs n'augmente pas avec le commit. <\/li>\n<li>Au premier lancement, nous avons obtenu 229 erreurs. Si le nombre d'erreurs lors du commit augmente, la fusion n'est pas autoris\u00e9e. <\/li>\n<li>Ensuite, sous r\u00e9serve de correction des erreurs, il sera possible de reconfigurer le QualityGate. <\/li>\n<li>De nouveaux crit\u00e8res d'analyse peuvent \u00e9galement \u00eatre ajout\u00e9s, par exemple, la couverture du code par des tests, etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Sch\u00e9ma de fonctionnement :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dans les commentaires du script, on voit que le nombre d'erreurs dans la branche feature n'a pas augment\u00e9. Tout va bien.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le bouton Merge devient disponible.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dans les commentaires du script, on voit que le nombre d'erreurs dans la branche feature a d\u00e9pass\u00e9 la limite autoris\u00e9e. C'est mauvais.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Le bouton Merge est rouge. Pour l'instant, il n'y a pas d'interdiction de fusionner des modifications avec du code erron\u00e9, mais cela se fait \u00e0 la discr\u00e9tion du d\u00e9veloppeur responsable. Par la suite, il sera possible d'interdire de tels commits dans la branche principale.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Comment nous avons impl\u00e9ment\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel\" 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\">Auto-formation sur les erreurs.<\/h3>\n<p><\/p>\n<p>Ensuite, il est n\u00e9cessaire de v\u00e9rifier toutes les erreurs identifi\u00e9es par le syst\u00e8me, car SonarQube analyse selon ses normes strictes. Ce qu'il consid\u00e8re comme une erreur ne l'est pas forc\u00e9ment dans notre code. Il est donc n\u00e9cessaire de v\u00e9rifier et de marquer si c'est vraiment une erreur, ou s'il n'est pas n\u00e9cessaire d'apporter des modifications dans notre contexte. Cela nous permet de r\u00e9duire le nombre d'erreurs. Au fil du temps, le syst\u00e8me apprendra \u00e0 comprendre ces subtilit\u00e9s. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">O\u00f9 en sommes-nous<\/h2>\n<p><\/p>\n<p>Notre objectif \u00e9tait de comprendre s'il \u00e9tait judicieux dans notre cas de traduire la v\u00e9rification du code en automatisation. Et le r\u00e9sultat a r\u00e9pondu \u00e0 nos attentes. SonarQube nous permet de travailler avec les langages qui nous int\u00e9ressent, effectue une analyse assez correcte et a le potentiel d'apprendre des suggestions des d\u00e9veloppeurs. Dans l'ensemble, nous sommes satisfaits de notre premi\u00e8re exp\u00e9rience avec SonarQube et pr\u00e9voyons d'\u00e9voluer davantage dans cette direction. Nous esp\u00e9rons qu'\u00e0 l'avenir, nous pourrons \u00e9conomiser plus de temps et d'efforts sur la v\u00e9rification du code et la rendre de meilleure qualit\u00e9, en \u00e9liminant le facteur humain. Peut-\u00eatre que pendant le processus, nous d\u00e9couvrirons des d\u00e9fauts de la plateforme ou, au contraire, nous confirmerons \u00e0 nouveau que c'est une excellente chose avec un grand potentiel. <\/p>\n<p><\/p>\n<p>Dans cet article d'examen, nous avons parl\u00e9 de notre rencontre avec l'analyseur statique SonarQube. Si vous avez des questions, n'h\u00e9sitez pas \u00e0 les poser dans les commentaires. Si ce sujet vous int\u00e9resse, dans notre prochaine publication, nous d\u00e9crirons plus en d\u00e9tail comment tout configurer correctement et \u00e9crire du code pour effectuer ce type de v\u00e9rification. <\/p>\n<p><\/p>\n<p>Auteur du texte : <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Source : <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 - 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\/fr\/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\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\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\/fr\/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\udd47Comment nous avons int\u00e9gr\u00e9 SonarQube et r\u00e9alis\u00e9 son grand potentiel | ProHoster","description":"Nous souhaitons partager.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}