IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

JetBrains lance le programme d'accès anticipé (EAP) à Qodana 2022.3, la plateforme de contrôle de la qualité de code
Vient avec la prise en charge de .NET et Go et plus de 100 nouvelles inspections

Le , par Michael Guilloux

6PARTAGES

5  0 
JetBrains annonce l’ouverture du programme d’accès anticipé (EAP) à Qodana 2022.3. Cette version de la plateforme de contrôle de la qualité de code apporte la prise en charge de .NET et de Go. JetBrains a également ajouté 100 nouvelles inspections pour les langages qui étaient déjà pris en charge. Nous vous présentons dans la suite avec plus de détails les nouvelles fonctionnalités disponibles dans Qodana 2022.3.

Notons pour commencer que les tout nouveaux linters de JetBrains pour .NET et Go apportent toute l’intelligence de Rider et de GoLand pour vous permettre de détecter les anomalies dans le code et les bugs potentiels, d’éliminer le code mort, d’améliorer la structure globale du code et d’appliquer les meilleures pratiques à l’ensemble de vos projets .NET et Go.

Qodana pour .NET

Qodana prend en charge la quasi-totalité des inspections .NET fournies par Rider. La liste de ces inspections étant assez longue, nous vous invitons à consulter la documentation de Rider pour plus d’informations. En attendant, vous trouverez ci-dessous quelques exemples d’inspections .NET que Qodana peut exécuter.

Inconsistent lock ordering

L’un des principaux problèmes lors de l’utilisation de verrous pour sécuriser des threads est d’éviter les blocages, par exemple lorsque les threads se bloquent mutuellement et empêchent l’exécution de progresser. Avec cette nouvelle inspection, Qodana met en évidence les cycles susceptibles de créer des problèmes lors de l’exécution.


Access to modified captured variable

Qodana pour .NET détecte l’accès à la variable capturée par une méthode anonyme lorsque cette variable est modifiée de façon externe.


Avoid using ‘async’ lambda when delegate type returns ‘void’

Cette inspection détecte l’utilisation d’expressions lambda « async » : les exceptions non gérées par la lambda n’affecteront jamais le thread appelant et ne seront pas interceptées par la clause catch.


Type check and casts can be merged

L’opérateur de test de type is dans sa forme classique ( Expression is Type ), renvoie true uniquement lorsque le type d’exécution de Expression est compatible avec Type et si le résultat de Expression n’est pas null .

Lorsque vous utilisez is pour vérifier la compatibilité avant le cast, comme dans l’exemple ci-dessous, vous rencontrez au moins deux problèmes :

- Vous effectuez la vérification de type deux fois sans raison, ce qui peut nuire à la performance si cela se produit dans une boucle.
- Le fait que l’exécution du programme n’active pas l’instruction if si obj est null n’est pas immédiatement clair pour les personnes qui lisent ce code.

Qodana identifie ce type de problème et vous suggère de le corriger dans Rider.


Lambda expression/anonymous method should not have captures of the containing context

L’expression lambda/la méthode anonyme transférée à un paramètre annoté par l’attribut « [RequireStaticDelegate] » ne doit pas avoir de captures du contexte qu’elle contient (variables locales, fonctions locales, référence « this ») pour éviter les allocations de pile.


Qodana pour Go

Qodana 2022.3 est conçu pour prendre en charge toutes les inspections fournies par GoLand. Vous trouverez la liste complète dans la documentation de GoLand. Mais voici ci-dessous des exemples d’inspections Go que Qodana prend désormais en charge.

Placeholder argument ‘d.DeletedCount’ has the wrong type ‘int64’ (%s)

Cette inspection signale les utilisations incorrectes de fmt.Printf et fmt.Println et d’autres fonctions de formatage et d’impression similaires.

Dans leurs chaînes de format, les fonctions de formatage utilisent des verbes de formatage comme %s , %d et %v , entre autres.

Si les verbes de mise en forme ne sont pas utilisés correctement, le résultat de la fonction de mise en forme contient une erreur.


