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

32
ANALYSE DE CODE STATIQUE OBJECTIVE-C / SWIFT COCOAHEADS MONTPELLIER - 14 AVRIL 2016

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

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

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

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

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

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

9 ANS DE DÉVELOPPEMENT IOS CHEZ BACKELITE

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

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

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

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

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

CET ÉCART S’APPELLE : LA DETTE TECHNIQUE !

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

LE FLÉAU DE LA DETTE TECHNIQUE

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

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.

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

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 !

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

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

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

MESURER LA DETTE POUR LA MAITRISER

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

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

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

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à !

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

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

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

BACKELITE14 AVRIL 2016

LA MÉTHODE SQALE

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

SONARQUBE AVEC OBJECTIVE-C ET SWIFT

Page 17: Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / 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…)

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

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

Page 19: Cocoaheads Montpellier Meetup : L'analyse de Code Statique avec Objective-C / 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

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

TRAVAILLER AVEC SONARQUBE

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

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.

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

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

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

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

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

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

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

BACKELITE14 AVRIL 2016

SONARQUBE : PLANS D’ACTION

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

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

UN WORKFLOW APPROPRIÉ POUR GARDER LE CONTRÔLE

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

BACKELITE14 AVRIL 2016

SONARQUBE : INTÉGRATION CONTINUE

+ =

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

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

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

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

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

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 !

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

MERCI !des questions ?

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

Gilles Grousset@zippy1978

DES QUESTIONS ?

BACKELITE14 AVRIL 2016