Skip to content

Latest commit

 

History

History
86 lines (59 loc) · 7.17 KB

continuous-inspection.md

File metadata and controls

86 lines (59 loc) · 7.17 KB

Inspection continue

Les contrôles qualité ont pour principal intérêt de pouvoir remonter le plus rapidement possible des informations sur le produit en cours de développement afin de permettre à l’équipe de réagir tout aussi rapidement afin de minimiser les impacts. Un problème découvert trop tard peut avoir des conséquences en termes de budget, de délai ou d’image vis à vis des clients. Le coût peut en effet être multiplié par 5 si le défaut est détecté après la mise en production du produit.

Principes et enjeux

Le but de l'inspection continue, initiée par la société SonarSource SA, est de répondre aux problématiques posées par les revues humaines. Ces revues :

  • ne sont pas assez exhaustives
  • sont subjectives
  • interviennent trop tardivement
  • n'impliquent pas assez les acteurs

L'inspection continue (donc outillée) permet :

  • d'être exécutée régulièrement (lors d'un push sur le SCM par exemple)
  • d'obtenir un feedback très rapide voire immédiat pendant que le code est encore chaud dans les esprits
  • d'impliquer les développeurs dans un cercle vertueux d'apprentissage et d'amélioration continue
  • d'impliquer les développeurs dans un effort commun
  • d'offrir des tableaux de bord et de mesurer l'évolution au fil du temps
  • d'obtenir des mesures sur la base de code complète ainsi que sur le nouveau code (différentiel)
  • d'être objective car basée sur des règles et bonnes ou mauvaises pratiques connues

💡 L'inspection continue est donc à mettre en place dès le début d'un projet, ce qui est très facile avec des outils comme GitLab-CI.

⚠️ Il est également évidemment dangereux de considérer que l'on peut se reposer uniquement sur cette pratique. Il faut bien sur la compléter avec les techniques de revue de code "humaines" : collectives et par des pairs.

Outillage

Nombre d'outils sont disponibles (directement ou non) pour remonter rapidement aux développeurs des indicateurs sur la qualité du code produit :

  • Les remontées d'informations directement dans l'IDE (soit nativement soit via des plugins type SonarLint ou FindBugs).
  • Les contrôles de compilation et de succès des tests lors d'un push (via Jenkins, GitLab CI, ...).
  • Les contrôles outillés quotidiens via SonarQube (qui ajoutent en plus un suivi temporel grâce aux Dashboards).
  • Les analyses via des outils d'APM : l’Application Performance Monitoring suit les transactions de bout en bout permettant la remontée d'informations et de métriques de toutes sortes.

Les outils SonarQube et SonarLint

SonarQube

SonarQube (anciennement sonar et à ne pas confondre avec SonarJ) édité par la société SonarSource SA est le standard du marché dans le domaine de l'analyse de la qualité du code d'une application et supporte plus d'une vingtaine de langages. SonarQube définit 3 catégories de violations :

  • Bugs : Bug avéré ou du code manifestement erroné ou très susceptible de générer un comportement inattendu.
  • Vulnérabilités : provenant de code potentiellement vulnérable à l'exploitation par les pirates.
  • Mauvaises pratiques (Code Smells) : provenant de code qui va dégrader la maintenabilité, la robustesse ou la performance. Elles sont mesurées et affichées principalement en termes de temps qu'elles prendront pour être corriger.

SonarQube définit également pour chaque anomalie relevée un niveau de criticité parmi 5, du plus au moins important :

  • Bloquant (blocker) : anomalie à corriger immédiatement.
  • Critique (critical) : anomalie à corriger rapidement.
  • Majeur (major) : anomalie à étudier, une correction planifiée est souhaitable.
  • Mineur (minor) : anomalie à prendre en compte si possible (souvent facile à corriger).
  • Informatif (info) : anomalie à prendre en compte si possible (souvent facile à corriger).

Enfin l'outil peut même amender automatiquement les merge request (via un plugin), les violations étant visibles dès lors directement dans GitLab.

SonarLint

SonarLint du même éditeur est un plugin disponible pour différents IDE (Eclipse, IntelliJ IDEA, VS Code, ...) permettant d'avoir un retour immédiat (Fix issues before they exist) lors de l'écriture du code (donc avant le commit) sans devoir attendre de lancer une analyse SonarQube.

⚠️ Comme tout outil, ils peuvent produire des faux-positifs, il conviendra d'analyser les rapports et anomalies relevées avec un esprit critique et ne pas se jeter forcément sur tout. Dans le doute vous pouvez solliciter les équipes support.

Tableau comparatif

Quelques outils utilisables pour de l'inspection continue "au poste" (feedback immédiat) ou automatisée (feedback asynchrone) :

Langage Objectif Feedback immédiat dans l'IDE Feedback asynchrone via l'inspection continue
Java Mesurer la qualité du code source SonarLint (Eclipse, IntelliJ, VS Code) SonarQube
Java Déterminer la couverture de code par les tests EclEmma (Eclipse), Run with Coverage (IntelliJ) JaCoco, Cobertura
Java Analyser les vulnérabilités dans les dépendances tierce partie Snyk Vulnerabilities Scanning (IntelliJ) Snyk CLI
Java Analyser les vulnérabilités dans les dépendances tierce partie OWASP Dependency Check OWASP Dependency Track
Shell Analyse statique de code script shell ShellCheck (extension VS Code) ShellCheck + SonarQube
JavaScript Analyser les vulnérabilités dans les dépendances tierce partie Snyk CLI Snyk CLI
JavaScript Analyse statique de code JavaScript JSHint (+ extension VS Code) SonarQube
TypeScript Analyse statique de code TypeScript TSLint (+ extension VS Code) ?

Ressources


👈 Retour à l'accueil