Blog

Exécuter les inspections IntelliJ depuis l'intégration continue

February 15, 2021
Alan Richardson
Mains tapant sur un ordinateur portable avec du code à l'écran et le texte : Maîtrisez le codage sécurisé avec Sensei.

Exécution des inspections IntelliJ depuis l'intégration continue

IntelliJ IDEA propose des fonctionnalités pour améliorer notre code, directement dans l'IDE lors de la saisie, sous forme d'intentions. Ces intentions peuvent être utilisées en mode batch pour inspecter le code à la recherche de modèles dans toute la source, et même étendues à l'analyse en ligne de commande ou intégrées à l'intégration continue. Cet article couvre les fonctionnalités natives d'IntelliJ et leur extension avec des intentions personnalisées créées dans Sensei.

‍

Inspections IntelliJ

La fonctionnalité d'inspections d'IntelliJ gère l'affichage de nombreuses erreurs signalées dynamiquement dans l'IDE lors du codage, par exemple :

  • la détection de classes abstraites pouvant être converties en interfaces,
  • l'identification de champs de classe redondants pouvant être locaux,
  • l'avertissement concernant l'utilisation de méthodes obsolètes,
  • etc.


Ces inspections mettent en évidence le code correspondant dans l'IDE sous forme d'actions d'intention, souvent accompagnées d'une correction rapide (QuickFix).


Inspection Deprecated Api Usage Options


La mise en évidence en temps réel dans l'IDE lorsqu'un code correspond à une inspection nous aide à améliorer notre codage de manière dynamique. Après avoir identifié le problème, l'utilisation des actions d'intention IntelliJ pour corriger rapidement le code permet de renforcer les bonnes pratiques.

Profil d'inspections

Les inspections peuvent être exécutées en mode batch depuis l'IDE, en ligne de commande ou dans un processus d'intégration continue.

La clé pour travailler avec les inspections IntelliJ en mode batch réside dans l'utilisation d'un profil d'inspections.

IntelliJ dispose de deux profils d'inspection par défaut : l'un stocké dans le projet et l'autre dans l'IDE.

De nouveaux profils d'inspection peuvent être créés pour configurer des plugins ou des cas d'utilisation spécifiques, par exemple :

  • Exécuter uniquement l'analyse Checkstyle en temps réel
  • Exécuter un ensemble spécifique de règles Sensei
  • Exécuter les vérifications HTML

Les inspections d'un profil peuvent être activées ou désactivées depuis les préférences d'IntelliJ. La boîte de dialogue des préférences est également un moyen simple de découvrir l'éventail des inspections disponibles.


Inspections Usage Of Api Marked For Removal


L'icône « outil » vous permet de dupliquer un profil et d'en créer un nouveau pour regrouper un ensemble spécifique de règles.


Tool Icon To Duplicate A Profile


Exécution d'un profil d'inspection dans l'IDE

Les profils d'inspection peuvent être exécutés depuis l'IDE via le menu `Analyze \ Inspect Code...`.


Run An Inspection Profile Using The Analyze Or Inspect Code


La fonctionnalité d'analyse vous permet de définir la portée de l'inspection, par exemple sur l'ensemble du projet, en incluant ou en excluant les sources de test, ou sur un ensemble spécifique de fichiers.


Specify Inspection Scope


Vous pouvez également gérer les profils d'inspection à partir d'ici pour créer ou configurer un profil particulier.


En cliquant sur [OK] dans la boîte de dialogue « Specify Inspection Scope », vous lancez l'exécution de toutes les inspections sélectionnées dans le profil sur la portée définie dans IntelliJ.

IntelliJ affichera les résultats de l'exécution des inspections dans l'onglet `Inspection Results`.


IntelliJ Report The Results Of Running The Inspections In Inspection Results Tab


