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.
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 :
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 :
Voici une description des plus importants :
Permettent de dérouler ou de regrouper l'ensemble des anomalies ou erreurs détectées.
Permet de regrouper les anomalies par niveau de sévérité.
Permet d'afficher les paquetages dans l'arborescence.
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 :
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 :
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
.
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.
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 !