Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / SWIFT

Post on 13-Apr-2017

472 views 1 download

Transcript of Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / SWIFT

ANALYSE DE CODE STATIQUE OBJECTIVE-C / SWIFTCOCOAHEADS MONTPELLIER - 14 AVRIL 2016

BACKELITE

SOMMAIRE

9 ans de développement iOS chez BackeliteLe fléau de la dette techniqueMesurer la dette pour la maitriserSonarQube avec Objective-C et SwiftTravailler avec SonarQubeUn workflow approprié pour garder le contrôle

14 AVRIL 2016

9 ANS DE DÉVELOPPEMENT IOS CHEZ BACKELITE

BACKELITE14 AVRIL 2016

DES APPLICATIONS MOBILES DE PLUS EN PLUS COMPLEXES

2007 2008 2009 2010 2011 2012 2013 2014 2015 20160

75

150

225

300

375

Jours de développement

BACKELITE14 AVRIL 2016

DES TEMPS DE DÉVELOPPEMENT DE PLUS EN PLUS LONG AU FIL DES VERSIONS

V1 V2 V3 V440

50

60

70

80

90

JH Théoriques JH Constatés

CET ÉCART S’APPELLE : LA DETTE TECHNIQUE !

LE FLÉAU DE LA DETTE TECHNIQUE

BACKELITE14 AVRIL 2016

LA DETTE TECHNIQUE

Wikipédia :

La dette technique est une métaphore du développement logiciel inventée par Ward Cunningham.

Il s'inspire du concept existant de dette dans le contexte du financement des entreprises et l'applique au domaine du développement logiciel.

BACKELITE14 AVRIL 2016

D’OÙ PROVIENT LA DETTE TECHNIQUE ?

Causes non intentionnellesMauvaise conception d’une applicationNon respect des bonnes pratiques de codage

Causes Intentionnelles« Quick wins » pour livrer un projet dans les temps

Cela vous parle ?Logique : nous sommes tous des pollueurs de code !

BACKELITE14 AVRIL 2016

LA DETTE TECHNIQUE : UN PHÉNOMÈNE PLANÉTAIRE !

La dette technique mondiale était estimée à 1 trillion de dollars en 2015 par Gartner

source : http://www.gartner.com/newsroom/id/1439513

MESURER LA DETTE POUR LA MAITRISER

BACKELITE14 AVRIL 2016

MESURER LA DETTE TECHNIQUE

Si vous ne pouvez pas le mesurer, vous

ne pouvez pas l'améliorer

William Thomson (Lord Kelvin)1824–1907

BACKELITE

COMMENT MESURER LA DETTE TECHNIQUE ?

14 AVRIL 2016

Il est possible d’inventer sa propre méthode de mesure…

Ou mieux : en utiliser une qui existe déjà !

BACKELITE14 AVRIL 2016

LA MÉTHODE SQALE (SOFTWARE QUALITY ASSESSMENT BASED ON LIFECYCLE EXPECTATIONS)

Mesure l’écart entre le standard (la qualité attendue) et la réalité à l’aide de règles.

Le modèle d’analyse permet d’obtenir le cout des mesures correctives pour les index suivants :

Testability Reliability Changeability Efficiency

Security Maintainability Portability Reusability

BACKELITE14 AVRIL 2016

LA MÉTHODE SQALE

SONARQUBE AVEC OBJECTIVE-C ET SWIFT

BACKELITE14 AVRIL 2016

SONARQUBE (ANCIENNEMENT SONAR)

Plateforme open source d’inspection de qualité de code en continue.• La référence !• Composé d’un module serveur et d’un « runner »• Extensible par mécanisme de plugin (ajout de languages, de sensors, de widgets

graphiques…)

BACKELITE14 AVRIL 2016

SONARQUBE : SUPPORT D’OBJECTIVE-C ET SWIFT

2014

Support Objective-C commercial

(5000$)

Support Objective-C open source

cassé

Pas de support de Swift

Contributions au plugin open source

pour le mettre à niveau

Création d’un fork pour ajouter de

nouvelles fonctionnalités

Sortie d’un plugin Swift commercial

2016

Fork indépendant du plugin

Objective-C

Réalisation d’un plugin pour le

support de Swift

BACKELITE14 AVRIL 2016

SONARQUBE : FONCTIONNALITÉS DES PLUGINS BACKELITE

Objective-Chttps://github.com/Backelite/sonar-objective-cAnalyse des défauts (OCLint et Faux Pas, 170 règles) Données de testCouverture de code (y compris Xcode 7+)ComplexitéSQALE

Swifthttps://github.com/Backelite/sonar-swiftAnalyse des défauts (SwiftLint, 32 règles) Données de testCouverture de codeComplexitéSQALE

TRAVAILLER AVEC SONARQUBE

BACKELITE14 AVRIL 2016

SONARQUBE : PROFILS DE QUALITÉ

Les profils de qualité permettent d’activer /désactiver ou changer la sévérité des règles par language.

BACKELITE14 AVRIL 2016

SONARQUBE : NOTATION SQALE

Objective-Chttps://github.com/Backelite/sonar-objective-cAnalyse des défauts (OCLint et Faux Pas, 170 règles) Données de testCouverture de code (y compris Xcode 7+)ComplexitéSQALE

La méthode SQALE est utilisée pour calculer la dette

technique. Des widgets permettent de visualiser la

dette et la pyramide de la dette

BACKELITE14 AVRIL 2016

SONARQUBE : QUALITY GATES

Les quality gates permettent de définir des seuils de tolérances

(warning, error) sur les différentes métriques d’un projet

BACKELITE14 AVRIL 2016

SONARQUBE : NOTIFICATIONS

Les notifications permettent de vous informer des nouveaux défauts que vous avez engendré en vous envoyant un mail à la fin d’une analyse

BACKELITE14 AVRIL 2016

SONARQUBE : PLANS D’ACTION

Les plans d’actions permettent de structurer les phases de nettoyage du code

UN WORKFLOW APPROPRIÉ POUR GARDER LE CONTRÔLE

BACKELITE14 AVRIL 2016

SONARQUBE : INTÉGRATION CONTINUE

+ =

BACKELITE14 AVRIL 2016

QUAND CONTRÔLER LES DÉFAUTS DE SON CODE ?

git push de fin

de journée

analyse nocturn

e

notification des

défauts par mail

correction des

défauts

implémentation de nouvelles fonctionnalités

BACKELITE14 AVRIL 2016

COMMENT TRAITER LES DÉFAUTS DANS SONARQUBE ?

Le navigateur de code de SonarQube permet de facilement repérer ses défauts et les marquer en résolus ou faux positifs

BACKELITE14 AVRIL 2016

ET SURTOUT NE PAS OUBLIER…

…que tous les outils du monde ne remplacent pas une bonne revue de code de temps en temps !

MERCI !des questions ?

Gilles Grousset@zippy1978

DES QUESTIONS ?

BACKELITE14 AVRIL 2016