{"id":136115,"date":"2021-04-13T09:08:02","date_gmt":"2021-04-13T08:08:02","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=136115"},"modified":"2021-04-13T09:17:04","modified_gmt":"2021-04-13T08:17:04","slug":"plugin-kotlin-2021-1-amelioration-des-performances-de-l-ide-et-meilleure-prise-en-charge-des-refactorisations","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/fr\/kotlin\/2021\/04\/plugin-kotlin-2021-1-amelioration-des-performances-de-l-ide-et-meilleure-prise-en-charge-des-refactorisations\/","title":{"rendered":"Plugin Kotlin 2021.1\u00a0: am\u00e9lioration des performances de l&#8217;IDE et meilleure prise en charge des refactorisations"},"content":{"rendered":"<style>p > code {font-weight: 400; background: #f6f6f6}<\/style>\n<p>La version 2021.1 d&#8217;IntelliJ IDEA est dot\u00e9e du plugin Kotlin am\u00e9lior\u00e9. Profitez d&#8217;une meilleure exp\u00e9rience de d\u00e9veloppement gr\u00e2ce \u00e0 une saisie semi-automatique et une la mise en \u00e9vidence du code plus rapides, \u00e0 une meilleure prise en charge de Change Signature par l&#8217;IDE, d&#8217;une meilleure exp\u00e9rience de d\u00e9bogage pour l&#8217;\u00e9valuation des propri\u00e9t\u00e9s, et plus encore.<\/p>\n<p>Voici ce que vous obtiendrez en installant le nouveau plugin\u00a0:<\/p>\n<ul>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#code-completion-and-highlighting\">Saisie semi-automatique et mise en \u00e9vidence du code plus rapides<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#custom-getters-in-variables-view\">\u00c9valuation des getters personnalis\u00e9s directement dans la vue Variables<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#improved-change-signature-refactoring\">Meilleure prise en charge de la refactorisation Change Signature par l&#8217;IDE<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#code-completion-for-type-parameters\">Saisie semi-automatique du code pour les arguments de type<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#class-diagrams-for-kotlin-code\">Diagrammes de classe pour votre code Kotlin<\/a><\/li>\n<li><a href=\"https:\/\/blog.jetbrains.com\/kotlin\/2021\/04\/kotlin-plugin-2021-1-released\/#other-ide-improvements\">Autres am\u00e9liorations de l&#8217;IDE<\/a><\/li>\n<\/ul>\n<h2>Mise \u00e0 jour automatique vers cette nouvelle version<\/h2>\n<p>IntelliJ IDEA vous donnera la possibilit\u00e9 de proc\u00e9der \u00e0 une mise \u00e0 jour automatique vers la nouvelle version d\u00e8s qu&#8217;elle sera disponible.<\/p>\n<p>Si vous n&#8217;utilisez pas encore IntelliJ IDEA, vous pouvez en <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/idea\/download\/\" target=\"_blank\" rel=\"noopener\">t\u00e9l\u00e9charger la derni\u00e8re version<\/a> qui est fournie avec le dernier plugin Kotlin.<\/p>\n<p><a name=\"code-completion-and-highlighting\"><\/a><\/p>\n<h2>B\u00e9n\u00e9ficier de la saisie semi-automatique et de la mise en \u00e9vidence rapides du code<\/h2>\n<p>Lorsque vous \u00e9crivez du code, il peut \u00eatre p\u00e9nible d&#8217;avoir \u00e0 attendre que l&#8217;IDE mette votre code en \u00e9vidence et vous aide gr\u00e2ce \u00e0 la saisie semi-automatique. C&#8217;est pourquoi nous avons comme objectifs de rendre la mise en \u00e9vidence et la saisie semi-automatique du code aussi fluides que possible.<\/p>\n<p>Le nouveau plugin Kotlin am\u00e9liore consid\u00e9rablement les performances de la mise en \u00e9vidence et de la saisie semi-automatique du code pour Kotlin.<\/p>\n<p>Selon nos tests, la vitesse de mise en \u00e9vidence a \u00e9t\u00e9 am\u00e9lior\u00e9e d&#8217;environ 25\u00a0% et la saisie semi-automatique du code est maintenant plus de 50\u00a0% plus rapide, se rapprochant ainsi du niveau de performance offert pour Java.<\/p>\n<div style=\"background-color: #f1f6fe; margin-bottom: 2px; padding: 5px; margin-right: 0%; text-align: left; min-height: px;\"><strong>Veuillez noter<\/strong> que ces chiffres sont seulement bas\u00e9s sur nos tests. Il se peut que les am\u00e9liorations observ\u00e9es dans vos projets actuels ne soient pas aussi importantes que ce que montrent nos tests, mais vous devriez tout de m\u00eame constater une nette am\u00e9lioration des performances.<\/div>\n<h3>Mise en \u00e9vidence du code Kotlin avec le nouveau plugin<\/h3>\n<p>Vous pouvez voir ici une comparaison de la vitesse de la mise en \u00e9vidence du code Kotlin entre le pr\u00e9c\u00e9dent plugin Kotlin, version 2020.3, et la nouvelle version 2021.1. Les r\u00e9sultats sont bas\u00e9s sur nos bancs d&#8217;essai, qui examinent la mise en \u00e9vidence du code dans des fichiers Kotlin complexes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/faster-code-highlighting.jpg\" alt=\"Mise en \u00e9vidence plus rapide du code Kotlin\" \/><\/p>\n<h3>Saisie semi-automatique du code Kotlin avec le nouveau plugin<\/h3>\n<p>Et voici une comparaison des performances de la saisie semi-automatique du code Kotlin entre la version 2020.3 et la version 2021.1. Les r\u00e9sultats sont bas\u00e9s sur nos bancs d&#8217;essai, qui examinent la mise en \u00e9vidence du code dans des fichiers Kotlin complexes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/faster-code-completion.jpg\" alt=\"Saisie semi-automatique plus rapide du code Kotlin\" \/><\/p>\n<p><a name=\"improved-change-signature\"><\/a><\/p>\n<h2>Meilleure prise en charge de la refactorisation Change Signature par l&#8217;IDE<\/h2>\n<p>Si vous avez utilis\u00e9 la <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/change-signature.html\" target=\"_blank\" rel=\"noopener\">refactorisation Change Signature<\/a> dans les versions pr\u00e9c\u00e9dentes du plugin Kotlin, vous avez peut-\u00eatre rencontr\u00e9 des probl\u00e8mes et des limitations, ainsi qu&#8217;un manque de visibilit\u00e9 sur ce qui ne fonctionnait pas dans ces cas-l\u00e0.<\/p>\n<p>Passer au nouveau plugin Kotlin vous permettra de b\u00e9n\u00e9ficier de plus de <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-685\" target=\"_blank\" rel=\"noopener\">40 correctifs de bugs et am\u00e9liorations pour la refactorisation Change Signature<\/a>.<\/p>\n<p>Voici quelques-unes des am\u00e9liorations les plus importantes\u00a0:<\/p>\n<ul>\n<li>D\u00e9tection d&#8217;un plus grand nombre de cas o\u00f9 le code r\u00e9sultant est susceptible d&#8217;\u00eatre cass\u00e9<\/li>\n<li>Corrections pour les refactorisations h\u00e9rit\u00e9es, y compris la <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-966\" target=\"_blank\" rel=\"noopener\">refactorisation interlangage<\/a><\/li>\n<li>Am\u00e9lioration de l&#8217;exp\u00e9rience utilisateur pour le traitement des propri\u00e9t\u00e9s<\/li>\n<li><a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-903\" target=\"_blank\" rel=\"noopener\">M\u00e9thode suppl\u00e9mentaire pour d\u00e9clarer la valeur par d\u00e9faut du param\u00e8tre<\/a><\/li>\n<li>Traitement correct de l&#8217;accent grave<\/li>\n<\/ul>\n<p><a name=\"custom-getters-in-variables-view\"><\/a><\/p>\n<h2>\u00c9valuer les getters personnalis\u00e9s directement dans la vue Variables<\/h2>\n<p>Nos recherches nous ont montr\u00e9 que l&#8217;exp\u00e9rience de d\u00e9bogage pour Kotlin n\u00e9cessitait des am\u00e9liorations significatives en vue de fournir une meilleure exp\u00e9rience aux d\u00e9veloppeurs et nous avons d\u00e9j\u00e0 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-44330\" target=\"_blank\" rel=\"noopener\">un certain nombre de projets<\/a> en cours pour y parvenir.<\/p>\n<p>Cette version apporte une petite mais importante am\u00e9lioration pour l&#8217;\u00e9valuation des propri\u00e9t\u00e9s dans la vue <strong>Variables<\/strong>.<\/p>\n<p>Auparavant, pendant une session de d\u00e9bogage, vous ne pouviez voir que les propri\u00e9t\u00e9s qui n&#8217;avaient pas de getter personnalis\u00e9 et celles qui avaient un <a href=\"https:\/\/kotlinlang.org\/docs\/properties.html#backing-fields\" target=\"_blank\" rel=\"noopener\">champ de stockage<\/a>. Les propri\u00e9t\u00e9s avec un getter personnalis\u00e9 n&#8217;apparaissent pas parce qu&#8217;elles sont repr\u00e9sent\u00e9es comme des m\u00e9thodes ordinaires sur la JVM. Dans la version 2021.1 du plugin Kotlin, vous pouvez voir toutes ces propri\u00e9t\u00e9s et les \u00e9valuer \u00e0 la demande en cliquant sur <code>get()<\/code> \u00e0 c\u00f4t\u00e9 du nom de la propri\u00e9t\u00e9.<\/p>\n<p>Par exemple, en d\u00e9boguant le code qui suit, vous pouvez ex\u00e9cuter la m\u00e9thode <code>get()<\/code> pour voir la valeur de <code>versionString<\/code>\u00a0:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nclass LanguageVersion(val major: Int, val minor: Int) {\n    val isStable: Boolean\n        get() = major &lt;= 1 &amp;&amp; minor &lt;= 4\n    val isExperimental: Boolean\n        get() = !isStable\n    val versionString: String\n        get() = &quot;$major.$minor&quot;\n    override fun toString() = versionString\n}\nfun main() {\n    val version = LanguageVersion(1, 4)\n}\n<\/pre>\n<p>Dans la fen\u00eatre <strong>Debug<\/strong>, vous pouvez voir les valeurs des propri\u00e9t\u00e9s\u00a0:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/debugging-variables-view.png\" alt=\"D\u00e9bogage dans la vue Variables\" \/><\/p>\n<p>N&#8217;h\u00e9sitez pas \u00e0 essayer cette fonctionnalit\u00e9 et \u00e0 nous faire part de vos retours dans <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KT-19752\" target=\"_blank\" rel=\"noopener\">ce ticket<\/a> ou en commentaire de cet article.<\/p>\n<p><a name=\"code-completion-for-type-parameters\"><\/a><\/p>\n<h2>Utiliser la saisie semi-automatique du code pour les arguments de type<\/h2>\n<p>Le nouveau plugin Kotlin peut compl\u00e9ter le code pour les arguments de type. Auparavant, vous deviez \u00e9crire ce code manuellement sans pouvoir b\u00e9n\u00e9ficier des fonctionnalit\u00e9s d&#8217;assistance de l&#8217;IDE.<\/p>\n<p>D\u00e9sormais, la saisie semi-automatique sugg\u00e8re des fonctions et des propri\u00e9t\u00e9s apr\u00e8s les fonctions g\u00e9n\u00e9riques et restitue les arguments de type lorsque c&#8217;est n\u00e9cessaire. Lorsque vous s\u00e9lectionnez une telle fonction dans la liste, l&#8217;IDE ajoute le bon argument de type au code pr\u00e9c\u00e9dent.<\/p>\n<p>Dans l&#8217;exemple suivant, l&#8217;IDE ajoute automatiquement le type <code>&lt;String&gt;()<\/code>\u00a0:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/code-completion-type-arguments.png\" alt=\"Saisie semi-automatique du code pour les arguments de type\"\/><\/p>\n<p>Apr\u00e8s avoir appliqu\u00e9 la suggestion de l&#8217;IDE, vous obtiendrez le code suivant\u00a0:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nfun typeArgumentsAtCodeCompletion() {\n    \/\/  Function definition from stdlib:\n    \/\/ public fun &lt;T&gt; emptyList(): List&lt;T&gt;\n    val listA: List&lt;String&gt; = emptyList() \/\/ T est d\u00e9duit du contexte (variable explicite)\n    val listB: List&lt;String&gt; =\n        emptyList&lt;String&gt;().reversed() \/\/ L'argument de type pour emptyList() est n\u00e9cessaire pour \u00e9valuer l'expression de type\n}\n<\/pre>\n<p><a name=\"class-diagrams-for-kotlin-code\"><\/a><\/p>\n<h2>Examiner la structure de votre code Kotlin \u00e0 l&#8217;aide de diagrammes de classes<\/h2>\n<p>Avec la nouvelle version du plugin, vous pouvez examiner la structure de votre code Kotlin via des diagrammes de classes UML. Pour construire un diagramme, s\u00e9lectionnez <strong>Diagrams | Show Diagram&#8230; | Kotlin Classes<\/strong> dans la vue <strong>Project<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/04\/kotlin-classes-uml-diagram.png\" alt=\"Diagrammes de classes UML pour le code Kotlin\" \/><\/p>\n<p><a name=\"other-ide-improvements\"><\/a><\/p>\n<h2>Autres am\u00e9liorations de l&#8217;IDE<\/h2>\n<p>Comme le plugin Kotlin et la plateforme IntelliJ ont \u00e9t\u00e9 d\u00e9plac\u00e9s vers la m\u00eame base de code et sont d\u00e9sormais livr\u00e9s simultan\u00e9ment, vous pourrez \u00e9galement am\u00e9liorer votre exp\u00e9rience avec Kotlin gr\u00e2ce aux fonctionnalit\u00e9s suivantes\u00a0:<\/p>\n<ul>\n<li>Utiliser le profileur de m\u00e9moire annonc\u00e9 lors de la <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/idea\/whatsnew\/#debugger\" target=\"_blank\" rel=\"noopener\">publication d&#8217;IntelliJ IDEA 2020.3<\/a> via l&#8217;ex\u00e9cution de Gradle.<\/li>\n<li>Recevoir des avertissements en cas <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-826\" target=\"_blank\" rel=\"noopener\">d&#8217;appels inappropri\u00e9s bloquant les threads dans les coroutines<\/a>.<\/li>\n<li>\u00c9viter les probl\u00e8mes d&#8217;injection de langage lors de <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-679\" target=\"_blank\" rel=\"noopener\">l&#8217;utilisation de guillemets triples<\/a> et de <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/KTIJ-855\" target=\"_blank\" rel=\"noopener\">la concat\u00e9nation de cha\u00eenes<\/a>.<\/li>\n<\/ul>\n<h2>Voir aussi<\/h2>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/whatsnew-plugin-20211.html\" target=\"_blank\" rel=\"noopener\">Nouveaut\u00e9s du plugin Kotlin 2021.1<\/a><\/li>\n<li>Nouveaut\u00e9s d&#8217;IntelliJ IDEA 2021.1 \u2013 <a href=\"https:\/\/www.jetbrains.com\/fr-fr\/idea\/whatsnew\/\" target=\"_blank\" rel=\"noopener\">docs<\/a> et <a href=\"https:\/\/youtu.be\/YBmR0J3-r3o?t=567\" target=\"_blank\" rel=\"noopener\">vid\u00e9o<\/a>.<\/li>\n<\/ul>\n<p>Auteur de l&#8217;article original en anglais : <a href=\"https:\/\/blog.jetbrains.com\/author\/ekaterina-volodko\/\" target=\"_blank\" rel=\"noopener noreferrer\">Ekaterina Volodko<\/a><\/p>\n","protected":false},"author":813,"featured_media":131721,"comment_status":"closed","ping_status":"closed","template":"","categories":[4113,1065,907],"tags":[21,33],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/136115"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/types\/kotlin"}],"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=136115"}],"version-history":[{"count":5,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/136115\/revisions"}],"predecessor-version":[{"id":139743,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/kotlin\/136115\/revisions\/139743"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media\/131721"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/media?parent=136115"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/categories?post=136115"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/tags?post=136115"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/fr\/wp-json\/wp\/v2\/cross-post-tag?post=136115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}