Le plugin Sensei de Secure Code Warrior vous permet de créer des recettes personnalisées de correspondance de code. Sensei s'intègre étroitement à IntelliJ pour rendre l'utilisation de ces recettes aussi naturelle que celle des actions d'intention d'IntelliJ. Cela signifie qu'elles sont chargées dans IntelliJ en tant qu'inspections et peuvent être regroupées, activées ou désactivées via les profils d'inspection. La création d'un profil d'inspection personnalisé, suivie de l'utilisation de la fonctionnalité d'analyse de code, est la méthode recommandée pour exécuter les recettes Sensei en masse sur un projet.



Exécuter un profil d'inspection depuis la ligne de commande

IntelliJ permet d'exécuter des inspections depuis la ligne de commande, comme documenté par JetBrains :

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


J'utilise principalement macOS et je peux lancer une instance d'IntelliJ depuis la ligne de commande avec :

open -na "IntelliJ IDEA CE.app"


Pour faciliter l'exécution, j'ajoute ceci à un script de commande shell.

vi /usr/local/bin/idea


Le contenu du script provient de la documentation officielle fournie par IntelliJ.

#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"



J'ai ensuite rendu ce fichier exécutable pour simplifier le processus d'inspection en ligne de commande.

chmod 755 /usr/local/bin/idea


La documentation officielle d'IntelliJ décrit la forme générale de la commande d'inspection comme suit :

idea inspect <project> <inspection-profile> <output></output></inspection-profile></project>
[<options>]</options>


En pratique, je spécifie les chemins complets et je n'ai besoin d'aucune option :

idea inspect /Users/user/GitHub/sensei-blog-examples /Users/user/GitHub/sensei-blog-examples/.idea/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results

Cette commande exécute toutes les inspections ajoutées au profil `senseiprofile` et génère un rapport dans le dossier `scan-results`.

Computer file explorer showing scan-results folder with multiple XML files and output.json file.


Visualisation des résultats d'inspection

Nous pouvons générer ces rapports dans le cadre d'une intégration continue, comme nous le verrons plus loin.

Nous pouvons également les consulter directement dans IntelliJ via la fonctionnalité `Analyse \ View Offline Inspection Results…`.


Analyze View Offline Inspection Results


Cela chargera les résultats dans l'onglet `Inspection Results`.


Loads Results Into The Inspection Results Tab


La procédure est officiellement documentée sur le site de JetBrains :

- https://www.jetbrains.com/help/idea/command-line-code-inspector.html#inspection-results


Cette méthode peut être utilisée lors d'une revue de code si l'exécution en ligne de commande a été intégrée à un processus d'intégration continue et que les relecteurs souhaitent examiner le contexte source complet des résultats d'inspection.

Profils d'inspection en intégration continue

Lors de l'ajout de l'inspection en ligne de commande à l'intégration continue, l'idéal est de générer un rapport automatiquement ; plusieurs options s'offrent à nous.

TeamCity propose une prise en charge native des profils d'inspection pour l'intégration continue.

- https://www.jetbrains.com/help/teamcity/inspections.html


Le plugin Jenkins Warnings NG prend en charge la sortie en ligne de commande des inspections IntelliJ comme format de rapport.

- https://github.com/jenkinsci/warnings-ng-plugin

- https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md


Des projets communautaires comme `idea CLI Inspector` existent pour permettre l'utilisation des profils d'inspection avec d'autres outils d'intégration continue.

- https://github.com/bentolor/idea-cli-inspector


L'avenir des profils d'inspection dans les processus d'intégration continue s'annonce encore plus prometteur avec l'introduction du projet JetBrains Qodana. Qodana est une version « headless » (sans interface graphique) d'IntelliJ, proposant des actions GitHub et des images Docker officielles.

- https://github.com/JetBrains/Qodana


Qodana est actuellement en version bêta, mais l'équipe Sensei le suit de près afin d'en faire une plateforme officiellement prise en charge pour exécuter les règles Sensei dans le cadre de l'intégration continue.


Résumé

Les actions d'intention nous permettent de renforcer les modèles de codage et de les corriger rapidement dans l'IDE lorsque nous commettons des erreurs lors du développement.

