{"id":353123,"date":"2023-05-15T08:29:21","date_gmt":"2023-05-15T07:29:21","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=qodana&#038;p=353123"},"modified":"2023-05-15T08:45:21","modified_gmt":"2023-05-15T07:45:21","slug":"qodana-2023-1","status":"publish","type":"qodana","link":"https:\/\/blog.jetbrains.com\/fr\/qodana\/2023\/05\/qodana-2023-1\/","title":{"rendered":"Qodana\u00a02023.1\u00a0: Configuration de profils flexible, Prise en charge de la migration vers le compilateurKotlin\/JS IR, V\u00e9rification de la compatibilit\u00e9 des licences pour Go, int\u00e9gration des plugins, et plus de 30 nouvelles Inspections"},"content":{"rendered":"<p><em>Actuellement en version Preview, Qodana est la plateforme de contr\u00f4le de la qualit\u00e9 du code intelligente de JetBrains. Ce puissant moteur d&#8217;analyse statique int\u00e8gre les inspections des IDE de JetBrains \u00e0 n&#8217;importe quel pipeline de CI et ex\u00e9cute les v\u00e9rifications fortement consommatrices de ressources sur le serveur de CI, ce qui vous fait gagner du temps et \u00e9conomiser des ressources informatiques. Avec Qodana, vous b\u00e9n\u00e9ficiez de la prise en charge de plus de 60 technologies et pouvez analyser un nombre illimit\u00e9 de lignes de code.<\/em><\/p>\n<p>La derni\u00e8re mise \u00e0 jour de Qodana introduit des am\u00e9liorations majeures pour vous aider \u00e0 assurer la qualit\u00e9 de votre code. Cette version 2023.1 am\u00e9liore consid\u00e9rablement la flexibilit\u00e9 de l&#8217;\u00e9tape d&#8217;analyse statique de votre pipeline de CI. Elle permet par ailleurs la configuration intelligente des v\u00e9rifications pour l&#8217;analyse de vos projets et introduit un moyen simple d&#8217;ajouter des plugins au moteur d&#8217;analyse statique Qodana.\u00a0<\/p>\n<p><!--more--><\/p>\n<p>Poursuivez votre lecture pour en d\u00e9couvrir les principales nouveaut\u00e9s ou consultez directement les informations sur les am\u00e9liorations sp\u00e9cifiques au linter.\u00a0<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344478\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-34.png\" alt=\"\" width=\"1600\" height=\"750\" \/><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Essayer Qodana gratuitement\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/qodana\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Essayer Qodana gratuitement<\/a><\/p>\n<h2 class=\"wp-block-heading\">Principales nouveaut\u00e9s\u00a0<\/h2>\n<h3 class=\"wp-block-heading\">Configuration de profils flexible gr\u00e2ce au nouveau format YAML<\/h3>\n<p>Les profils d&#8217;inspection ont un r\u00f4le essentiel dans la configuration de Qodana. Ils d\u00e9finissent un ensemble d&#8217;inspections que Qodana applique ensuite \u00e0 votre code lors de son analyse.<\/p>\n<p>La version\u00a02023.1 de Qodana fournit des capacit\u00e9s de configuration de profil flexibles dans un format YAML lisible par l&#8217;homme, afin de faciliter la personnalisation de votre profil d&#8217;inspection et son ajustement au fur et \u00e0 mesure de l&#8217;avancement de votre projet. Voici les possibilit\u00e9s dont vous disposer pour affiner votre analyse\u00a0:<\/p>\n<ul>\n<li>[NOUVEAU] <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/custom-profiles.html#groups\" target=\"_blank\" rel=\"noopener\">Regrouper des inspections<\/a> et g\u00e9rer ces groupes.\u00a0<\/li>\n<li>[NOUVEAU] Inclure les profils existants et en configurer de nouveaux.\u00a0<\/li>\n<li>Activer et d\u00e9sactiver les inspections.<\/li>\n<li>Configurer les param\u00e8tres des inspections.\u00a0<\/li>\n<li>Configurer la port\u00e9e des inspections.\u00a0<\/li>\n<\/ul>\n<p>Vous pouvez par exemple exclure l&#8217;inspection <code>PhpDeprecationInspection<\/code> du linter Qodana for PHP et utiliser la cat\u00e9gorie d&#8217;inspection PHP\/General.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">name: \"PHP\/General without PhpDeprecationInspection\"\ninspections:\n  - group: \"category:PHP\/General\"\n    enabled: true # Enable the 'PHP\/General' category\n  - inspection: PhpDeprecationInspection\n    enabled: false # Disable the PhpDeprecationInspection inspection<\/pre>\n<p>Consultez la <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/custom-profiles.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a> pour en savoir plus sur les profils personnalis\u00e9s.\u00a0<\/p>\n<h3 class=\"wp-block-heading\">Refactorisation majeure des profils par d\u00e9faut<\/h3>\n<p>Qodana propose deux types de profils par d\u00e9faut\u00a0: <em>qodana.starter<\/em>, id\u00e9al pour l&#8217;analyse initiale du projet, n&#8217;est utilis\u00e9 que pour les v\u00e9rifications vitales, et <em>qodana.recommended<\/em> permet d&#8217;effectuer une s\u00e9rie d&#8217;inspections pr\u00e9s\u00e9lectionn\u00e9es largement adapt\u00e9es \u00e0 la plupart des projets.<\/p>\n<p>Nous avons r\u00e9\u00e9crit les deux profils pour les aligner sur le profil <em>par d\u00e9faut <\/em>fourni dans nos IDE. Cela donne une meilleure vue d&#8217;ensemble des inspections fournies par les profils et vous assure que les inspections effectu\u00e9es par Qodana et votre IDE sont en grande partie les m\u00eames, ce qui favorise une approche plus coh\u00e9rente de la qualit\u00e9 du code.\u00a0<\/p>\n<p>Le profil <em>qodana.recommended<\/em> actualis\u00e9 est disponible sur <a href=\"https:\/\/github.com\/JetBrains\/qodana-profiles\/blob\/master\/.idea\/inspectionProfiles\/qodana.recommended.yaml\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>. Ce profil correspond au profil <em>par d\u00e9faut<\/em> de l&#8217;IDE, \u00e0 quelques exceptions pr\u00e8s\u00a0:<\/p>\n<ul>\n<li>Pour une analyse plus l\u00e9g\u00e8re, toutes les inspections <em>globales<\/em> sont d\u00e9sactiv\u00e9es, car elles peuvent prendre beaucoup de temps.\u00a0\u00a0<\/li>\n<li>Certains r\u00e9pertoires de projet, comme les r\u00e9pertoires de build et les sources de test, sont exclus de l&#8217;analyse par d\u00e9faut.<\/li>\n<\/ul>\n<p>Le profil <em>qodana.starter <\/em>actualis\u00e9 est aussi disponible sur <a href=\"https:\/\/github.com\/JetBrains\/qodana-profiles\/blob\/master\/.idea\/inspectionProfiles\/qodana.starter.yaml\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>. Ce profil est d\u00e9riv\u00e9 du profil <em>qodana.recommended<\/em> et n&#8217;effectue que les v\u00e9rifications essentielles. Voici les principales modifications que nous y avons apport\u00e9es\u00a0:<\/p>\n<ul>\n<li>Les inspections avec la s\u00e9mantique <em>codestyle<\/em> and <em>code conventions<\/em> sont d\u00e9sactiv\u00e9es.\u00a0<\/li>\n<li>Les inspections sont d\u00e9sactiv\u00e9es pour les parties non ex\u00e9cutables de la base de code (par exemple les commentaires Javadocs).<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\">Possibilit\u00e9 d&#8217;ajouter facilement des plugins \u00e0 Qodana<\/h3>\n<p>Si vous souhaitez \u00e9tendre les capacit\u00e9s de Qodana en <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/qodana-yaml.html#Manage+plugins\" target=\"_blank\" rel=\"noopener\">utilisant des plugins d&#8217;inspection de JetBrains Marketplace<\/a>, il vous suffit d&#8217;ajouter leurs identifiants \u00e0 votre fichier <code>qodana.yaml<\/code>.\u00a0<\/p>\n<p>Gr\u00e2ce aux r\u00e9centes mises \u00e0 jour de la Marketplace, vous pouvez d\u00e9sormais copier l&#8217;identifiant d&#8217;un plugin directement \u00e0 partir de sa page.\u00a0<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344489\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-35.png\" alt=\"\" width=\"1600\" height=\"748\" \/><\/figure>\n<p>Il y a deux moyens d&#8217;installer les logiciels tiers requis pour vos plugins\u00a0:<\/p>\n<ul>\n<li>Utiliser l&#8217;option <code>bootstrap<\/code>.<\/li>\n<li>D\u00e9velopper un <code>Dockerfile<\/code> personnalis\u00e9 qui commence par <code>FROM jetbrains\/qodana\u2026<\/code> Vous pouvez utiliser les exemples de <code>Dockerfile<\/code> Qodana disponibles sur <a href=\"https:\/\/github.com\/jetbrains\/qodana-docker\" target=\"_blank\" rel=\"noopener\">GitHub<\/a>.<\/li>\n<\/ul>\n<p>Voici une quelques-uns des plugins les plus populaires susceptibles de vous int\u00e9resser\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/16136-grazie-professional\" target=\"_blank\" rel=\"noopener\">Grazie Professional<\/a> offre une assistance avanc\u00e9e pour l&#8217;\u00e9criture en langage naturel, avec la correction de l&#8217;orthographe et de la grammaire, la saisie semi-automatique en langage naturel, et d&#8217;autres outils pour la r\u00e9daction et l&#8217;\u00e9dition de textes.\u00a0<\/li>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/1065-checkstyle-idea\" target=\"_blank\" rel=\"noopener\">CheckStyle<\/a> permet de v\u00e9rifier les fichiers Java en temps r\u00e9el ou \u00e0 la demande depuis IntelliJ IDEA.<\/li>\n<li><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/7448-zero-width-characters-locator\" target=\"_blank\" rel=\"noopener\">Zero Width Characters Locator<\/a> ajoute une inspection qui permt d&#8217;\u00e9viter certains bugs difficiles \u00e0 trouver en lien avec les caract\u00e8res d&#8217;espacement invisibles dans le code source et les ressources.\u00a0<\/li>\n<\/ul>\n<p>Vous pouvez trouver d&#8217;autres plugins en utilisant <a href=\"https:\/\/plugins.jetbrains.com\/search?orderBy=downloads&amp;tags=Inspection\" target=\"_blank\" rel=\"noopener\">la fonction de recherche<\/a> sur la Marketplace JetBrains.\u00a0<\/p>\n<p>Veuillez noter que Qodana ne prend pas en charge les plugins payants et qu&#8217;il est possible que certains plugins ne soient pas compatibles avec la version actuelle. Nous travaillons \u00e0 l&#8217;introduction de v\u00e9rifications de compatibilit\u00e9 appropri\u00e9es pour les plugins Qodana sur la Marketplace.<\/p>\n<h2 class=\"wp-block-heading\">Mises \u00e0 jour sp\u00e9cifiques au linter<\/h2>\n<h3 class=\"wp-block-heading\">Nouvelles inspections JVM dans Qodana\u00a0<\/h3>\n<h4 class=\"wp-block-heading\"><strong>Inspections pour le compilateur Kotlin \/ JS IR<\/strong><\/h4>\n<p>L&#8217;\u00e9quipe Kotlin a inaugur\u00e9 <a href=\"https:\/\/kotlinlang.org\/docs\/js-ir-compiler.html\" target=\"_blank\" rel=\"noopener\">un nouveau compilateur IR<\/a> qui prend en charge la migration de code source Kotlin vers JavaScript. Pour faciliter le processus de migration et d\u00e9tecter les erreurs potentielles, Qodana prend d\u00e9sormais en charge les inspections suivantes\u00a0:<\/p>\n<p><em>NonExternalClassifierExtendingStateOrProps<\/em><\/p>\n<p>L&#8217;utilisation d&#8217;interfaces et de classes Kotlin (y compris les classes de donn\u00e9es) d\u00e9riv\u00e9es de classes JS pures, telles que <code>State<\/code> et <code>Props<\/code> de React, peut entra\u00eener des <code>ClassCastExceptions<\/code>. Ces exceptions sont dues au fait que le compilateur essaye de traiter les instances de ces classes comme s&#8217;il s&#8217;agissait d&#8217;objets Kotlin, alors qu&#8217;elles proviennent de JS.<\/p>\n<p>La solution est de convertir toutes les classes et interfaces d\u00e9riv\u00e9es de classes JS pures en interfaces externes. Qodana signalera les utilisations d&#8217;extensions de classificateurs non externes de <code>State<\/code> ou <code>Props<\/code>.\u00a0<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344580\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-40.png\" alt=\"\" width=\"1564\" height=\"390\" \/><\/figure>\n<p><em>NonVarPropertyInExternalInterface<\/em><\/p>\n<p>Les interfaces externes dans le code Kotlin \/ JS ne peuvent pas avoir de propri\u00e9t\u00e9s en lecture seule (<code>val<\/code>) car leurs valeurs ne peuvent \u00eatre attribu\u00e9es qu&#8217;apr\u00e8s la cr\u00e9ation des objets avec <code>js()<\/code> ou <code>jso()<\/code>. La solution consiste \u00e0 convertir toutes les propri\u00e9t\u00e9s des interfaces externes en <code>var<\/code>.<\/p>\n<p>Qodana mettra en \u00e9vidence toutes les propri\u00e9t\u00e9s autres que <code>var<\/code> afin que vous puissiez les convertir.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344500\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-36.png\" alt=\"\" width=\"1566\" height=\"382\" \/><\/figure>\n<h4 class=\"wp-block-heading\"><strong>SpringTransactionalMethodCallsInspection<\/strong><\/h4>\n<p>Le framework Spring vous permet de g\u00e9rer les transactions d&#8217;une application un utilisant les annotations de code. Seuls les appels externes d&#8217;une m\u00e9thode marqu\u00e9e par <code>`@Transaction` <\/code>s&#8217;ex\u00e9cutent sous une transaction. Les auto-invocations ne d\u00e9marrent pas une nouvelle transaction. Avec cette nouvelle inspection, Qodana met en \u00e9vidence ces cas qui peuvent g\u00e9n\u00e9rer des erreurs dans la gestion des transactions.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344511\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-37.png\" alt=\"\" width=\"1564\" height=\"446\" \/><\/figure>\n<h4 class=\"wp-block-heading\"><strong>JUnitMixedFramework<\/strong><\/h4>\n<p>L&#8217;utilisation de plusieurs versions de JUnit dans un projet peut entra\u00eener des erreurs si les d\u00e9veloppeurs m\u00e9langent accidentellement plusieurs versions dans un m\u00eame sc\u00e9nario de test. Voici un exemple avec le code suivant\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344522\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-38.png\" alt=\"\" width=\"1600\" height=\"357\" \/><\/figure>\n<p>Le test est ex\u00e9cut\u00e9 avec JUnit4, donc l&#8217;annotation <code>BeforeEach<\/code> de JUnit5 ne sera pas trait\u00e9e, et le test \u00e9chouera avec une NullPointerException.\u00a0<\/p>\n<p>Par d\u00e9faut, Qodana ne v\u00e9rifie pas les sources de tests. Pour inclure cette inspection, il faut ajouter la configuration suivante \u00e0 <code>qodana.yaml<\/code>\u00a0:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">include:\n  - name: JUnitMixedFramework\n    paths:\n    - &lt;path-to-tests-directory&gt;<\/pre>\n<h4 class=\"wp-block-heading\"><strong>MathRoundingWithIntArgument<\/strong><\/h4>\n<p>Cette inspection signale les appels aux m\u00e9thodes <code>round()<\/code>, <code>ceil()<\/code>, <code>floor()<\/code> et <code>rint()<\/code> pour <code>Math<\/code> et <code>StrictMath<\/code>. L&#8217;appel de ces m\u00e9thodes sur un entier est redondant et indique qu&#8217;une erreur s&#8217;est produite commise, par exemple la division accidentelle d&#8217;un entier.<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344533\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-39.png\" alt=\"\" width=\"1568\" height=\"384\" \/><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Essayer Qodana pour la JVM\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-jvm.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Essayer Qodana pour la JVM<\/a><\/p>\n<h3 class=\"wp-block-heading\">Audit de licences tierces pour Go<\/h3>\n<p>Si vous utilisez des composants open source, externalisez le d\u00e9veloppement ou r\u00e9utilisez du code provenant de services tels que GitHub, vous devez vous assurer d&#8217;utiliser les licences appropri\u00e9es. Il peut arriver d&#8217;importer une biblioth\u00e8que avec une licence restrictive dans la base de code d&#8217;un logiciel ou d&#8217;oublier de mettre \u00e0 jour une licence expir\u00e9e. Dans un tel cas, l&#8217;organisation s&#8217;expose \u00e0 des risques juridiques et sa r\u00e9putation peut s&#8217;en trouver affect\u00e9e.\u00a0<\/p>\n<p>Pour r\u00e9duire ces risques, nous avons <a href=\"https:\/\/blog.jetbrains.com\/qodana\/2022\/05\/keep-your-dependency-licenses-in-check\/\">introduit l&#8217;ann\u00e9e derni\u00e8re une fonctionnalit\u00e9 d&#8217;<em>audit de licences<\/em><\/a> pour Java, Kotlin, PHP et JavaScript, et cette version ajoute la prise en charge de Go. Qodana r\u00e9pertorie les licences des d\u00e9pendances dans un r\u00e9f\u00e9rentiel analys\u00e9 et vous avertit en cas de probl\u00e8me concernant leur compatibilit\u00e9 avec les licences du projet, comme dans l&#8217;exemple ci-dessous\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344746\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-42.png\" alt=\"\" width=\"1524\" height=\"382\" \/><\/figure>\n<p>Voici \u00e0 quoi ressemble la liste des licences des d\u00e9pendances\u00a0:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-344735\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/04\/image-41.png\" alt=\"\" width=\"1600\" height=\"1113\" \/><\/figure>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Essayer Qodana pour Go\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-go.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Essayer Qodana pour Go<\/a><\/p>\n<h3 class=\"wp-block-heading\">Mises \u00e0 jour pour .NET<\/h3>\n<h4 class=\"wp-block-heading\"><strong>Le profil d&#8217;inspection respecte d\u00e9sormais les param\u00e8tres du r\u00e9f\u00e9rentiel<\/strong><\/h4>\n<p>Auparavant, les param\u00e8tres du niveau de gravit\u00e9 des inspections dans le profil d&#8217;inspection pour le linter .NET \u00e9taient bas\u00e9es sur les valeurs par d\u00e9faut provenant de ReSharper. Cette approche entra\u00eenait la duplication de param\u00e8tres lorsqu&#8217;un projet utilisait d\u00e9j\u00e0 des couches de configuration de solution et de projet de ReSharper et de Rider ainsi que des fichiers <code>.editorconfig<\/code> stock\u00e9s dans le r\u00e9f\u00e9rentiel. Si on apportait des modifications \u00e0 l&#8217;une de ces couches, il fallait les r\u00e9percuter dans le profil YAML de Qodana.\u00a0<\/p>\n<p>D\u00e9sormais, le profil d&#8217;inspection h\u00e9rite automatiquement des param\u00e8tres de ReSharper et du fichier <code>.editorconfig<\/code> s&#8217;ils sont fournis dans le r\u00e9f\u00e9rentiel. Plus besoin de travail manuel\u00a0!\u00a0<\/p>\n<h4 class=\"wp-block-heading\"><strong>La section des param\u00e8tres de configuration YAML de Qodana a \u00e9t\u00e9 renomm\u00e9e<\/strong><\/h4>\n<p>Le fichier de configuration <code>qodana.yaml<\/code> contenait auparavant une section <em>dot-net<\/em> dans laquelle on pouvait sp\u00e9cifier les solutions ou les projets \u00e0 ouvrir, ainsi que les options de configuration et de plateforme. Cette section a \u00e9t\u00e9 renomm\u00e9e <em>dotnet<\/em> et l&#8217;appellation <em>dot-net<\/em> sera supprim\u00e9 dans la version\u00a02023.2 de Qodana.<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"Essayer Qodana pour .NET\" href=\"https:\/\/www.jetbrains.com\/help\/qodana\/qodana-dotnet.html\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>Essayer Qodana pour .NET<\/a><\/p>\n<h2 class=\"wp-block-heading\">Comment passer \u00e0 Qodana\u00a02023.1<\/h2>\n<p>Si vous ex\u00e9cutez Qodana avec la balise Docker <code>latest<\/code>, vous n&#8217;avez aucun changement \u00e0 faire. Si ce n&#8217;est pas le cas, vous devez effecter la mise \u00e0 jour vers la version\u00a02023.1 dans le workflow de CI pour lequel vous utilisez Qodana. Pour en savoir plus sur les int\u00e9grations de CI existantes, consultez la <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/ci.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a>.\u00a0\u00a0\u00a0<\/p>\n<p>Les inspections ne sont pas toutes activ\u00e9es automatiquement. Pour exclure ou inclure certaines inspections de votre analyse, vous pouvez personnaliser votre profil d&#8217;inspection.\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>Voil\u00e0 pour les principales nouveaut\u00e9s de Qodana 2023.1\u00a0! Pour plus de d\u00e9tails, consultez les <a href=\"https:\/\/www.jetbrains.com\/help\/qodana\/2023.1\/new-in-2023-1.html\" target=\"_blank\" rel=\"noopener\">notes de publication<\/a>. Nous esp\u00e9rons que vous appr\u00e9cierez cette nouvelle version. Si vous avez des suggestions pour de futurs sujets d&#8217;articles ou souhaitez en savoir plus sur la fa\u00e7on dont Qodana peut vous aider, laissez un commentaire ci-dessous, taguez-nous sur <a href=\"https:\/\/twitter.com\/Qodana\" target=\"_blank\" rel=\"noopener\">Twitter<\/a> ou \u00e9crivez-nous \u00e0 <a href=\"mailto:qodana-support@jetbrains.com\">qodana-support@jetbrains.com<\/a>.<\/p>\n<p>Bon d\u00e9veloppement et veillez \u00e0 maintenir votre code propre\u00a0!<\/p>\n<p>L&#8217;\u00c9quipe Qodana<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" title=\"\u00c9crivez du code dont vous pouvez \u00eatre fier\" href=\"https:\/\/www.jetbrains.com\/fr-fr\/qodana\/\" target=\"_blank\" rel=\"noopener noreferrer\"><i class=\"download-icon\"><\/i>\u00c9crivez du code dont vous pouvez \u00eatre fier<\/a><\/p>\n\n\n<p><em>Article original en anglais de <\/em>:<\/p>\n\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=200&#038;r=g\" width=\"200\" height=\"200\" alt=\"\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":813,"featured_media":344563,"comment_status":"closed","ping_status":"closed","template":"","categories":[4089,947,286,89,907],"tags":[158,600,4197,5701,40,155,21,76,477,1978],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/qodana\/353123"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/qodana"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/qodana"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/users\/813"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/comments?post=353123"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/qodana\/353123\/revisions"}],"predecessor-version":[{"id":354334,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/qodana\/353123\/revisions\/354334"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/344563"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=353123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=353123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=353123"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=353123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}