• 30 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 21/05/2021

Effectuez une analyse statique de code

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction

Votre application a un bug. Généralement, vous vous en apercevez lorsque votre application est en fonctionnement. Pourtant, dans certains cas, vous pourriez 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. Il permet d'analyser le code source de votre application, et vous prévient lorsqu'il rencontre une anomalie ou une erreur potentielle.

Lancement de 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 (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.

Utilisation de lint

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

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.

Analyse des 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 unecessary '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.

Configuration avancée

L'outil lint est extrêmement puissant. Un bouquin ne suffirait pas à lister toutes ses 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 Manage puis Copy. 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. Prévoyez 10kg de nourriture et 50L d'eau, car vous allez y passer un bon bout de temps !

Pour aller 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, ou checkstyle. Libre à vous de les découvrir en consultant leur page respective !

Conclusion

Voilà, vous en savez suffisamment pour effectuer une analyse statique de votre code. N'hésitez pas à consulter la page de Google pour en savoir plus. Vous pourriez par exemple intégrer lint dans la chaîne de compilation, afin qu'il soit lancé à chaque fois. Cela vous permettant de corriger les anomalies au plus tôt. Bon courage !

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