Développement Swift / iOS : Améliorer la qualité de son code grâce à SwiftLint

La qualité du code est actuellement LE sujet dans le monde du dev (et avec raison !). Si vous êtes développeur.se pro et passionné.e, vous n’êtes sans doute pas passé à coté !

Donc, si le TDD est votre religion, que vos tests unitaires sont nickels et couvrent 100% du code, qu’Xcode ne retourne plus un seul warning, et que Sonarqube est devenu votre meilleur ami… Et bien vous pouvez encore vous améliorer, grâce à SwiftLint !

Si Sonarqube fera l’objet d’un autre article de blog, je vais aujourd’hui vous parler de SwiftLint.

SwiftLint, c’est un outil créée et maintenu par Realm pour améliorer le respect des conventions d’écritures en Swift, disponible ici : https://github.com/realm/SwiftLint

Comme souvent, il y a plusieurs manières de l’intégrer dans un projet, personnellement, j’aime bien Cocoapods !

Comme code d’exemple, je vais reprendre la démo « InfoKayak », mise à jour pour Swift 5.

Sans SwiftLint, Xcode 11.3 ne trouve rien à redire au code (pas de warning, pas d’erreur) :

Editez maintenant le fichier Podfile en y ajoutant la ligne :  » pod ‘SwiftLint’  » :

Mettez à jour et installer les pods, puis rouvrez le projet avec Xcode. Pour le moment, il n’y a pas de changements 🙂

En fait, pour activer SwiftLint, il faut un petit script. Dans les « Build Phases » du projet, cliquez sur le « + » , ajoutez une « New run script phase », et mettez-y ce script :

On Build et Oh ! 286 warnings et 22 erreurs 😦 WTF ?

Allez, avant de faire un burn out, une bonne nouvelle, SwiftLint est capable de corriger automatiquement une grosse partie de ces problèmes 🙂 .

Pour cela, depuis un terminal, mettez vous dans le dossier de votre projet, et exécutez la commande « ./Pods/SwiftLint/swiftlint autocorrect« .

Ensuite, effacez le dossier de build d’Xcode, et au besoin, relancez l’IDE. Normalement, la situation devrait s’être grandement améliorée : il n’y a plus que 2 erreurs et 5 warnings à corriger manuellement, chose que je fais immédiatement… 😉

Dans certaines situations, on ne peux pas corriger (cas de librairie externes lesquelles nous n’avons pas la main…), il est donc possible de paramétrer SwiftLint plus finement.

Pour tout ce qui est règles globales, il faut créer un fichier .swiftlint à la racine de votre projet. Par exemple, le mien contient ceci :

Lorsqu’il s’agit d’un besoin temporaire, on peut désactiver une règle directement dans le code avec l’instruction // swiftlint:disable <rule> . La liste des règles se trouve ici : https://realm.github.io/SwiftLint/rule-directory.html

Voilà, j’espère que cette petite introduction vous aura donné envie de vous mettre à Swiftlint et à vous mettre à la qualité ! En tous cas moi, je suis accro !

Nouvelle mise à jour de l’application mobile Kayak Tracker !

Toujours ravie de satisfaire les demandes des utilisateurs.rices, j’ai rajouté quelques fonctions dans l’application Kayak Tracker.

Vous pouvez maintenant exporter vos tracks soit d’application à application (via un email), soit dans Google Earth !

Voici la vidéo explicative :

Parmi les autres nouveautés / améliorations, il y a également de nouveaux fonds de carte (vue satellite, vue mixte) et une amélioration des traductions !

Comme d’habitude, l’application est à télécharger sur l’app store :

Et bonnes balades !

Tutoriel Swift : formatage de numéros de téléphones avec PhoneNumberKit

PhoneNumConverterExample

Dans le cadre de mon activité de freelance, j’ai récemment dû répondre à une offre dans laquelle il était demandé :

 

– De créer un champ texte intégrant un numéro de téléphone

 

– Ce champ texte devra formater le numéro de téléphone pour avoir le même affichage que dans l’appli « Contacts » d’Apple.

 

– Le formatage doit se faire dans les normes locales de chaque pays.

 

– Puis le numéro de téléphone doit, toujours en fonction de la localisation, être converti à la norme E164.

 

– L’utilisation de frameworks externes est autorisée.

 

– Forcément, il faut réaliser tout cela pour moins de 5 euros et en 5 mn 😦 …

 

Comme j’ai trouvé le challenge intéressant (et avec l’espoir de facturer à un tarif un peu plus décent…), je me suis penché sur la question.

La première option qui m’est venue à l’esprit est de partir d’une « page blanche », et de tout coder. Après tout, filtrer et formater des entrées utilisateur n’est pas bien compliqué.

Oui mais pour que cela fonctionne pour tous les pays, cela devient nettement plus gourmand en temps et en neurones…

C’est ainsi que j’ai découvert le génialissime framewok « PhoneNumberKit« 

Lire la suite

Tutoriel Swift : des animations faciles avec Lottie !

IphoneX Lottie Snowman

Je ne sais pas si vous vous êtres déjà frotté à la programmation d’animations pour iOS ou mac OS, mais moi je trouve cela passablement compliqué et rébarbatif !

Heureusement, Airbnb à eu la bonne idée de mettre à notre disposition le framework Lottie !

Il s’agit ni plus ni moins que d’une méthode simple pour importer directement un fichier d’animation créé avec Adobe After Effects dans notre application Swift !

Comment ? Voyons cela…

Lire la suite

Tutoriel Swift : mise à jour Firebase 5

Firebase 5

Google à récemment mis à jour son API pour l’utilisation de Firebase… et a cassé la compatibilité avec les anciennes versions… (:

Pas grave, c’est l’occasion de faire une petite update de l’application mobile Mes Animaux et Moi !

Cet article n’est pas un tutoriel à proprement parler, mais plutôt un mémo pour vous montrer les changements nécessaires à la partie du code s’occupant de l’enregistrement des données et des photos.

Voici donc l’ancien code :

firebase4-Storage

et le nouveau :

firebase 5-Storage.png

Les changements se situent au niveau de la méthode « storageRef« .

Attention, je précise (à toutes fins utiles…) qu’il s’agit d’extraits de code, donc vous pouvez vous en inspirer mais pas les utiliser tels quels !