{"id":91065,"date":"2020-08-08T01:42:18","date_gmt":"2020-08-07T23:42:18","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii"},"modified":"2020-08-08T01:42:18","modified_gmt":"2020-08-07T23:42:18","slug":"staticheskij-analiz-ot-znakomstva-do-integraczii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","title":{"rendered":"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l'int\u00e9gration","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Fatigu\u00e9 par des revues de code ou des d\u00e9bogages sans fin, vous vous demandez parfois comment simplifier votre vie. Apr\u00e8s quelques recherches, ou peut-\u00eatre par hasard, vous pourriez tomber sur l'expression magique : \"Analyse statique\". Voyons voir ce que c'est et comment cela peut interagir avec votre projet.<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/7811b22510bdda6f3f774b8335cbeabe.png\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEn fait, si vous \u00e9crivez dans un langage moderne, alors, sans m\u00eame vous en rendre compte, vous avez utilis\u00e9 un analyseur statique. Tout simplement parce que tout compilateur moderne fournit, m\u00eame de mani\u00e8re minime, un certain nombre d'avertissements concernant des probl\u00e8mes potentiels dans le code. Par exemple, en compilant du code C++ dans Visual Studio, vous pouvez voir ce qui suit :<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/a267e4e8a57c1a32e508e5e1983c5ff0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDans cette sortie, nous voyons que la variable <i>var<\/i> n'a pas \u00e9t\u00e9 utilis\u00e9e nulle part dans la fonction. Vous avez donc presque toujours utilis\u00e9 un simple analyseur statique. Cependant, contrairement \u00e0 des analyseurs professionnels tels que Coverity, Klocwork ou PVS-Studio, les avertissements fournis par le compilateur ne peuvent indiquer qu'un petit \u00e9ventail de probl\u00e8mes.<\/p>\n<p>Si vous ne savez pas vraiment ce qu'est l'analyse statique et comment l'impl\u00e9menter, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0046\/\">Le stockage de donn\u00e9es doit \u00eatre non local, afin que Kubernetes puisse choisir plus efficacement un nouveau n\u0153ud apr\u00e8s un red\u00e9marrage ou une relocalisation.<\/a><\/noindex>, pour vous familiariser plus en d\u00e9tail avec cette m\u00e9thodologie. <\/p>\n<h2>Pourquoi a-t-on besoin de l'analyse statique ?<\/h2>\n<p>\nEn deux mots : acc\u00e9l\u00e9ration et simplification. <\/p>\n<p>L'analyse statique permet de trouver une multitude de probl\u00e8mes dans le code : allant d'une mauvaise utilisation des constructions du langage \u00e0 des fautes de frappe. Par exemple, au lieu de <\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.z;<\/code><\/pre>\n<p>\nvous avez \u00e9crit le code suivant :<\/p>\n<pre><code class=\"cpp\">auto x = obj.x;\nauto y = obj.y;\nauto z = obj.x;<\/code><\/pre>\n<p>\nComme vous pouvez le voir, il y a une faute de frappe dans la derni\u00e8re ligne. Par exemple, PVS-Studio g\u00e9n\u00e8re l'avertissement suivant :<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v537\/\">V537<\/a><\/noindex> Consid\u00e9rez la v\u00e9rification de l'exactitude de l'utilisation de l'\u00e9l\u00e9ment 'y'.<\/p>\n<p>Si vous voulez tester cette erreur par vous-m\u00eame, essayez un exemple pr\u00eat \u00e0 l'emploi sur Compiler Explorer : *<noindex><a rel=\"nofollow\" href=\"https:\/\/godbolt.org\/z\/cd4WK7\">cliquer<\/a><\/noindex>*.<\/p>\n<p>Et comme vous le comprenez, il n'est pas toujours possible de faire attention \u00e0 de tels morceaux de code imm\u00e9diatement, et cela peut entra\u00eener de longues heures de d\u00e9bogage, se demandant pourquoi tout fonctionne si \u00e9trangement. <\/p>\n<p>Cependant, c'est une erreur manifeste. Que faire si le d\u00e9veloppeur a \u00e9crit un code non optimal parce qu'il a oubli\u00e9 une subtilit\u00e9 du langage ? Ou m\u00eame a introduit dans le code <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/t\/0066\/\">un comportement ind\u00e9fini.<\/a><\/noindex>? \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0431\u044b\u0434\u0435\u043d\u043d\u044b \u0438 \u043b\u044c\u0432\u0438\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0442\u043b\u0430\u0434\u0438\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438, \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043b\u0438 undefined behavior.<\/p>\n<p>C'est pr\u00e9cis\u00e9ment pour ces situations que l'analyse statique a \u00e9t\u00e9 cr\u00e9\u00e9e. C'est un assistant pour le d\u00e9veloppeur, qui lui signalera divers probl\u00e8mes dans le code et expliquera dans la documentation pourquoi il ne faut pas \u00e9crire de cette mani\u00e8re, quelles en sont les cons\u00e9quences et comment les corriger. Voici un exemple de ce \u00e0 quoi cela peut ressembler : *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/w\/v702\/\">cliquer<\/a><\/noindex>*.<\/p>\n<p>Vous pouvez trouver d'autres erreurs int\u00e9ressantes que l'analiseur peut d\u00e9tecter dans les articles suivants :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0700\/\">Top 10 des erreurs dans les projets C++ en 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0698\/\">Top 10 des erreurs dans les projets C# en 2019<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0699\/\">Top 10 des erreurs dans les projets Java en 2019<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nMaintenant que vous avez lu ce mat\u00e9riel et que vous vous \u00eates convaincu de l'utilit\u00e9 de l'analyse statique, vous avez peut-\u00eatre envie de l'essayer en pratique. Mais par o\u00f9 commencer ? Comment int\u00e9grer ce nouvel outil dans un projet existant ? Et comment familiariser l'\u00e9quipe avec celui-ci ? Vous trouverez les r\u00e9ponses \u00e0 ces questions ci-dessous.<\/p>\n<p><b>Remarque.<\/b> L'analyse statique ne remplace pas et n'annule pas quelque chose d'aussi utile que les revues de code. Elle compl\u00e8te ce processus, aidant \u00e0 rep\u00e9rer et corriger \u00e0 l'avance les fautes de frappe, les inexactitudes et les constructions dangereuses. Il est beaucoup plus productif de se concentrer lors des revues de code sur les algorithmes et la clart\u00e9 du code, plut\u00f4t que de chercher une parenth\u00e8se mal plac\u00e9e ou <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0509\/\">de lire des fonctions de comparaison ennuyeuses.<\/a><\/noindex>.<\/p>\n<h2>0. Introduction \u00e0 l'outil<\/h2>\n<p>\nTout commence par une version d'essai. En effet, il est difficile de se d\u00e9cider \u00e0 int\u00e9grer quoi que ce soit dans le processus de d\u00e9veloppement si l'on n'a jamais vu l'outil en action. C'est pourquoi la premi\u00e8re \u00e9tape consiste \u00e0 t\u00e9l\u00e9charger <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/pvs-studio-download\/?promo=mscas\">du produit, qui fonctionnera \u00e0 des fins de d\u00e9monstration pendant 14 jours.<\/a><\/noindex>.<\/p>\n<p><b>Ce que vous apprendrez \u00e0 cette \u00e9tape :<\/b><\/p>\n<ul>\n<li>Quelles sont les m\u00e9thodes pour interagir avec l'analiseur ;<\/li>\n<li>L'analiseur est-il compatible avec votre environnement de d\u00e9veloppement ;<\/li>\n<li>Quels probl\u00e8mes existent actuellement dans vos projets.<\/li>\n<\/ul>\n<p>\nUne fois que vous avez tout install\u00e9, la premi\u00e8re chose \u00e0 faire est de lancer l'analyse de l'ensemble du projet (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0635\/\">Windows<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">Linux<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">macOS<\/a><\/noindex>). Dans le cas de PVS-Studio dans Visual Studio, vous verrez une image similaire (cliquable) :<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/865b2dfa10661e4999238cdccf8860dc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nLe fait est qu'en g\u00e9n\u00e9ral, pour des projets avec une base de code importante, les analyseurs statiques produisent un grand nombre d'avertissements. Il n'est pas n\u00e9cessaire de tous les corriger, car votre projet fonctionne d\u00e9j\u00e0, ce qui signifie que ces probl\u00e8mes ne sont pas critiques. Cependant, vous <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0633\/\">pouvez jeter un \u0153il aux avertissements les plus int\u00e9ressants.<\/a><\/noindex> et de les corriger si n\u00e9cessaire. Pour cela, il faut filtrer la sortie et ne conserver que les messages les plus fiables. Dans le plugin PVS-Studio pour Visual Studio, cela se fait par un filtrage selon les niveaux et les cat\u00e9gories d'erreurs. Pour obtenir les r\u00e9sultats les plus pr\u00e9cis, laissez activ\u00e9s uniquement <i>Couverture d'ombre du soleil<\/i> et <i>G\u00e9n\u00e9ral<\/i> (cliquable aussi) :<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/400b90713f67b531e4ed513ea9d340a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIl est en effet beaucoup plus simple de consulter 178 avertissements que plusieurs milliers...<\/p>\n<p>Dans les onglets <i>\u00c9lev\u00e9<\/i> et <i>Faible<\/i> on trouve souvent de bons avertissements, cependant ces cat\u00e9gories incluent des diagnostics qui ont une pr\u00e9cision (fiabilit\u00e9) moindre. Pour en savoir plus sur les niveaux d'avertissements et les options de travail sous Windows, vous pouvez consulter ici : *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\">cliquer<\/a><\/noindex>*.<\/p>\n<p>Apr\u00e8s avoir examin\u00e9 les erreurs les plus int\u00e9ressantes (et les avoir corrig\u00e9es avec succ\u00e8s), il est temps de <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0032\/\">r\u00e9duire les avertissements restants<\/a><\/noindex>. Cela est n\u00e9cessaire pour que les nouveaux avertissements ne se perdent pas parmi les anciens. De plus, l'analyseur statique est un assistant pour le programmeur, et non une liste de bugs. \ud83d\ude42<\/p>\n<h2>1. Automatisation<\/h2>\n<p>\nApr\u00e8s la prise de contact, il est temps de configurer les plugins et de les int\u00e9grer dans le CI. Cela doit \u00eatre fait avant que les programmeurs ne commencent \u00e0 utiliser l'analyseur statique. En effet, le programmeur peut oublier d'activer l'analyse ou ne pas vouloir du tout. Pour cela, il est n\u00e9cessaire de faire une v\u00e9rification finale afin que le code non analys\u00e9 ne puisse pas entrer dans la branche principale de d\u00e9veloppement.<\/p>\n<p><b>Ce que vous apprendrez \u00e0 cette \u00e9tape :<\/b><\/p>\n<ul>\n<li>Quelles options d'automatisation l'outil propose ;<\/li>\n<li>Si l'analyseur est compatible avec votre syst\u00e8me de build.<\/li>\n<\/ul>\n<p>\nPuisque la documentation id\u00e9ale n'existe pas, il arrive parfois qu'il faille \u00e9crire \u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/about-feedback\/\">le support<\/a><\/noindex>. C'est normal, et nous sommes heureux de vous aider. \ud83d\ude42<\/p>\n<p>Et maintenant, passons aux services d'int\u00e9gration continue (CI). N'importe quel analyseur peut y \u00eatre int\u00e9gr\u00e9 sans probl\u00e8mes majeurs. Pour cela, il faut cr\u00e9er une \u00e9tape distincte dans le pipeline, qui se trouve g\u00e9n\u00e9ralement apr\u00e8s la compilation et les tests unitaires. Cela se fait \u00e0 l'aide de diverses utilitaires en ligne de commande. Par exemple, PVS-Studio propose les utilitaires suivants :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\">PVS-Studio_Cmd.exe<\/a><\/noindex> (analyse de solutions, projets C#, C++ sous Windows)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0031\/\">CLMonitor.exe<\/a><\/noindex> (monitoring de la compilation)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">pvs-studio-analyzer<\/a><\/noindex> (analyse de projets C++ sous Linux \/ macOS)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0035\/\">pvs-studio-dotnet<\/a><\/noindex> (analyse de solutions, projets C# sous Linux \/ macOS)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">pvs-studio.jar<\/a><\/noindex> (analyse de projets Java)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">PlogConverter<\/a><\/noindex> (convertisseur de fichiers de rapport)<\/li>\n<\/ul>\n<p>\nPour int\u00e9grer l'analyse dans le CI, il faut faire trois choses :<\/p>\n<ul>\n<li>Installer l'analyseur ;<\/li>\n<li>Lancer l'analyse ;<\/li>\n<li>Livrer les r\u00e9sultats.<\/li>\n<\/ul>\n<p>\nPar exemple, pour installer PVS-Studio sur Linux (bas\u00e9 sur Debian), il faut ex\u00e9cuter les commandes suivantes :<\/p>\n<pre><code class=\"bash\">wget -q -O - https:\/\/files.viva64.com\/etc\/pubkey.txt \n    | sudo apt-key add -\nsudo wget -O \/etc\/apt\/sources.list.d\/viva64.list \n  https:\/\/files.viva64.com\/etc\/viva64.list\n  \nsudo apt-get update -qq\nsudo apt-get install -qq pvs-studio<\/code><\/pre>\n<p>\nDans les syst\u00e8mes sous Windows, il n'est pas possible d'installer l'analyseur via un gestionnaire de paquets, mais il est possible de d\u00e9ployer l'analyseur depuis la ligne de commande :<\/p>\n<pre><code class=\"powershell\">PVS-Studio_setup.exe \/verysilent \/suppressmsgboxes \n\/norestart \/nocloseapplications<\/code><\/pre>\n<p>\nPour en savoir plus sur le d\u00e9ploiement de PVS-Studio dans les syst\u00e8mes sous Windows, vous pouvez lire *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">ici<\/a><\/noindex>*.<\/p>\n<p>Apr\u00e8s l'installation, il faut lancer directement l'analyse. Cependant, il est recommand\u00e9 de le faire uniquement apr\u00e8s la compilation et les tests. Cela est d\u00fb au fait que l'analyse statique n\u00e9cessite g\u00e9n\u00e9ralement deux fois plus de temps que la compilation.<\/p>\n<p>\u00c9tant donn\u00e9 que la m\u00e9thode de lancement d\u00e9pend de la plate-forme et des caract\u00e9ristiques du projet, je vais montrer une option pour C++ (Linux) en exemple :<\/p>\n<pre><code class=\"bash\">pvs-studio-analyzer analyze -j8 \n                            -o PVS-Studio.log\nplog-converter -t errorfile PVS-Studio.log --cerr -w<\/code><\/pre>\n<p>\nLa premi\u00e8re commande effectuera l'analyse, et la seconde <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0038\/\">convertit<\/a><\/noindex>le rapport au format texte, l'affichera \u00e0 l'\u00e9cran et renverra un code de retour diff\u00e9rent de 0 en cas d'avertissements. Un tel m\u00e9canisme est utile pour bloquer la construction en cas de messages d'erreur. Cependant, vous pouvez toujours supprimer le drapeau <i>-w<\/i> et ne pas bloquer la construction contenant des avertissements.<\/p>\n<p><b>Remarque.<\/b> Le format texte n'est pas pratique. Il est donn\u00e9 simplement \u00e0 titre d'exemple. Notez le format de rapport plus int\u00e9ressant \u2014 FullHtml. Il permet de naviguer dans le code.<\/p>\n<p>Vous pouvez en savoir plus sur la configuration de l'analyse sur CI dans l'article \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0005\">PVS-Studio et Continuous Integration<\/a><\/noindex>\" (Windows) ou \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0661\/\">Comment configurer PVS-Studio dans Travis CI<\/a><\/noindex>\" (Linux).<\/p>\n<p>Bien, vous avez configur\u00e9 le travail de l'analyseur sur le serveur de construction. Maintenant, si quelqu'un t\u00e9l\u00e9charge du code non v\u00e9rifi\u00e9, l'\u00e9tape de v\u00e9rification \u00e9chouera, vous permettant de d\u00e9tecter le probl\u00e8me. Toutefois, cela n'est pas tout \u00e0 fait pratique, car il est plus efficace de v\u00e9rifier le projet avant qu'il y ait fusion des branches, au stade de la requ\u00eate de tirage.<\/p>\n<p>En g\u00e9n\u00e9ral, la configuration de l'analyse de la requ\u00eate de tirage ne diff\u00e8re pas beaucoup de l'ex\u00e9cution normale de l'analyse sur CI, \u00e0 l'exception de la n\u00e9cessit\u00e9 d'obtenir la liste des fichiers modifi\u00e9s. G\u00e9n\u00e9ralement, vous pouvez les obtenir en demandant la diff\u00e9rence entre les branches \u00e0 l'aide de git :<\/p>\n<pre><code class=\"bash\">git diff --name-only HEAD origin\/$MERGE_BASE &gt; .pvs-pr.list<\/code><\/pre>\n<p>\nIl est maintenant n\u00e9cessaire de transmettre cette liste de fichiers \u00e0 l'analiseur. Par exemple, dans PVS-Studio, cela est r\u00e9alis\u00e9 \u00e0 l'aide d'un drapeau. <i>-S<\/i>:<\/p>\n<pre><code class=\"bash\">pvs-studio-analyzer analyze -j8 \n                            -o PVS-Studio.log \n                            -S .pvs-pr.list<\/code><\/pre>\n<p>\nPour en savoir plus sur l'analyse des requ\u00eates de tirage, vous pouvez consulter *<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0679\/\">ici<\/a><\/noindex>* M\u00eame si votre CI n'est pas dans la liste des services mentionn\u00e9s dans l'article, la section g\u00e9n\u00e9rale consacr\u00e9e \u00e0 la th\u00e9orie de ce type d'analyse vous sera utile.<\/p>\n<p>En configurant l'analyse des requ\u00eates de tirage, vous pourrez bloquer les commits contenant des avertissements, cr\u00e9ant ainsi une limite que le code non v\u00e9rifi\u00e9 ne pourra pas franchir.<\/p>\n<p>Tout cela est certainement bien, mais j'aimerais pouvoir voir tous les avertissements au m\u00eame endroit. Non seulement ceux du v\u00e9rificateur statique, mais aussi ceux des tests unitaires ou de l'analyseur dynamique. Pour cela, divers services et plugins existent. PVS-Studio, par exemple, dispose d'un <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0037\/\">plugin pour l'int\u00e9gration dans SonarQube.<\/a><\/noindex>.<\/p>\n<h2>2. Int\u00e9gration sur les machines des d\u00e9veloppeurs.<\/h2>\n<p>\nIl est maintenant temps d'installer et de configurer l'analiseur pour un usage quotidien lors du d\u00e9veloppement. \u00c0 ce stade, vous avez d\u00e9j\u00e0 d\u00e9couvert la plupart des m\u00e9thodes de travail, donc cela peut \u00eatre consid\u00e9r\u00e9 comme la partie la plus facile.<\/p>\n<p>Comme option la plus simple, les d\u00e9veloppeurs peuvent eux-m\u00eames installer l'analiseur n\u00e9cessaire. Cependant, cela prendra beaucoup de temps et les d\u00e9tournera de leur d\u00e9veloppement, c'est pourquoi vous pouvez automatiser ce processus en utilisant un installateur et les drapeaux n\u00e9cessaires. Pour PVS-Studio, il existe diff\u00e9rents <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0025\/\">drapeaux pour l'installation automatis\u00e9e.<\/a><\/noindex>. Cependant, il y a toujours des gestionnaires de paquets, comme Chocolatey (Windows), Homebrew (macOS) ou des dizaines d'options pour Linux.<\/p>\n<p>Ensuite, il faudra installer les plugins n\u00e9cessaires, par exemple pour <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0635\/\">Visual Studio.<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/plugins.jetbrains.com\/plugin\/12263-pvs-studio-for-idea-and-android-studio\/\">IDEA.<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0052\/\">Rider.<\/a><\/noindex> etc.<\/p>\n<h2>3. Utilisation quotidienne.<\/h2>\n<p>\n\u00c0 ce stade, il est temps de dire quelques mots sur les moyens d'acc\u00e9l\u00e9rer le travail de l'analiseur lors de l'utilisation quotidienne. Une analyse compl\u00e8te de tout le projet prend beaucoup de temps, mais \u00e0 quelle fr\u00e9quence modifions-nous le code dans l'ensemble du projet ? Il est peu probable qu'il existe un refactoring si vaste qu'il affecte imm\u00e9diatement tout le code. Le nombre de fichiers modifi\u00e9s \u00e0 la fois ne d\u00e9passe g\u00e9n\u00e9ralement pas une dizaine, c'est donc \u00e0 ceux-l\u00e0 qu'il vaut la peine de s'int\u00e9resser. Pour une telle situation, il existe un <noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0024\/\">mode d'analyse incr\u00e9mentale.<\/a><\/noindex>. Ne vous inqui\u00e9tez pas, ce n'est pas un autre outil. C'est un mode sp\u00e9cial qui permet d'analyser uniquement les fichiers modifi\u00e9s et leurs d\u00e9pendances, et cela se fait automatiquement apr\u00e8s la compilation, si vous travaillez dans un IDE avec le plugin install\u00e9. <\/p>\n<p>Si l'analyseur d\u00e9tecte des probl\u00e8mes dans le code r\u00e9cemment modifi\u00e9, il en informera automatiquement. Par exemple, PVS-Studio vous avertira par une notification :<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/20456a6652f0bd4f62d9aea5f1dda5cd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIl ne suffit pas de dire aux d\u00e9veloppeurs d'utiliser l'outil. Il faut leur expliquer ce que c'est et comment cela fonctionne. Voici des articles sur le d\u00e9marrage rapide avec PVS-Studio, mais de tels tutoriels sont disponibles pour tout outil que vous pr\u00e9f\u00e9rez :<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0007\/\">Comment ex\u00e9cuter PVS-Studio sous Windows (C, C++, C#)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0036\/\">Comment ex\u00e9cuter PVS-Studio sous Linux et macOS (C, C++)<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/m\/0044\/\">Comment ex\u00e9cuter PVS-Studio Java<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nCes articles fournissent toutes les informations n\u00e9cessaires pour une utilisation quotidienne et ne prennent pas beaucoup de temps. \ud83d\ude42<\/p>\n<p>D\u00e8s les premi\u00e8res \u00e9tapes de d\u00e9couverte de l'outil, nous avons supprim\u00e9 de nombreux avertissements lors de l'une des premi\u00e8res ex\u00e9cutions. Malheureusement, les analyseurs statiques ne sont pas parfaits, ils g\u00e9n\u00e8rent donc parfois des faux positifs. Les supprimer est g\u00e9n\u00e9ralement facile, par exemple, dans le plugin PVS-Studio pour Visual Studio, il suffit d'appuyer sur un bouton :<\/p>\n<p><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/ed5382f468d21b7e711caba73b439fda.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nCependant, vous pouvez \u00e9galement signaler ces derniers. Si le faux positif peut \u00eatre corrig\u00e9, vous pouvez remarquer dans les futures mises \u00e0 jour qu'il y a de moins en moins de faux positifs sp\u00e9cifiques \u00e0 votre base de code.<\/p>\n<h2>Apr\u00e8s int\u00e9gration<\/h2>\n<p>\nNous avons donc couvert toutes les \u00e9tapes de l'int\u00e9gration de l'analyse statique dans le processus de d\u00e9veloppement. Malgr\u00e9 l'importance de la configuration de tels outils dans le CI, l'endroit le plus crucial pour ex\u00e9cuter est l'ordinateur de d\u00e9veloppeur. Car l'analyseur statique n'est pas un juge qui vous dit, de loin, que le code n'est pas bon. Au contraire, c'est un assistant qui vous guide lorsque vous \u00eates fatigu\u00e9 et vous rappelle si vous avez oubli\u00e9 quelque chose.<\/p>\n<p>Il est peu probable que l'analyse statique simplifie significativement le d\u00e9veloppement sans une utilisation r\u00e9guli\u00e8re. En effet, son principal avantage pour les d\u00e9veloppeurs r\u00e9side non seulement dans la recherche des parties de code complexes et controvers\u00e9es, mais aussi dans leur d\u00e9tection pr\u00e9coce. Vous conviendrez qu'il n'est pas seulement d\u00e9sagr\u00e9able de d\u00e9couvrir un probl\u00e8me une fois que les modifications ont \u00e9t\u00e9 envoy\u00e9es en test, mais que cela prend \u00e9galement beaucoup de temps. L'analyse statique, lorsqu'elle est utilis\u00e9e r\u00e9guli\u00e8rement, examine chaque changement directement sur votre ordinateur et signale les zones suspectes pendant que vous travaillez sur le code.<\/p>\n<p>Et si vous ou vos coll\u00e8gues n'\u00eates toujours pas s\u00fbrs de l'opportunit\u00e9 d'impl\u00e9menter un analyseur, je vous propose de lire maintenant l'article \"<noindex><a rel=\"nofollow\" href=\"https:\/\/www.viva64.com\/ru\/b\/0687\/\">Raisons d'int\u00e9grer un analyseur de code statique PVS-Studio dans le processus de d\u00e9veloppement<\/a><\/noindex>\". Il aborde les pr\u00e9occupations typiques des d\u00e9veloppeurs selon lesquelles l'analyse statique prendra leur temps, et ainsi de suite.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\"><img decoding=\"async\" alt=\"Analyse statique\u00a0: de la d\u00e9couverte \u00e0 l&#039;int\u00e9gration\" src=\"\/wp-content\/uploads\/2020\/08\/6372d668354f708cb0e08df27bb39bdd.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p>Si vous souhaitez partager cet article avec un public anglophone, merci d'utiliser le lien vers la traduction : Maxim Zvyagintsev. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/company\/pvs-studio\/blog\/514128\/\">Analyse Statique : De la D\u00e9couverte \u00e0 l'Int\u00e9gration<\/a><\/noindex>.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/pvs-studio\/blog\/514124\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0438 \u043a\u0430\u043a \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u0448\u0435\u0442\u0435 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u043b\u0438\u0431\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u0442\u043e\u0433\u0434\u0430, \u0434\u0430\u0436\u0435 \u043d\u0435 \u0434\u043e\u0433\u0430\u0434\u044b\u0432\u0430\u044f\u0441\u044c \u043e\u0431 \u044d\u0442\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91065","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=\"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.\" \/>\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\/staticheskij-analiz-ot-znakomstva-do-integraczii\" \/>\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\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u2013 \u043e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii\" \/>\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-08-07T23:42:18+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-07T23:42:18+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\udd47Analyse Statique \u2013 De la D\u00e9couverte \u00e0 l'Int\u00e9gration | ProHoster","description":"Fatigu\u00e9 de l'\u00e9ternel code review ou du d\u00e9bogage, vous vous demandez parfois comment simplifier votre vie. En cherchant un peu, ou par pur hasard, vous pouvez tomber sur l'expression magique : \"Analyse Statique\".","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","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\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u2013 \u043e\u0442 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0434\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 | ProHoster","og:description":"\u0423\u0441\u0442\u0430\u0432 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043d\u0447\u0430\u0435\u043c\u043e\u0433\u043e code review \u0438\u043b\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u0430\u043c\u0438 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u043a\u0430\u043a \u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0435\u0431\u0435 \u0436\u0438\u0437\u043d\u044c. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430\u0432, \u043d\u0443 \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0432\u0448\u0438\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043e\u043b\u0448\u0435\u0431\u043d\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435: &quot;\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437&quot;.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/staticheskij-analiz-ot-znakomstva-do-integraczii","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-08-07T23:42:18+00:00","article:modified_time":"2020-08-07T23:42:18+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91065","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 12:35:24","updated":"2022-10-01 20:50: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\/91065","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=91065"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/91065\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/91066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=91065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=91065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=91065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}