{"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\/it\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vogliamo condividere l'esperienza di implementazione della piattaforma per l'analisi continua e la misurazione della qualit\u00e0 del codice SonarQube nei processi di sviluppo esistenti del sistema DPO (integrazione con il sistema di contabilit\u00e0 depositaria e di clearing \"Alameda\") del Deposito Nazionale di Liquidit\u00e0. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Il Deposito Nazionale di Liquidit\u00e0 (gruppo di societ\u00e0 \"Borsa di Mosca\") \u00e8 una delle aziende chiave dell'infrastruttura finanziaria, conservando e registrando titoli di emittenti russi e stranieri per un valore superiore ai 50 trilioni di rubli. L'aumento del volume delle operazioni effettuate dal sistema, insieme all'espansione continua delle funzionalit\u00e0, richiede il mantenimento di un elevato standard di qualit\u00e0 del codice sorgente dei sistemi. Uno degli strumenti per raggiungere questo obiettivo \u00e8 l'analizzatore statico SonarQube. In questo articolo, descriveremo l'esperienza di successo dell'integrazione fluida dell'analizzatore statico SonarQube nei processi di sviluppo esistenti del nostro dipartimento. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Chi siamo nel dipartimento<\/h3>\n<p><\/p>\n<p>Le nostre responsabilit\u00e0 includono i seguenti moduli: pagamenti ai clienti NDP, gestione elettronica dei documenti (GED), elaborazione dei messaggi del deposito commerciale (registrazione delle transazioni OTC), canali di interazione elettronica tra clienti e NDP e molto altro. In generale, un'ampia serie di attivit\u00e0 riguardanti l'aspetto tecnico delle operazioni. Lavoriamo su richiesta. Le richieste degli operatori vengono elaborate dagli analisti: raccolgono i requisiti del cliente e ci presentano la loro visione su come dovrebbe essere implementato nel programma. Poi segue la sequenza standard: sviluppo del codice \u2013 testing \u2013 collaudo \u2013 consegna del codice all'ambiente di produzione al cliente finale. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">Perch\u00e9 proprio SonarQube?<\/h3>\n<p><\/p>\n<p>Questa \u00e8 la prima esperienza del nostro reparto nell'implementazione di una piattaforma per il controllo della qualit\u00e0 del codice: in precedenza lo facevamo manualmente, effettuando solo revisioni del codice. Tuttavia, l'aumento del carico di lavoro richiede l'automazione di questo processo. Inoltre, nel team ci sono anche dipendenti inesperti, che non sono completamente a conoscenza dei regolamenti interni di sviluppo e tendono a commettere pi\u00f9 errori. Abbiamo deciso di implementare un analizzatore statico per il controllo della qualit\u00e0 del codice. Dato che SonarQube era gi\u00e0 stato utilizzato in alcuni sistemi dell'NRD, non abbiamo dovuto scegliere a lungo. In precedenza, i colleghi di altri reparti avevano analizzato il codice dei microservizi nel sistema \u201cAlemida\u201d (il sistema di registrazione e clearing di deposito dell'NRD), in CFT (sistema informativo per la contabilit\u00e0, il bilancio, la preparazione della reportistica obbligatoria e interna), in alcuni altri sistemi. Per gli esperimenti abbiamo deciso di iniziare con la versione gratuita di SonarQube. Dunque, passiamo al nostro caso.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Processo di implementazione<\/h2>\n<p><\/p>\n<p><strong>Abbiamo<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>compilazione automatica del sistema in TeamCity;<\/li>\n<li>\u00e8 stato configurato il processo di caricamento del codice tramite MergeRequest dal branch feature al branch master in GitLab (processo di sviluppo secondo il GitHub Flow);<\/li>\n<li>SonarQube, configurato per l'analisi del codice per il sistema DPO su base programmata.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Il nostro obiettivo<\/strong>: implementare l'analisi automatica del codice nei processi CI\/CD DPO.<\/p>\n<p><\/p>\n<p><strong>Deve essere configurato<\/strong>: il processo di verifica automatica del codice da parte dell'analizzatore statico ad ogni MergeRequest nel branch principale.<\/p>\n<p><\/p>\n<p>Cio\u00e8, l'immagine obiettivo \u00e8 la seguente: non appena un sviluppatore carica le modifiche nel branch feature, si avvia un controllo automatico per rilevare nuovi errori nel codice. Se non ci sono errori, le modifiche possono essere approvate, altrimenti dovranno essere corrette. Gi\u00e0 alla fase iniziale siamo stati in grado di identificare un certo numero di errori nel codice. Il sistema ha impostazioni molto flessibili: pu\u00f2 essere configurato in modo tale da funzionare per compiti specifici degli sviluppatori, per ogni sistema e stile di programmazione. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Configurazione del QualityGate in SonarQube<\/h3>\n<p><\/p>\n<p>L'analisi del QualityGate \u00e8 qualcosa che abbiamo scoperto nel profondo di Internet. Inizialmente abbiamo utilizzato un altro approccio, pi\u00f9 complesso e da un certo punto di vista non del tutto corretto. All'inizio, eseguivamo la scansione attraverso SonarQube due volte: analizzavamo il ramo feature e il ramo in cui intendevamo unire il ramo feature, per poi confrontare il numero di errori. Questo metodo non era stabile e non produceva sempre risultati corretti. Poi abbiamo scoperto che, invece di eseguire SonarQube due volte, si pu\u00f2 impostare un limite sul numero di errori consentiti (QualityGate) e analizzare solo il ramo che stai caricando e confrontando.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per ora stiamo ancora utilizzando un controllo del codice piuttosto primitivo. Va notato che SonarQube non \u00e8 compatibile con alcuni linguaggi di programmazione, tra cui Delphi. Attualmente, per il nostro sistema analizziamo solo il codice PLSql.<\/p>\n<p><\/p>\n<p>Funziona cos\u00ec:<\/p>\n<p><\/p>\n<ul>\n<li>Analizziamo solo il codice PL\/SQL per il nostro progetto.<\/li>\n<li>In SonarQube, il QualityGate \u00e8 configurato in modo tale che il numero di errori non aumenti con il commit. <\/li>\n<li>Il numero di errori al primo avvio era 229. Se il numero di errori durante il commit aumenta, il merge non \u00e8 consentito. <\/li>\n<li>In seguito, se gli errori vengono corretti, sar\u00e0 possibile riconfigurare il QualityGate. <\/li>\n<li>\u00c8 anche possibile aggiungere nuovi punti per l'analisi, come la copertura del codice tramite test, ecc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Schema di lavoro:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nei commenti dell'esecuzione dello script si vede che il numero di errori nel ramo feature non \u00e8 aumentato. Quindi va tutto bene.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il pulsante Merge diventa disponibile.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nei commenti dell'esecuzione dello script si nota che il numero di errori nel ramo feature \u00e8 aumentato oltre il limite consentito. Quindi le cose vanno MALE.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il pulsante Merge \u00e8 rosso. Attualmente non c'\u00e8 divieto di caricare modifiche su codice errato, ma questo viene fatto a discrezione dello sviluppatore responsabile. In futuro, sar\u00e0 possibile vietare tali commit nel ramo principale.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come abbiamo implementato SonarQube e riconosciuto il suo grande potenziale\" 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\">Lavoro autonomo sugli errori<\/h3>\n<p><\/p>\n<p>In seguito \u00e8 necessario controllare tutti gli errori rilevati dal sistema, perch\u00e9 SonarQube analizza secondo i propri rigorosi standard. Ci\u00f2 che considera un errore potrebbe non essere realmente un errore nel nostro codice. Pertanto, \u00e8 necessario verificare e segnare se effettivamente si tratta di un errore, o se non \u00e8 necessario correggere nulla nelle nostre condizioni. In questo modo riduciamo il numero di errori. Col tempo, il sistema imparer\u00e0 a comprendere queste sfumature. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">A cosa siamo giunti<\/h2>\n<p><\/p>\n<p>Il nostro obiettivo era capire se fosse opportuno nel nostro caso tradurre il controllo del codice in automazione. E i risultati hanno soddisfatto le aspettative. SonarQube ci consente di lavorare con i linguaggi di cui abbiamo bisogno, effettua un'analisi piuttosto accurata e ha il potenziale per apprendere dai suggerimenti degli sviluppatori. In generale, siamo soddisfatti della nostra prima esperienza con SonarQube e pianifichiamo di svilupparci ulteriormente in questa direzione. Ci aspettiamo che in futuro potremo risparmiare pi\u00f9 tempo e sforzi nel controllo del codice e renderlo di migliore qualit\u00e0, eliminando il fattore umano. \u00c8 possibile che nel processo scopriamo dei difetti della piattaforma o, al contrario, ci convinciamo ancora una volta che si tratta di uno strumento fantastico con un grande potenziale. <\/p>\n<p><\/p>\n<p>In questo articolo di panoramica abbiamo parlato del nostro incontro con l'analizzatore statico SonarQube. Se hai domande, non esitare a scrivere nei commenti. Se sei interessato a questo argomento, in una nuova pubblicazione descriveremo gi\u00e0 pi\u00f9 in dettaglio come configurare tutto correttamente e scrivere codice per effettuare questo tipo di controllo. <\/p>\n<p><\/p>\n<p>Autore del testo: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Come abbiamo implementato SonarQube e compreso il suo grande potenziale | ProHoster","description":"Vogliamo condividere.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}