Java Kotlin Releases

Qodana 2022.1 est disponible

Read this post in other languages:
English, 한국어, 简体中文

Nous ajoutons régulièrement de nouvelles fonctionnalités à Qodana, notre plateforme de contrôle de la qualité du code, et l’améliorons continuellement. Afin de vous tenir au courant, nous lançons une série d’articles sur ses actualités et évolutions, qui commence avec cet article sur la nouvelle version majeure Qodana 2022.1.

License audit était un linter supplémentaire qui devait être configuré séparément des linters principaux. Il est désormais fourni directement avec Qodana. Nous avons également ajouté plusieurs nouvelles inspections pour les linters PHP et JVM. Poursuivez votre lecture pour en savoir plus !

COMMENCER AVEC QODANA

Audit de licences

Les pénalités légales et de conformité relatives aux licences non valides ou utilisées de manière inappropriée dans votre code peuvent être extrêmement coûteuses. Qodana permet d’analyser les dépendances dans votre référentiel de code pour vérifier les licences et identifier les sources de problèmes potentiels.

La fonctionnalité Licence Audit de Qodana

Cette nouvelle version de Qodana simplifie l’audit de licences de vos projets et l’intègre dans votre pipeline de CI/CD. La nouvelle fonctionnalité License audit est disponible pour tous les linters, notamment pour Python, Java, Kotlin, PHP et JavaScript.
Pour activer License audit, ajoutez les lignes suivantes dans le fichier qodana.yaml à la racine de votre projet :

include:
  - name: CheckDependencyLicenses

Si vous devez ignorer l’une des dépendances de votre projet, ajoutez les lignes suivantes :

dependencyIgnores:
- name: "dependency/name"

Lisez notre documentation pour plus d’informations sur les configurations personnalisées pour License audit et cet article de blog pour découvrir comment cette fonctionnalité permet d’optimiser les routines de travail des développeurs, des responsables et des équipes légales.

Inspections PHP

Cette version de Qodana inclut toutes les nouvelles inspections de PhpStorm 2022.1 et les ajoute à votre pipeline avec nos linters PHP. PhpStorm est fourni avec Qodana, par conséquent, lorsque Qodana vous signale un problème dans votre code, vous pouvez ouvrir la notification directement dans votre IDE et examiner le code concerné.

Duplicate array key

Le comportement de array_merge() et la fusion avec l’opérateur + fonctionnent différemment en PHP. L’opérateur ne remplace pas la valeur si la clé est dupliquée. Comme cela peut être source de confusion et de bugs, Qodana for PHP met désormais ce type de cas en évidence.

Utilisation de count($array) comme index de tableau

Lors de l’ajout d’un élément à un tableau, il n’est pas nécessaire de spécifier explicitement l’index. Qodana for PHP peut vous prévenir en cas d’appel count() redondant.

Remplacer les appels pow() par **

PHP dispose d’un opérateur d’exponentiation ** depuis la version 5.6. Qodana for PHP suggèrera un correctif rapide directement dans PhpStorm (Alt+Entrée) afin de remplacer les anciens appels pow() par l’opérateur **.

Propriétés read-only

Les propriétés privées avec accès en lecture seule dans une classe peuvent être déclarées avec l’indicateur readonly. Qodana for PHP suggérera de mettre à jour la déclaration de propriété.

Constantes de classe finales

Depuis PHP 8.1, il est possible de déclarer les constantes de classes comme finales. C’est pourquoi Qodana for PHP vous avertit des constantes qui ne sont pas héritées et vous suggère de leur ajouter un modificateur final. Avec l’intégration de PhpStorm, vous pouvez basculer rapidement vers l’IDE pour corriger le problème.

Arguments de fonction rand en ordre inversé

Cette inspection met en évidence les appels de fonction appartenant à la famille rand pour lesquels l’argument max peut être inférieur à l’argument min. Par exemple, appeler rand(10, 1) équivaut à appeler rand(1, 10), mais mt_rand() est strict sur l’ordre de ses arguments.

