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 !

Qodana : la version 2024.1 de la plateforme d'analyse de code statique de JetBrains disponible
Avec la possibilité de créer des inspections de code personnalisées dans IntelliJ IDEA

Le , par Michael Guilloux

47PARTAGES

6  1 
JetBrains Qodana a été le sujet de discussion dans le domaine de la qualité du code depuis sa sortie commerciale officielle en juillet 2023. Non seulement il s'agit de la plateforme d'analyse de code statique officielle de JetBrains pour les équipes et donc hautement compatible avec les EDI JetBrains et les outils d'équipe, mais Qodana comprend également une gamme d'inspections uniques, accompagnées d'un excellent support client tout au long de votre expérience.

JetBrains a développé ce puissant moteur d'analyse statique pour permettre aux équipes de développement logiciels d'automatiser les revues de code, de construire des murs de qualité et de faire respecter les directives de qualité du code à l'échelle de l'entreprise, le tout au sein de leur écosystème JetBrains. La plateforme peut être intégrée à n'importe quel pipeline CI/CD et peut analyser du code écrit dans plus de 60 langages, dont Java, JavaScript, TypeScript, PHP, Kotlin, Python, Go et C#.

L'adoption croissante de Qodana marque le moment parfait pour JetBrains pour dévoiler de nouvelles fonctionnalités et mises à jour, aidant les équipes à maintenir la qualité logicielle dans une industrie qui en a plus que jamais besoin.

Que vous cherchiez à créer des inspections personnalisées pour votre équipe, à auditer les licences par défaut pour devenir ou rester conforme, ou simplement à naviguer plus facilement dans les résultats de l'analyse de code, Qodana vous offre ces capacités, et plus encore, dans la version 2024.1.

FlexInspect - une nouvelle façon d'écrire des inspections personnalisées

Chaque équipe a des besoins uniques en matière de qualité du code. À l'heure actuelle, aucun outil de qualité du code ne couvre l'ensemble du spectre des règles par défaut, laissant potentiellement des lacunes pour les équipes ayant des besoins spécifiques.

Avec FlexInspect de Qodana, vous pouvez désormais créer des inspections de code personnalisées pour n'importe quelle règle que vous souhaitez appliquer dans votre code ou votre référentiel. Ensuite, vous pouvez exécuter ces inspections sur votre projet dans IntelliJ IDEA ou en utilisant Qodana dans votre pipeline CI/CD.


Ainsi, vous pouvez identifier les problèmes spécifiques à votre base de code et à votre équipe, ce qui vous fait gagner du temps et des efforts.

Pour écrire une inspection personnalisée en utilisant l'API Kotlin d'IntelliJ dans IntelliJ IDEA, suivez ces étapes :

  • Accédez à l'AST (arbre de syntaxe abstraite) du code source.
  • Déboguez le fonctionnement d'une nouvelle inspection sur le code en temps réel.
  • Observez vos nouvelles inspections personnalisées en action, y compris la mise en surbrillance des extraits de code qui ne respectent pas le comportement attendu.

Grâce à cette fonctionnalité, vous avez accès à PSI - l'API utilisée par toutes les inspections IntelliJ et Qodana, et vous pouvez implémenter toutes les inspections personnalisées supplémentaires dont vous pourriez avoir besoin.

Voici comment vous pouvez accéder à l'AST de votre code avec le visualiseur PSI d'IntelliJ IDEA :


FlexInspect vous permet d'analyser du code dans une variété de langages, notamment Java, Kotlin, JavaScript, TypeScript, PHP, Go, Python, Ruby, SQL, XML, CSS, YAML, JSON, shell et Dockerfile. JetBrains travaille sur l'extension de cette liste, alors restez à l'écoute !

Veuillez noter que la mise en œuvre d'inspections personnalisées nécessite que vous écriviez du code en Kotlin, ce qui signifie que vous devrez utiliser IntelliJ IDEA Ultimate.