Les profils d'inspection permettent de les regrouper pour les exécuter par lots via l'action Analyser et inspecter le code. Cela s'avère utile si nous identifions un modèle et souhaitons vérifier s'il n'a pas été oublié ailleurs dans notre code.

Les profils d'inspection peuvent être exécutés depuis la ligne de commande et intégrés aux processus d'intégration continue, favorisant un modèle de « confiance, mais vérification » pour détecter tout écart accidentel.

Tout ce qui précède est une fonctionnalité intégrée d'IntelliJ, et JetBrains améliore ses processus d'intégration continue avec l'introduction de Qodana.


Les recettes Sensei sont chargées dans IntelliJ pour agir comme des actions d'intention natives et être regroupées dans des profils d'inspection, permettant une vérification par lots et une intégration continue via la ligne de commande JetBrains.

---


Vous pouvez installer Sensei depuis IntelliJ via « Préférences > Plugins » (Mac) ou « Paramètres > Plugins » (Windows) en recherchant simplement « sensei secure code ».

Si vous souhaitez tester l'exécution d'un projet IntelliJ en ligne de commande, le projet utilisé dans cet article est disponible dans le dépôt `sensei-blog-examples` du compte GitHub de Secure Code Warrior. À vous de jouer : créez un profil pour exécuter uniquement les règles Sensei. Essayez !


https://github.com/securecodewarrior/sensei-blog-examples

En savoir plus sur Sensei


Slogan

Gouvernez le développement assisté par IA avant la mise en production

Évaluez les risques liés à l'IA, appliquez des politiques de codage sécurisé dès le commit et accélérez la livraison sécurisée tout au long de votre cycle de développement.

Réserver une démo
Bibliothèque de ressources

Explorer plus d'articles

Accédez à du contenu expert sur le codage sécurisé, la gouvernance de l'IA et la gestion des risques logiciels.

tout parcourir
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

En savoir plus
Étude de cas
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Une culture de la sécurité : comment Sage a bâti son programme de champions

Découvrez comment Sage a renforcé sa sécurité grâce à une approche flexible axée sur les relations humaines, formant plus de 200 champions de la sécurité et obtenant une réduction mesurable des risques.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Mois de la sensibilisation à la cybersécurité 2026 : comprendre la sécurité de l'IA est essentiel à la défense de l'entreprise

Nous avons atteint un point où la plupart des grandes entreprises d'IA ont publiquement appelé à un ralentissement mondial du développement de l'IA afin de permettre aux garde-fous de sécurité de rattraper leur retard. Pourtant, la réalité est que de graves problèmes de sécurité se sont déjà concrétisés. Cela place d'innombrables responsables de la sécurité et équipes de direction dans une situation d'urgence, alors que les coûts financiers et les risques liés à la mise en œuvre de l'IA ne cessent de s'accumuler.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Levier 8 : Valoriser votre programme

Un programme de codage sécurisé a besoin de plus qu'un contenu de qualité pour réussir. Le levier 8 montre comment l'image de marque transforme la participation en une expérience convoitée, axée sur le statut.

En savoir plus
Blog
Libellé du filtre
Ceci est un texte à l'intérieur d'un bloc div.

Chaque employé est désormais en première ligne de la cybersécurité IA

Le paysage technologique des entreprises évolue à une vitesse que peu avaient anticipée avant qu'il ne soit trop tard. Nous avons officiellement franchi le cap du code écrit par l'humain et de l'assistance basique par copilote pour entrer dans l'ère du cycle de vie de développement agentique (ADLC). Si les agents IA autonomes promettent une efficacité sans précédent dans de multiples fonctions, ils apportent également une toute nouvelle catégorie de risques en matière de sécurité et de réglementation.

En savoir plus

Sécurisez le développement piloté par l'IA avant le déploiement

Identifiez les risques de développement, appliquez vos politiques et prévenez les vulnérabilités tout au long du cycle de vie de vos logiciels.

Réserver une démo
trust score
Aucun élément trouvé.