Cible fictive non valide pour PHPUnit

Qodana for PHP vous avertira si vous essayez d’accéder à une méthode privée ou finale sur un objet factice.

Redundant modifier

Cette nouvelle inspection signale les modificateurs qui sont utilisés dans les modèles d’expressions régulières mais n’affectent pas la correspondance :

  • /i (insensibilité à la casse) dans les modèles qui ne contiennent pas de lettres.
  • /D (PCRE_DOLLAR_ENDONLY) dans les modèles qui ne contiennent pas de signe dollar ou qui contiennent le modificateur \m (PCRE_MULTILINE).
  • /s (point correspond aux sauts de ligne) dans les modèles qui ne contiennent pas de points.

Unsupported modifier

Cette inspection signale les utilisations du modificateur /e, qui est obsolète dans les versions PHP 7.0 et plus récentes.

Inspections Java et Kotlin

Cette version ajoute également de nouvelles inspections provenant d’IntelliJ IDEA 2022.1 dans Qodana for JVM. L’intégration avec IntelliJ IDEA permet d’ouvrir le code erroné directement dans l’IDE pour apporter un correctif rapide.

Voyons les inspections les plus significatives.

Suspicious back reference

Qodana for JVM trouve les références qui ne peuvent pas être résolues lors de l’exécution. L’inspection Suspicious back reference vous avertit si la référence arrière ne correspond à aucun texte. Une référence arrière ne peut pas être résolue si le groupe est défini après la référence arrière ou dans une branche différente d’une alternance.

“InputStream” et “OutputStream” peuvent être construits avec des méthodes ‘Files’

Cette inspection signale les constructeurs FileInputStream et FileOutputStream lorsqu’ils peuvent être remplacés par Files.newInputStream() et Files.newOutputStream(), respectivement. Les flux (streams) créés avec les méthodes Files sont généralement plus efficaces que ceux qui sont créés par les constructeurs de flux.

Les appels groupés ‘Files.readAttributes’ peuvent être utilisés à la place de plusieurs appels d’attributs de fichiers

Cette inspection trouve les emplacements où plusieurs vérifications d’attributs java.io.File, telles que isDirectory, isFile, lastModified ou length, sont utilisées à la suite. Ces appels peuvent être remplacés par un appel groupé Files.readAttributes. La méthode groupée est généralement plus performante que les vérifications d’attributs multiples .     

La boucle peut être remplacée par ‘List.replaceAll()’

Cette inspection signale les boucles qui peuvent être réduites à un simple appel List.replaceAll().

Number of placeholders does not match the number of arguments in logging call

Qodana for JVM signale les appels de journalisation (logging) SLF4J ou Log4j 2, tels que logger.info(\"{}: {}\", key), dans lesquels le nombre de placeholders {} dans le message du logger ne correspond pas au nombre d’autres arguments dans l’appel de journalisation.

Regular expressions can be simplified

Cette inspection détecte les expressions régulières qui peuvent être simplifiées.   

Pour exclure certaines inspections de votre analyse, vous pouvez personnaliser votre profil d’inspection par défaut ou en créer un nouveau. Vous pouvez aussi vouloir appliquer les inspections importantes selon vos directives de codage ou les bonnes pratiques. Consultez la documentation de Qodana pour plus d’informations.

Voilà, vous connaissez maintenant toutes les nouveautés de Qodana 2022.1 ! Nous espérons que les prochains articles de cette série vous seront utiles. Si vous avez des suggestions pour de futurs sujets d’articles ou si vous souhaitez en savoir plus sur la façon dont Qodana peut vous aider, vous et votre entreprise, laissez un commentaire ci-dessous, taguez-nous sur Twitter ou écrivez-nous à qodana-support@jetbrains.com.

L’Équipe Qodana

Auteur de l’article original en anglais :

Delphine Massenhove

Anastasia Khramushina