De plus, comme il s'agit de la première version de FlexInspect, l'équipe de support de JetBrains est prête à vous aider si vous rencontrez des problèmes.

Analyse de différences ajoutée à Qodana pour .NET

Maintenant, vous pouvez utiliser le linter QDnet pour n'analyser que les merge et les pull requests lorsque vous le souhaitez, plutôt que de scanner l'ensemble de votre base de code.

Utilisez ce mode pour exécuter une analyse incrémentielle ou une analyse de différences sur un change-set, c'est-à-dire sur une merge ou une pull request. Pour les utilisateurs de qodana-github-action, ce changement sera pris en charge automatiquement.

Comment l'utiliser :

  • Si vous venez de terminer votre commit et que vous voulez analyser les modifications :
    qodana scan --diff-start=$GIT_START_HASH

  • Si vous voulez analyser un ensemble de modifications entre deux commits :
    qodana scan --diff-start=$GIT_HASH_START --diff-end=$GIT_HASH_END

  • Si vous utilisez l'action GitHub Qodana pour vos exécutions CI, cela va fonctionner automatiquement.

Veuillez noter que cette fonctionnalité est uniquement prise en charge par le linter payant Qodana for .NET, mais pas par le linter Qodana for .NET Community.

Audit de licence activé par défaut

La conformité peut être un cauchemar sans les bons outils, c'est pourquoi la fonctionnalité d'audit de licence de JetBrains est si populaire auprès des utilisateurs. Maintenant, la fonctionnalité d'audit de licence est activée par défaut (si vous avez la licence Ultimate Plus, la seule licence qui prend en charge cette fonctionnalité en général).

Toute information que Qodana trouve concernant les licences des dépendances de votre projet sera automatiquement affichée dans l'onglet Audit de licence de votre projet dans Qodana Cloud, vous n'avez donc pas besoin de configurer votre analyse pour l'exécuter.

JetBrains a également rendu possible pour les utilisateurs existants de l'audit de licence de voir les problèmes d'audit dans l'onglet d'interface utilisateur de Qodana Cloud, plutôt que dans la liste générale des problèmes. Mais si vous et votre équipe préférez continuer à voir les problèmes de licence dans la liste générale des problèmes, veuillez mettre à jour votre configuration en conséquence.


Prise en charge de la qualité du code GitLab et de l'analyse du code BitBucket (décoration de pull requests)

À partir de la version 2024.1, les linters Qodana prennent en charge la décoration des pull requests pour BitBucket Pipelines et GitLab CI. Auparavant, cette fonctionnalité était uniquement disponible pour GitHub Actions.

Désormais, Qodana est capable d'améliorer les revues de code avec des informations automatisées sur la qualité du code directement dans l'interface des pull ou merge requests pour GitHub Actions, GitLab CI et BitBucket Pipelines.

Grâce à cette intégration, vous pouvez accéder aux lignes de code spécifiques où des problèmes ont été détectés, ainsi qu'aux descriptions des problèmes et aux solutions ou recommandations possibles - directement depuis votre pull ou merge request.