Unhandled error

Cette inspection signale les appels aux fonctions et méthodes qui ne gèrent pas le résultat d’appel du type error .

Une API de ces fonctions implique que leur exécution peut échouer et renvoyer une erreur. Les appels qui ne gèrent pas les résultats contenant des erreurs peuvent indiquer une mauvaise utilisation de l’API.


Unused dependency

Cette inspection signale les dépendances non utilisées dans votre projet. La bonne pratique consiste à rechercher les dépendances non utilisées de façon régulière car cela réduit la taille de la bibliothèque de votre projet et améliore la capacité de maintenance.


Nouvelles inspections

Outre l’ajout de nouveaux linters pour .NET et Go, Qodana 2022.3 apporte plus de 100 nouvelles inspections pour les linters existants. Examinons les exemples les plus représentatifs des inspections pour Java, Kotlin et Python.

Inspections Java et Kotlin

JetBrains a ajouté Qodana plus de 40 nouvelles inspections pour JVM Community et Qodana for JVM.

DataFlowIssue

Cette inspection signale les constructions de code qui enfreignent systématiquement les contrats de nullabilité, risquent de renvoyer des exceptions ou sont redondants, sur la base d’une analyse du flux de données.

EscapedSpace

Java 15 a introduit la séquence d’échappement de chaîne s pour rendre visible l’espace blanc à la fin des blocs de texte. Dans la plupart des autres contextes, notamment dans les expressions régulières, cette séquence d’échappement peut facilement être confondue avec la notation s d’une expression régulière indiquant un espace blanc. Dans les littéraux de chaînes Java, il faut utiliser \s à la place.

MismatchedJavadocCode

Cette inspection signale les cas dans lesquels le Javadoc d’une méthode contredit manifestement la signature de la méthode, comme un commentaire disant « returns true » alors que la méthode renvoie une chaîne.

Destructure

Cette inspection signale les déclarations en Kotlin qui peuvent être déstructurées.

UnresolvedRestParam

Désormais, Qodana peut détecter les déclarations de méthodes incohérentes dans les services REST (par exemple des paramètres @PathParam ne correspondant pas à un emplacement provenant de l’annotation @Get ) car ces déclarations lèveraient des exceptions lors de l’exécution.

ReactiveStreamsThrowInOperator

Cette nouvelle inspection identifie les déclarations throw dans le code de l’opérateur Reactor/RxJava au lieu de renvoyer les valeurs d’erreurs désignées, ce qui empêche le traitement ultérieur des erreurs. Par exemple, elle les ignore ou les remplace par une valeur de repli.

Cette version de Qodana apporte également toutes les nouvelles inspections pour Android d’IntelliJ IDEA 2022.3 et d’Android Studio – Electric Eel | 2022.1.1.

Inspections Python

JetBrains a également ajouté à Qodana for Python des inspections pour Google App Engine qui mettent en évidence les problèmes avant qu’ils ne provoquent des défaillances dans les environnements de production. Par exemple, vous pouvez désormais repérer :

- les requêtes GQL qui ne se conforment pas aux restrictions pour les requêtes autorisées sur le serveur de Google App Engine ;
- les requêtes GQL sans index ;
- les utilisations de fonctionnalités Python qui sont limitées par la sandbox de Google App Engine ;
- les cas dans lesquels threadsafe n’est pas activé avec le gestionnaire CGI.

Pour exclure certaines inspections de votre analyse, vous pouvez personnaliser votre profil d’inspection par défaut ou en créer un nouveau. Vous avez aussi la possibilité de mettre en œuvre les inspections requises par vos directives de codage.

Voici présentées les nouvelles fonctionnalités de Qodana 2022.3 que vous pouvez essayer dès maintenant. Veuillez toutefois noter que les images Docker sont plus stables dans Qodana 2022.2 pour le moment.

Démarrez avec Qodana

Une erreur dans cette actualité ? Signalez-le nous !