• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/12/2021

Effectuez une analyse statique de code

Votre application a un bug. Généralement, vous vous en apercevez lorsqu'elle est en fonctionnement. Pourtant, dans certains cas, vous pouvez corriger des bugs sans avoir à lancer votre application. Cela grâce à l'analyse statique de code. Cette fonctionnalité très puissante est possible grâce à l'outil lint. Celui-ci permet d'analyser le code source de votre application, et vous prévient lorsqu'il rencontre une anomalie ou une erreur potentielle.

Lancez l’outil lint

L'outil lint peut être lancé de différentes façons : en ligne de commande, lors de la compilation de votre application, ou directement depuis Android Studio. Nous allons privilégier cette troisième possibilité, plus accessible.

Pour démarrer l'analyse de code, ouvrez le projet MemeTastic, et ouvrez le fichier MainActivity.java. Dans la barre de menu d'Android Studio, cliquez sur Analyse puis sur Inspect Code.... Une fenêtre s'ouvre, vous permettant de déterminer le périmètre d'analyse.

Capture de la fenêtre
La fenêtre vous permet de définir le périmètre d’analyse

Par défaut, l'outil propose d'analyser le code complet du projet grâce à l’option Whole project dans la section Inspection scope. Dans un gros projet, pour peu que vous n'ayez jamais lancé lint, vous risquez de faire une crise cardiaque en voyant le résultat. Commençons petit : sélectionnez le niveau fichier, en cochant l'option File. L'option est suivie du nom du fichier actuellement ouvert dans Android Studio, normalement MainActivity.java.

Appuyez sur le bouton OK. Une nouvelle fenêtre s'ouvre en bas d'Android Studio, avec le résultat de l'analyse :

Le résultat de l’analyse divisé en 2 zones : 1 : à gauche, la liste des anomalies et erreurs détectées 2 : à droite : la mise à jour et le descriptif de l'erreur
Le résultat de l’analyse divisé en 2 zones

La zone de gauche (1) liste les différentes anomalies ou erreurs détectées. Lorsque vous cliquez sur un élément de la zone de gauche, la zone de droite (2) se met à jour. Elle permet d'afficher le descriptif de l'erreur, ou son endroit précis.

Utilisez lint

La fenêtre de résultat expose différents boutons :

Les 4 boutons de l’outil lint sont entourés et indiqués par un chiffre dans la capture d'écran.
Les 4 boutons de l’outil lint

Voici une description des plus importants :

  1. Permettent de dérouler ou de regrouper l'ensemble des anomalies ou erreurs détectées.

  2. Permet de regrouper les anomalies par niveau de sévérité.

  3. Permet d'afficher les paquetages dans l'arborescence.

  4. Permet de configurer en détail le comportement de lint.

Analysez les résultats

Lorsque vous déroulez une anomalie, vous voyez affichés quatre niveaux différents :

Les 4 niveaux d’analyse s’affichent dans la capture d'écran.
Les 4 niveaux d’analyse s’affichent

Le premier correspond à la famille de l'anomalie. Le deuxième correspond à l'anomalie constatée. Le troisième correspond au nom de la classe dans laquelle a été constatée l'anomalie. Le quatrième correspond à la description précise de l'erreur.

En cliquant sur chaque niveau, la zone de droite se met à jour automatiquement. Ce qui est intéressant, c'est qu'Android Studio vous affiche généralement un bouton pour corriger l'erreur automatiquement. Par exemple, dans l'exemple ci-dessus, Android Studio affiche un bouton intitulé Remove unnecessary 'return'. Il vous suffit de cliquer dessus pour corriger le problème. De la même façon, si une variable peut être déclarée privée, Android Studio affiche un bouton Make field private.

Certaines anomalies sont classifiées Spelling. Il est moins aisé de les corriger, car certaines sont relatives à un nommage de variable bien spécifique. D'autres correspondent par exemple à un token. Dans les deux cas, il n'y a pas de correction à apporter : c'est l'outil qui fait trop de zèle. La solution consiste donc à configurer l'outil pour qu'il ne détecte plus ce genre d'anomalie.

Découvrez la configuration avancée de lint

L'outil lint est extrêmement puissant, riche en fonctionnalités et subtilités. Pour accéder à sa configuration, lorsque vous lancez lint, intéressez-vous à la section Inspection profile. Cliquez sur les trois petits points à droite :

Capture d'écran de la fenêtre Specify Inspection Scope. Le bouton
Le bouton vous permet d’accéder à la configuration avancée de Lint

Une nouvelle fenêtre s'affiche. Commençons par créer un nouveau profil, basé sur l'actuel. Cliquez en haut sur la roue crantée puis Duplicate. Nommez le profil comme vous voulez et appuyez sur  Entrée  .

Une liste déroulante est affichée en-dessous de la roue crantée. L'option Duplicate est sélectionnée.
La fenêtre de création d’un nouveau profil

Ensuite, pour chaque anomalie possible, vous pouvez décider de l'activer ou non, de lui assigner un niveau de sévérité et de décider dans quel contexte elle se déclenche.

Capture d'écran de la fenêtre Inspectrions.  A gauche, l'option Java est sélectionnée dans la liste déroulante. A droite, s'affichent une description et le niveau de sévérité.
Fenêtre de configuration de lint pour chaque anomalie

Allez plus loin

Vous l'avez compris, l'analyse statique de code est un sport à part entière. lint n'est pas le seul outil permettant de le faire. Il en existe bien d'autres : PMD, FindBugs, Infer, checkstyle ou Detekt. Libre à vous de les découvrir en consultant leur page respective !

En résumé

  • Vous pouvez analyser du code de manière statique, sans lancer l’application, grâce à l’outil lint.

  • lint va chercher les anomalies dans le code à différentes échelles (projets, dossiers, fichiers…) et les remonte de manière ordonnée.

  • Android Studio propose, dans la plupart des cas, une solution afin de corriger rapidement et simplement une anomalie remontée. 

Vous venez de terminer la première partie du cours : toutes mes félicitations ! 🥳 Dans la deuxième partie, vous apprendrez à réaliser des tests unitaires. Mais avant, je vous propose de tester vos connaissances avec un quiz !

Exemple de certificat de réussite
Exemple de certificat de réussite