Comment activer la fonctionnalité :

  • BitBucket Code Insights : aucune configuration supplémentaire n'est nécessaire - il suffit de mettre à jour votre linter vers la version 2024.1.
  • GitLab Code Quality : une configuration supplémentaire est nécessaire (spécifiez l'emplacement du fichier de rapport).

Script :

Code : Sélectionner tout
1
2
3
 - qodana --results-dir=$CI_PROJECT_DIR/.qodana/results
            --cache-dir=$CI_PROJECT_DIR/.qodana/cache

Artefacts :

  • Rapports : codequality: .qodana/results/gl-code-quality-report.json


Choix du linter par défaut lorsque non défini via qodana.yaml

JetBrains introduit un changement dans le choix du linter par défaut pour les projets JVM et Python. Pour fournir aux utilisateurs les capacités d'analyse les plus avancées et riches en fonctionnalités, Qodana utilisera désormais par défaut les versions Ultimate des linters de JetBrains - QDJVM pour les projets JVM et QDPY pour les projets Python - plutôt que les versions Community (QDJVMC et QDPYC, respectivement).

Ce changement signifie que, si votre configuration qodana.yaml ne spécifie pas une version de linter particulière et que le token Qodana Cloud n'est pas fourni, la version Ultimate sera utilisée automatiquement, vous permettant de profiter de toutes les capacités de Qodana.

Si vous préférez la version Community, assurez-vous de la définir explicitement dans le fichier qodana.yaml pour éviter les perturbations après votre mise à niveau vers Qodana 2024.1.

Amélioration de l'expérience utilisateur pour le plugin Qodana

  • La coloration syntaxique de Qodana ne duplique plus la mise en évidence de l'EDI. Si un problème du rapport de Qodana est déjà mis en évidence par l'EDI, le plugin Qodana ne tente pas de le mettre en évidence.
  • Lorsque vous corrigez l'un des problèmes répertoriés dans le rapport de Qodana ou ajustez l'extrait de code associé, le plugin Qodana met automatiquement à jour le statut du problème dans le rapport à Fixed (s'il a été corrigé) ou Not found (si l'extrait de code associé a été supprimé).

De cette façon, vous pouvez immédiatement voir quels problèmes du rapport ont été résolus et continuer à travailler sur le reste.


Configuration des murs de qualité par gravité du problème

Vous ne voulez pas faire échouer vos builds en raison de problèmes de faible gravité. Maintenant, vous pouvez ajuster finement les conditions d'échec de build.

Tous les linters sauf Qodana Community pour .NET vous permettent de configurer des murs de qualité distincts pour chaque gravité de problème, et dépasser simplement une limitation de configuration fera échouer le build. Voici un exemple de configuration de gravité dans qodana.yaml :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
failureConditions:
  severityThresholds:
    any: <number> # Total problems
    critical: <number> # Critical and other severities
    high: <number>
    moderate: <number>
    low: <number>
    info: <number>

Paramètre pour un fichier qodana.yaml personnalisé

La version 2024.1 simplifie le processus d'exécution de plusieurs builds Qodana avec différentes configurations sur le même référentiel.

Dans les versions précédentes, les linters Qodana utilisaient un fichier qodana.yaml qui conservait la configuration et définissait le comportement du linter (y compris l'ensemble des inspections qu'il exécute, les dossiers et fichiers à analyser, etc.).

Pour exécuter un job d'intégration continue avec un linter utilisant une configuration différente, vous deviez remplacer le fichier qodana.yaml.

De plus, si vous aviez un monorepo (c'est-à-dire un référentiel dans lequel est stocké le code d'un certain nombre de projets) avec, par exemple, JavaScript, PHP et Python, et que vous exécutiez trois jobs respectifs pour chaque linter, vous auriez peut-être voulu utiliser différents fichiers qodana.yaml, mais dans le passé, vous ne pouviez pas le faire.

À partir de Qodana 2024.1, vous pouvez utiliser n'importe quel nom de fichier et simplement le passer en tant que paramètre. Tous les linters fournissent désormais un paramètre facultatif appelé config qui vous permet de passer n'importe quel fichier en tant que configuration.

Exemples d'utilisation :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
#qodana-cli
qodana scan --config custom.qodana.yaml

#qodana docker
docker run \\
  -v <source-directory>:/data/project \\
  -v <output-directory>:/data/results \\
  jetbrains/qodana-jvm:2024.1 \\
  --config .qodana/license-check.qodana.yaml

Ce sont là quelques-unes des améliorations et nouveautés clés de la nouvelle version de Qodana. Vous pouvez consulter la documentation complète de Qodana 2024.1 pour en savoir plus.

Découvrez et téléchargez Qodana (pour JVM, PHP, Python, JS, GO, .NET, Android)

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